Full Puzzle Kind

Status: Draft

A proposed inheritance tree for libipuz. Some open questions:

  • Q. Should ACROSTIC and FILL_IN inherit from crossword? They separate in the spec and are generally quite different puzzle types. However, the boards they have are basically identical, so as a practical matter making them crosswords could be useful.

    An argument for making them separate is the invariants enforced by the fix_() style functions are totally different. None of the ones in IPuzCrossword will apply to IPuzCryptic, while eg. the ones in IPuzArrowword and IPuzBarred apply in spirit (if not code).

  • Q. Which of these can share the same IPuzCell type? Should that class grow to be the union of all the values, or do we want to investigate different types? As an example, do we store numbers for sudokus, or just use a string?

Class

Puzzle Kind

Kind URI

Implemented

Notes

IPuzPuzzle

None

None

[X]

Base class for all puzzles

IPuzAnswer

ANSWER

http://ipuz.org/answer

┃  ┣ IPuzRiddle

RIDDLE

http://ipuz.org/answer/riddle

┃  ┣ IPuzChoice

CHOICE

http://ipuz.org/answer/choice

┃  ┗ IPuzFlat

FLAT

http://ipuz.org/answer/flat

IPuzBlock

BLOCK

http://ipuz.org/block

┃  ┣ IPuzSlidingBlock

SLIDING_BLOCK

http://ipuz.org/block/slidingblock

┃  ┗ IPuzMaze

MAZE

http://ipuz.org/block/maze

IPuzCrossword

CROSSWORD

http://ipuz.org/crossword

[X]

┃  ┣ IPuzArrowword

ARROWWORD

http://ipuz.org/crossword/arrowword

[X]

┃  ┣ IPuzAcrostic

ACROSTIC

http://ipuz.org/acrostic

[X]

Currently subtypes Crossword

┃  ┣ IPuzBarred

BARRED

https://libipuz.org/barred

[X]

libipuz extension

┃  ┣ IPuzCryptic

CRYPTIC

http://ipuz.org/crossword/crypticcrossword

[X]

┃  ┣ IPuzDiagramless

DIAGRAMLESS

http://ipuz.org/crossword/diagramless

┃  ┣ IPuzFilippine

FILIPPINE

https://libipuz.org/filippine

[X]

libipuz extension

┃  ┗ IPuzFillIn

FILL_IN

http://ipuz.org/fill

┃  ┗ IPuzFreeForm

FREE_FORM

https://libipuz.org/freeform

libipuz extension

IPuzSudoku

SUDOKU

http://ipuz.org/sudoku

┃  ┣ IPuzCalcudoku

CALCUDOKU

http://ipuz.org/sudoku/calcudoku

┃  ┣ IPuzDiagonalSudoku

DIAGONAL_SUDOKU

http://ipuz.org/sudoku/diagonalsudoku

┃  ┣ IPuzHyperSudoku

HYPER_SUDOKU

http://ipuz.org/sudoku/hypersudoku

┃  ┣ IPuzJigsawSudoku

JIGSAW_SUDOKU

http://ipuz.org/sudoku/jigsawsudoku

┃  ┣ IPuzGreaterThanSudoku

GREATER_THAN_SUDOKU

http://ipuz.org/greaterthansudoku

URI is missing sudoku/

┃  ┣ IPuzKillerSudoku

KILLER_SUDOKU

http://ipuz.org/sudoku/killersudoku

┃  ┣ IPuzLatinSquare

LATIN_SQUARE

http://ipuz.org/sudoku/latinsquare

┃  ┗ IPuzWordoku

WORDOKU

http://ipuz.org/sudoku/wordoku

IPuzWordSearch

WORD_SEARCH

http://ipuz.org/wordsearch

IPuzAnagrid

ANAGRID

http://ipuz.org/wordsearch/anagrid

IPuzTraceOut

TRACE_OUT

http://ipuz.org/wordsearch/traceout