From fe0b66d301960c9fff03f51a8aa9baa439ecfc33 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Mon, 28 Nov 2016 16:28:27 -0700 Subject: [PATCH] Add some example puzzles --- example-puzzles/example/1/puzzle.moth | 45 ++++++++++++++++++++++++++ example-puzzles/example/2/puzzle.moth | 14 ++++++++ example-puzzles/example/2/salad.jpg | Bin 0 -> 13913 bytes example-puzzles/example/3/puzzle.py | 20 ++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 example-puzzles/example/1/puzzle.moth create mode 100644 example-puzzles/example/2/puzzle.moth create mode 100644 example-puzzles/example/2/salad.jpg create mode 100644 example-puzzles/example/3/puzzle.py diff --git a/example-puzzles/example/1/puzzle.moth b/example-puzzles/example/1/puzzle.moth new file mode 100644 index 0000000..294c99c --- /dev/null +++ b/example-puzzles/example/1/puzzle.moth @@ -0,0 +1,45 @@ +Author: neale +Summary: static puzzles +Answer: puzzle.moth + +Puzzle categories are laid out on the filesystem: + + example/ + ├─1 + │ └─puzzle.moth + ├─2 + │ ├─puzzle.moth + │ └─salad.jpg + ├─3 + │ └─puzzle.py + ├─10 + │ └─puzzle.py + └─100 + └─puzzle.moth + +In this example, +there are puzzles with point values 1, 2, 3, 10, and 100. + +Puzzles 1, 2, and 100 are "static" puzzles: +their content was written by hand. + +Puzzles 3 and 10 are "dynamic" puzzles: +they are generated from a Python module. + +To create a static puzzle, all you must have is a +`puzzle.moth` file in the puzzle's directory. +This file is in the following format: + + Author: [name of the person who wrote this puzzle] + Summary: [brief description of the puzzle] + Answer: [answer to this puzzle] + Answer: [second acceptable answer to this puzzle] + + This is the puzzle body. + It is Markdown formatted: + you can read more about Markdown on the Internet. + +To move to the next puzzle in a category, +someone on some team must provide an answer to the highest-point puzzle in that category. + +The answer to this puzzle is the name of the file required to make a static puzzle. diff --git a/example-puzzles/example/2/puzzle.moth b/example-puzzles/example/2/puzzle.moth new file mode 100644 index 0000000..61b63ec --- /dev/null +++ b/example-puzzles/example/2/puzzle.moth @@ -0,0 +1,14 @@ +Author: neale +Summary: Static puzzle resource files +Answer: salad + +You can include additional resources in a static puzzle, +by just dropping them in the directory. + +You can refer to them directly in your Markdown, +or use them however else you see fit. +They will appear in the same directory on the web server once the exercise is running. + +![Leafy Green Deliciousness](salad.jpg) + +The answer for this page is what is featured in the photograph. diff --git a/example-puzzles/example/2/salad.jpg b/example-puzzles/example/2/salad.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf2239ed5b355259342c30a9244fd790e46e06b1 GIT binary patch literal 13913 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

N!!>5 zAW&>tfqHn_1M_(?Vh?55fSlw~xxMRgn@hw}2#vi+{8I>O$$M&dKikO)mM|}|5=?5C zl1xZW0?dT^XaTeua+n88*$eaTl~Q>hQOw6d%gD3{GgMTz@4E!Tt`dvUrI7J8KOmvg z&52ovQL|Azxez3Np5=;eAd_Cv$DlxVJu6md9-0hxT1Kmg^vWp>nRSZ28IzL0v8+(= zdC>*HqUf?DB-Rfg%gD4 zfy>gB$mg~TF^_4ewRRA%5SF;o6yK#6pIu?(OiCsxD&c@o2eyYa;Izb(L6#(Zr#i$X zK5!v#gz{iC1wA|bI-z%H9zL9iXR9yWwaxC+rMs>sE(cf6uh}_f3ZzTDu+?&HA~9oC zEM&!wRdY9LdIZE-@LS0bdovl?bwzkiOLLIT2U<3uCG`SL;gLB^i9v`)spX-cKH^qt4A`;&)SP=Aw2ccl?t|W>dH}N(bX@KB#@xF`QPY#Js2(nK8UY5b4GZs?C zp~T{-`Ql<@m1w9?qk;A3~h$u{}KtL!0Bz}i*kcJ~JA0NG=BIDX#4nwFD z-y={tNE$&I6|jm?iv0;MlF_v+xeJr0Vn8LQ$49tvSl^w7?C3}M;Iyg^ffvs06dbltZ1`}NNh8e2-inxRaWT&7R3 z#3R6`{G=%PK)D4cxDZ;w8o0s}y|^PRQ8m`*5_MEWz<9qaU2qCMp4iZEf*@$ma6jU+ zDLObV3U9V-$OOQfC~YuKFkCtT#UvYTqg-3^E(f691YjT>Jl6?zlnFbs6E|=g^Bhr< zdt#AYAobjsoBbo9lGKzw8KZbWk1PH+HPiR_p&H+LLiZ4f_2;jGzq6(Exl@;iP{X^h z&h&G55bPF{?6)fsB*@Utt0P8e<>$+Dvb=|zuV|zXuRN}h)lFXZ+T3Wcmw<@H0T2X* zOdpa->%^G7mc+0Dadm0{<{Wx5lRja|HSNUoOl8b3V zRh9@3m52zxNio(*7f`KF;O@ZPd1f?feoh(#89*Ay@$RcU_6dhm=j1}p7jN#^%Y%8K z8@eY9p76dVC~n#>lbkccfp4YMGz0LoxnHwk+chuDy>whGWo@{IE*3?UO^rXX*;amL zIYt8istzIN^_1825RJ}uVHs6XH5?^MG;wS(fQk9xX{QTPaYVw?B>2G|L-F!e3CWCV z-y1KK$tOI-YUtlQzN}XG0Cfy;#NiQ|%~&zrYFT^V+V5DSh~Di!0@~#CMckC@tFQA& z?`+!ai=P-N;oL+4Do{FGu5vuMxIQ+=#VwmGv=M@d<>I*sLbxUw^aL58uH=3O zQ53fyk1ftkJ|}=0?HVn+JwbLZN!aU=V0$ltqZY zg0g`wG7GmHRgO#=MVuBY3