Skip to content

Latest commit

 

History

History
68 lines (55 loc) · 1.56 KB

README.md

File metadata and controls

68 lines (55 loc) · 1.56 KB

portia

An interactive version of the classic 'Portia's Caskets' logic puzzle. See this blog post for additional details.

Generating puzzle data

Ensuring that the directory /portia/data is created and writable, the puzzle data is generated by running the Python script portia.py in the build directory.

> python portia.py

Expected output is:

-------------------------------------------
Generating Portia I data.
 --- creating file ../data/portia1.json
generated 348 puzzles
 --- completed writing out Portia I data.
-------------------------------------------
Generating Portia II data.
 --- creating file ../data/portia2.json
generated 16152 puzzles
 --- completed writing out Portia II data.
-------------------------------------------
Generating Portia III data.
 --- creating file ../data/portia3.json
generated 3600 puzzles
 --- completed writing out Portia III data.
-------------------------------------------

Each puzzle type has its own format:

Portia 1

{
  "caskets": [1,2,2],
  "truths": 0,
  "solution": 3,
  "position": "min",
  "id": "portia1-20"
}

Portia 2

{
  "caskets": [[1,1,3],[-1,-3,-3]],
  "truths": [1,0,1],
  "solution": 3,
  "id": "portia2-358"
}

Portia 3

{
  "caskets": [[1,1,2],[3,1,-2]],
  "truths": [0. 0, 0],
  "solution": 3,
  "id": "portia3-24"
}

Solving the Puzzles

You can interact with the puzzles using the page index.html, a live version of the page is found here.