(I thought about what the job would mean and it's too long since I studied, I just don't have the math self confidence to go halfway around the planet for a job. To do the green card dance etc, I'd need to feel confident about job fit.)
Edit: Too late, will sleep now. I'll try to remember and check this if you answer, when I wake up.
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. :-)