mirror of https://github.com/dirtbags/moth.git
Add some example puzzles
This commit is contained in:
parent
eaf7ac0974
commit
fe0b66d301
|
@ -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.
|
|
@ -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.
|
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
def make(puzzle):
|
||||||
|
puzzle.author = 'neale'
|
||||||
|
puzzle.summary = 'dynamic puzzles'
|
||||||
|
answer = puzzle.randword()
|
||||||
|
puzzle.answers.append(answer)
|
||||||
|
|
||||||
|
puzzle.body.write("To generate a dynamic puzzle, you need to write a Python module.\n")
|
||||||
|
puzzle.body.write("\n")
|
||||||
|
puzzle.body.write("The passed-in puzzle object provides some handy methods.\n")
|
||||||
|
puzzle.body.write("In particular, please use the `puzzle.rand` object to guarantee that rebuilding a category\n")
|
||||||
|
puzzle.body.write("won't change puzzles and answers.\n")
|
||||||
|
puzzle.body.write("(Participants don't like it when puzzles and answers change.)\n")
|
||||||
|
puzzle.body.write("\n")
|
||||||
|
|
||||||
|
number = puzzle.rand.randint(20, 500)
|
||||||
|
puzzle.log("One is the loneliest number, but {} is the saddest number.".format(number))
|
||||||
|
|
||||||
|
puzzle.body.write("The answer for this page is {}.\n".format(answer))
|
Loading…
Reference in New Issue