2015 day 10
This commit is contained in:
parent
d81a9006cd
commit
4beec9475d
36
2015/src/bin/day10.rs
Normal file
36
2015/src/bin/day10.rs
Normal file
|
@ -0,0 +1,36 @@
|
|||
use aoc::input;
|
||||
|
||||
fn main() {
|
||||
let mut v = input::read_chars();
|
||||
|
||||
// Part 1
|
||||
for _ in 0..40 {
|
||||
v = step(&v);
|
||||
}
|
||||
println!("Length after 40 steps: {}", v.len());
|
||||
|
||||
// Part 2
|
||||
for _ in 0..10 {
|
||||
v = step(&v);
|
||||
}
|
||||
println!("Length after 50 steps: {}", v.len());
|
||||
}
|
||||
|
||||
fn step(s: &str) -> String {
|
||||
let mut count = 1;
|
||||
let mut pc = ' ';
|
||||
let mut result = String::new();
|
||||
for c in s.chars() {
|
||||
if c == pc {
|
||||
count += 1;
|
||||
} else if pc != ' ' {
|
||||
result.push_str(&count.to_string());
|
||||
result.push(pc);
|
||||
count = 1;
|
||||
}
|
||||
pc = c;
|
||||
}
|
||||
result.push_str(&count.to_string());
|
||||
result.push(pc);
|
||||
result
|
||||
}
|
Loading…
Reference in a new issue