[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)