Assuming that the purpose is the puzzle, not programming (unclear, since presumably your wife had to write a program to generate the puzzle text), I would recommend shipping a script with a framework that defines a bunch of solve01, solve02, etc. functions that it calls when you run the script. This framework would load the text, call pass the text to solve01, compute the checksum and if it passes, call solve02 with the result, etc. (And if it fails, stop and report that problem 1 has not been correctly solved yet.) You probably want to provide a much simpler, solved tutorial that introduces loops, arrays, newlines, etc.
This seems like it might be a good way to introduce kids to programming, especially with a framework that holds their hands for things like reading the file for the source text, but which is examinable to see how it works (especially with liberal commenting). You could also provide an inverse, generating framework so that they could write their own puzzles.
I would recommend some usability improvements:
- ship the cyphertext as its own file; this makes it much more reliable for the user to correctly extract the text (because they don't have to). At least give a checksum for the source text.
- non-programmers will need to know that the text must be treated as list of characters, including space, newline, punctuation, etc. (At least, I assume that is required)
- a tutorial program that solves the original boustrophedon-line diary. Personally I think that Python is a better language for a complete beginner than Ruby; it is about as close to running pseudocode as you can get.