[HN Gopher] Show HN: Dimity Jones in Puzzle Castle: An Electroni...
       ___________________________________________________________________
        
       Show HN: Dimity Jones in Puzzle Castle: An Electronic Escape Novel
        
       _Dimity Jones In Puzzle Castle: An Electronic Escape Novel in
       Eighty-Nine Ciphertexts_ is a (mostly) fictional story, contained
       in a single text file, that requires the reader to solve puzzles as
       they go along, and to use each chapter's solution as a key to
       decipher the next.  Think: escape room in the form of a novel.  A
       computer, and rudimentary coding skills in a language of your
       choice, will be indispensable for performing the transformations --
       and might help with the solving too!  My wife, the author, passed
       away five years ago. This is not the last thing she wrote, but it
       is the most unusual, unapproachable, and personal of her major
       works. It is also, as the only novel of hers that I cannot breeze
       through in an afternoon (and despite my unflattering appearance in
       it), my favorite.  Though _Dimity Jones_ was left unfinished, and
       perhaps abandoned, at the time of my wife's death, its elements
       were all there, on her hard disk, awaiting only a final compiling.
       My contribution to this text has therefore been little more than
       that of an occasional copyeditor (my wife was a meticulous speller
       and self-proofreader) and playtester.  Before releasing this work
       more widely, I would love to have it test-driven by better coders
       and puzzlers than I.  Any and all feedback is welcome, from
       positive to negative, from the sweeping to the picayune. Let me
       know what confuses or frustrates you -- and especially let me know
       if (where) you get stuck.  Otherwise, there are no special
       instructions; it's all in the book.  While _Dimity Jones_ is still
       in its debugging/proofreading phase, please refrain from sharing it
       or putting it any (other) public place. (Christine would have been
       horrified to see her work thus published before it was letter-
       perfect; but I have exhausted my pool of friends and colleagues
       both able and willing to tinker with it. This seems like the ideal
       community of potential testers.)  Thanking you in advance. I hope
       you enjoy!
        
       Author : larryboyko
       Score  : 68 points
       Date   : 2024-04-08 18:47 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | pard68 wrote:
       | Neat, I'll take a look. You should consider opening the issue or
       | discussion board if you want feedback.
        
         | larryboyko wrote:
         | Thanks for the suggestion.
         | 
         | I started a catch-all discussion on the github page.
        
       | BtM909 wrote:
       | Sorry to hear about your wife. This looks interesting.
       | 
       | I find this quote a bit funny: > While Dimity Jones is still in
       | its debugging/proofreading phase, please refrain from sharing it
       | more widely or putting it any (other) public place.
       | 
       | If this is picked up here on Hackernews, be ready hehe.
        
       | yubiox wrote:
       | What am I doing wrong here? echo "To begin with, for example, and
       | to make sure your SHA-256 hash function is working, the hash
       | value or checksum of this sentence, from capital 'T' to
       | concluding colon, expressed in hexadecimal, is:" | sha256sum
       | 
       | 95f5ed58505e08180eaa94f4eb13a0d2003cfe042116fa1767c2189491c36871
       | which is not
       | 
       | 10c0c7d9b0222a5a61601337105f1cbb7b1723b991404b870537095d1174f2b2
        
         | jammaloo wrote:
         | Add the -n flag to echo
         | 
         | echo -n "To begin with, for example, and to make sure your
         | SHA-256 hash function is working, the hash value or checksum of
         | this sentence, from capital 'T' to concluding colon, expressed
         | in hexadecimal, is:" | sha256sum
         | 
         | Echo is automatically adding a newline
        
           | umvi wrote:
           | Editors like vi also add automatically add newlines to the
           | end. You can check with hexdump if you have a newline or not:
           | $ echo "To begin with, for example, and to make sure your
           | SHA-256 hash function is working, the hash value or checksum
           | of this sentence, from capital 'T' to concluding colon,
           | expressed in hexadecimal, is:" | hexdump -C         00000000
           | 54 6f 20 62 65 67 69 6e  20 77 69 74 68 2c 20 66  |To begin
           | with, f|         00000010  6f 72 20 65 78 61 6d 70  6c 65 2c
           | 20 61 6e 64 20  |or example, and |         00000020  74 6f 20
           | 6d 61 6b 65 20  73 75 72 65 20 79 6f 75  |to make sure you|
           | 00000030  72 20 53 48 41 2d 32 35  36 20 68 61 73 68 20 66
           | |r SHA-256 hash f|         00000040  75 6e 63 74 69 6f 6e 20
           | 69 73 20 77 6f 72 6b 69  |unction is worki|         00000050
           | 6e 67 2c 20 74 68 65 20  68 61 73 68 20 76 61 6c  |ng, the
           | hash val|         00000060  75 65 20 6f 72 20 63 68  65 63 6b
           | 73 75 6d 20 6f  |ue or checksum o|         00000070  66 20 74
           | 68 69 73 20 73  65 6e 74 65 6e 63 65 2c  |f this sentence,|
           | 00000080  20 66 72 6f 6d 20 63 61  70 69 74 61 6c 20 27 54  |
           | from capital 'T|         00000090  27 20 74 6f 20 63 6f 6e
           | 63 6c 75 64 69 6e 67 20  |' to concluding |         000000a0
           | 63 6f 6c 6f 6e 2c 20 65  78 70 72 65 73 73 65 64  |colon,
           | expressed|         000000b0  20 69 6e 20 68 65 78 61  64 65
           | 63 69 6d 61 6c 2c  | in hexadecimal,|         000000c0  20 69
           | 73 3a 0a                                    | is:.|
           | 000000c5
           | 
           | If the string or file ends in `0a` you have a newline
        
         | why_at wrote:
         | To add to this, I solved the first puzzle but I'm not getting
         | the right sha256sum for the answer. It's unclear to me which
         | part of the deciphered text I should be doing the checksum on.
         | 
         | The text says: "here are the checksums for all the solutions to
         | the eighty-nine puzzles", is the solution only the newly
         | readable part, or the whole new text that has been transformed?
        
           | gjm11 wrote:
           | You should be (1) deleting everything up to and including
           | "1.#####", then (2) applying the appropriate transformation
           | to what remains. Looking at my code for this step, I see that
           | I removed one newline character at the end of the file before
           | doing everything else, and this apparently yielded the
           | correct result; I didn't do this in subsequent steps.
           | 
           | (I've been playtesting this thing for a while. I'm not all
           | the way through yet.)
        
             | larryboyko wrote:
             | >I see that I removed one newline character at the end of
             | the file
             | 
             | Hm, strange. I don't see, and there shouldn't be, an
             | extraneous newline at the end of the (original) file.
        
               | gjm11 wrote:
               | Interesting: maybe I added it by mistake in a text editor
               | mishap or something :-).
        
           | larryboyko wrote:
           | The whole new text that has been transformed.
           | 
           | A little earlier, the editorial instructions read: "These
           | hash values, or checksums [...], were generated by the
           | SHA-256 algorithm -- implementations of which you should
           | easily be able to find and run on your own plaintexts. (By
           | "plaintext", I mean the entire rest of the file, correctly
           | deciphered -- of which, however, only the next chapter will
           | be legible ... until the subsequent decipherment, and so
           | on.)"
           | 
           | Is that helpful?
        
       | debo_ wrote:
       | Beautiful story. Thanks for sharing it here.
        
         | larryboyko wrote:
         | Thanks. Hope you enjoy the novel.
        
       | romanows wrote:
       | Happy to see this, I used to love coding adventure books as a
       | kid, where you'd type in a BASIC listing and try to "hack the
       | door" or play a simple video game. I love that this forces the
       | reader to actually solve the problem by using a cipher, looking
       | forward to tackling it!
        
         | larryboyko wrote:
         | Thanks! Hope you enjoy it.
        
       | prewett wrote:
       | Who is the target audience for this? Software developers are
       | obviously a good fit, but after spending all day on puzzles, I
       | might not be interested in doing it read a novel, especially one
       | that appears to be about an angsty teenager. (But it is also an
       | interesting idea that makes me curious.) People like my mother,
       | who likes word games and sudoku, also seem like a good audience,
       | but she has no programming background and is probably not excited
       | by the prospect of: choose a suitable programming language +
       | figure out how to install it + editor? + compiling/running +
       | learning the API + who knows what else (from her perspective).
       | However if you could narrow it down to putting together a bunch
       | of primitives (e.g. "swap letters", "swap words", "swap lines",
       | etc.) that would help. This would be similar to text adventure
       | games which give a list of verbs, possibly not exclusive, that
       | you can use. Alternatively, if that gives too much away, having
       | solved it, you could give a list of the functions that are
       | necessary (e.g. if, for, anything in String, anything in Array).
       | 
       | 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.
        
         | romanows wrote:
         | As a counterpoint, I really like that the whole puzzle is just
         | a text file. It's simple, and as I mention in another comment,
         | it reminds me of learning to program in my early days.
         | 
         | This may not have any other real purpose than to be a piece of
         | art. Or perhaps it's aimed at a narrow demographic of kids who
         | are already decent programmers. However, it's also entirely
         | possible that others will create a whole ecosystem of
         | "unofficial" tutorials and libraries/frameworks around it.
        
           | larryboyko wrote:
           | >This may not have any other real purpose than to be a piece
           | of art.
           | 
           | Christine would've loved this answer.
        
       ___________________________________________________________________
       (page generated 2024-04-09 23:02 UTC)