## --- Day 10: Elves Look, Elves Say ---

Today, the Elves are playing a game called look-and-say. They take turns making sequences by reading aloud the previous sequence and using that reading as the next sequence. For example, `211`

is read as "one two, two ones", which becomes `1221`

(`1`

`2`

, `2`

`1`

s).

Look-and-say sequences are generated iteratively, using the previous value as input for the next step. For each step, take the previous value, and replace each run of digits (like `111`

) with the number of digits (`3`

) followed by the digit itself (`1`

).

For example:

`1`

becomes `11`

(`1`

copy of digit `1`

).
`11`

becomes `21`

(`2`

copies of digit `1`

).
`21`

becomes `1211`

(one `2`

followed by one `1`

).
`1211`

becomes `111221`

(one `1`

, one `2`

, and two `1`

s).
`111221`

becomes `312211`

(three `1`

s, two `2`

s, and one `1`

).

Starting with the digits in your puzzle input, apply this process 40 times. What is *the length of the result*?

## --- Part Two ---

Neat, right? You might also enjoy hearing John Conway talking about this sequence (that's Conway of *Conway's Game of Life* fame).

Now, starting again with the digits in your puzzle input, apply this process *50* times. What is *the length of the new result*?

## Rust Solution

```
use rustgym_util::*;
use std::fmt::Write;
use std::io::*;
pub fn solve(reader: &mut dyn BufRead, writer: &mut dyn Write) {
let mut it = reader.lines().map(|l| l.unwrap());
let mut s = it.next().unwrap();
let mut res1 = 0;
for i in 0..50 {
s = look_and_say(s);
if i == 39 {
res1 = s.len();
}
}
let res2 = s.len();
writeln!(writer, "{}", res1).unwrap();
writeln!(writer, "{}", res2).unwrap();
}
fn look_and_say(s: String) -> String {
let mut it = s.chars().peekable();
let mut res = "".to_string();
while let Some(c) = it.next() {
let mut count = 1;
while let Some(&next_c) = it.peek() {
if next_c == c {
it.next();
count += 1;
} else {
break;
}
}
res += &format!("{}{}", count, c);
}
res
}
advent_of_code_ignore!(test, "input.txt", "output.txt");
```

Having problems with this solution? Click here to submit an issue on github.