Add some example puzzles

This commit is contained in:
Neale Pickett 2016-11-28 16:28:27 -07:00
parent eaf7ac0974
commit fe0b66d301
4 changed files with 79 additions and 0 deletions

View File

@ -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.

View File

@ -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

View File

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