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