day 3 solved
This commit is contained in:
parent
4070e7e937
commit
e6ad640104
2 changed files with 43 additions and 22 deletions
|
|
@ -2,18 +2,23 @@
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Lets begin, day 2, part 1");
|
println!("Lets begin, day 2, both parts!");
|
||||||
// let file_path = "src/input.txt";
|
let file_path = "src/input.txt";
|
||||||
let file_path = "src/example.txt";
|
// let file_path = "src/example.txt";
|
||||||
|
|
||||||
let mut total_joltage = 0;
|
let mut total_joltage = 0;
|
||||||
|
let mut count = 0;
|
||||||
for line in fs::read_to_string(file_path).unwrap().lines() {
|
for line in fs::read_to_string(file_path).unwrap().lines() {
|
||||||
total_joltage += find_highest_joltage(line);
|
// total_joltage += _find_highest_joltage(line);
|
||||||
|
count += 1;
|
||||||
|
print!("checking bank {count}... ");
|
||||||
|
total_joltage += _find_highest_joltage_part2(line);
|
||||||
|
|
||||||
}
|
}
|
||||||
println!("The total joltage is: {total_joltage}")
|
println!("The total joltage of all {count:?} banks is: {total_joltage}")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_highest_joltage(line : &str) -> u32{
|
fn _find_highest_joltage(line : &str) -> u32{
|
||||||
// comb through to find the highest 2 numbres without breaking ordering
|
// comb through to find the highest 2 numbres without breaking ordering
|
||||||
let mut highest_joltage = 0;
|
let mut highest_joltage = 0;
|
||||||
let line_size = line.chars().count();
|
let line_size = line.chars().count();
|
||||||
|
|
@ -39,24 +44,40 @@ fn find_highest_joltage(line : &str) -> u32{
|
||||||
return highest_joltage;
|
return highest_joltage;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn find_highest_joltage_recursive(line : &str, start : u32, end : u32, levels : u32) -> u32{
|
|
||||||
// for i in start+1..end{
|
|
||||||
|
|
||||||
// }
|
fn _find_highest_joltage_part2(line : &str) -> u64{
|
||||||
|
// should return the highest battery vlaue found in the bank
|
||||||
// return 1;
|
let mut joltage_string:String = "".to_owned();
|
||||||
// }
|
|
||||||
|
|
||||||
|
// "take earliest index of highest possible digit until a valid solution is found"
|
||||||
fn get_biggest_digit(line : &str, start : usize) -> u32{
|
// need to keep track of last possible index selectable, start index is last one taken
|
||||||
let mut biggest = 0;
|
let mut start_index = 0;
|
||||||
|
// let mut end_buffer = 11;
|
||||||
let line_size = line.chars().count();
|
let line_size = line.chars().count();
|
||||||
|
|
||||||
for i in start..line_size{
|
|
||||||
if line.chars().nth(i).unwrap().to_digit(10).unwrap() > biggest{
|
for i in 0..12{ // for each character in the joltage string
|
||||||
biggest = line.chars().nth(i).unwrap().to_digit(10).unwrap();
|
let mut biggest = 0;
|
||||||
|
let mut biggest_index = 0;
|
||||||
|
let mut view_search : String = "".to_owned();
|
||||||
|
for x in start_index..line_size-(11-i){ //take earliest index of highest possible digit
|
||||||
|
view_search += &line.chars().nth(x).unwrap().to_string();
|
||||||
|
if line.chars().nth(x).unwrap().to_digit(10).unwrap() > biggest{
|
||||||
|
biggest = line.chars().nth(x).unwrap().to_digit(10).unwrap();
|
||||||
|
biggest_index = x+1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// println!("debug view - {view_search}");
|
||||||
|
joltage_string += &biggest.to_string();
|
||||||
|
start_index = biggest_index;
|
||||||
|
// end_buffer -= 1;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return biggest;
|
|
||||||
|
// println!("{joltage_string}");
|
||||||
|
let joltage = joltage_string.parse::<u64>().unwrap();
|
||||||
|
println!("This banks best joltage is: {joltage:?}");
|
||||||
|
return joltage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ This year I'll be trying to do it in Rust
|
||||||
### 2026 Calendar
|
### 2026 Calendar
|
||||||
```
|
```
|
||||||
1 2 3 4 5 6
|
1 2 3 4 5 6
|
||||||
[**] [**] [ ] [ ] [ ] [ ]
|
[**] [**] [**] [ ] [ ] [ ]
|
||||||
|
|
||||||
7 8 9 10 11 12
|
7 8 9 10 11 12
|
||||||
[ ] [ ] [ ] [ ] [ ] [ ]
|
[ ] [ ] [ ] [ ] [ ] [ ]
|
||||||
|
|
||||||
~~ < 4/24 Stars Collected > ~~
|
~~ < 6/24 Stars Collected > ~~
|
||||||
```
|
```
|
||||||
Loading…
Add table
Add a link
Reference in a new issue