Day 1 wasn’t so bad, depending on approach. People got tripped up hard with replacing strings because of the old “twone.” If you didn’t happen to do string replacements it wasn’t so bad.
Day 3 absolutely wrecked me though - and my overall rank was still pretty significantly better than it had been on days 1 and 2.
Not only replacing didn’t work. I did it as a regex, but Rusts regex crate only supports non-overlapping matches.
Python’s
re
also only supports non-overlapping matches and only one direction, so what I did wasspoiler
I looked for the first digit/word using the regex. Then for the last digit/word, I inverted the string and the regex (so I was matching the words eno, owt, eerht, etc.) and took the first occurence, and inverted that in case it was a word, and then I had my last digit. I just had to pay attention to only include the
|\d
after inverting the regex, sinced\|
is not right.There are probably more elegant ways, but I couldn’t come up with anything as simple as this.
Oh, nice.
I just replaced those compounded words with their non-overlapping counterparts.