Less than 40 lines total for the subproblems, including white space. Less than an hour (if you don't count checking email in the middle).
Would have been slightly faster if I had thought less and brute forced a bit more. A crazy old friend used to say "Don't underestimate brute force and ignorance"! :-)
I had about the same LoC for my ruby solution. Time was way longer because I had to read at least three wikipedia articles on various aspects of modulo arithmetic after I was so ashamed of my brute force solutions.
Wonder if anyone tried frequency analysis since that should work well on an affine transform...
I though about a more elegant approach and then just brute-forced it too when I realized a brute-force solution wasn't really very expensive. cloc shows 7 lines of perl code for my part 1 solution and 22 lines for part two.
[edit] time for my part 1 solution was 7.8 seconds on an old Dell 2650
Totally different number of lines. Also Perl. 24 lines part 1 (OK, with some diagnosis printing) and 15 for part 2. (That includes use strict;/use warnings; and a few empty lines for both.)
For part 1, with 'time' got real 0m2.865s, user 0m2.780s on a T60 Lenovo/"IBM". I used a few minutes to think about the brute force, which probably saved me half the execution time.
In pure percentage of loss/earn, those minutes for three seconds was probably the worst business of my life... :-) You can take the C/C++ compiler from the old nerd, but you can't stop him from doing premature optimization. :-)