logicpuzzle

A LaTeX style file for typesetting logic puzzles

User Tools

Site Tools


hakyuu

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

hakyuu [2015/09/06 09:51] (current)
Line 1: Line 1:
 +<​markdown>​
 +Hakyuu
 +======
  
 +The puzzle
 +----------
 +
 +Fill the cells of an area with numbers from 1 to SIZE of the area. If there are two cells with the same number N in a row or a column, there must be at least N cells between those two cells. Here’s a little self-explanatory example:
 +
 +![Hakyuu](http://​i.imgur.com/​NrBMOiM.png)
 +
 +    \begin{center}
 +      \begin{hakyuu}
 +        \hakyuucell{1}{5}{2}
 +        \hakyuucell{3}{5}{6}
 +        \hakyuucell{4}{5}{5}
 +        \hakyuucell{4}{4}{4}
 +        \hakyuucell{1}{3}{3}
 +        \hakyuucell{2}{2}{2}
 +        \hakyuucell{5}{2}{5}
 +        \hakyuucell{4}{1}{1}
 +        \begin{puzzlebackground}
 +          \fillarea{Wheat}{(1,​1)--(1,​4)--(2,​4)--(2,​1)--(1,​1)}
 +          \fillarea{HotPink!30}{(1,​4)--(1,​6)--(6,​6)--(6,​5)--(3,​5)--(3,​4)--(1,​4)}
 +          \fillarea{GreenYellow}{(2,​4)--(3,​4)--(3,​5)--(5,​5)--(5,​4)--(4,​4)--(4,​3)--(2,​3)--(2,​4)}
 +          \fillarea{LightBlue}{(5,​5)--(6,​5)--(6,​3)--(4,​3)--(4,​4)--(5,​4)--(5,​5)}
 +          \fillarea{LightSalmon!50}{(2,​2)--(2,​3)--(5,​3)--(5,​2)--(2,​2)}
 +          \fillarea{LightYellow}{(2,​1)--(2,​2)--(5,​2)--(5,​3)--(6,​3)--(6,​1)--(2,​1)}
 +        \end{puzzlebackground} ​
 +      \end{hakyuu}
 +      \hspace{1,​5cm}
 +      \begin{hakyuu}
 +        \setrow{5}{2,​3,​6,​5,​4}
 +        \setrow{4}{1,​7,​3,​4,​2}
 +        \setrow{3}{3,​1,​2,​1,​3}
 +        \setrow{2}{1,​2,​1,​3,​5}
 +        \setrow{1}{2,​3,​4,​1,​2}
 +        \begin{puzzlebackground}
 +          \fillarea{Wheat}{(1,​1)--(1,​4)--(2,​4)--(2,​1)--(1,​1)}
 +          \fillarea{HotPink!30}{(1,​4)--(1,​6)--(6,​6)--(6,​5)--(3,​5)--(3,​4)--(1,​4)}
 +          \fillarea{GreenYellow}{(2,​4)--(3,​4)--(3,​5)--(5,​5)--(5,​4)--(4,​4)--(4,​3)--(2,​3)--(2,​4)}
 +          \fillarea{LightBlue}{(5,​5)--(6,​5)--(6,​3)--(4,​3)--(4,​4)--(5,​4)--(5,​5)}
 +          \fillarea{LightSalmon!50}{(2,​2)--(2,​3)--(5,​3)--(5,​2)--(2,​2)}
 +          \fillarea{LightYellow}{(2,​1)--(2,​2)--(5,​2)--(5,​3)--(6,​3)--(6,​1)--(2,​1)}
 +        \end{puzzlebackground} ​
 +      \end{hakyuu}
 +    \end{center}
 +
 +Options
 +-------
 +
 ++ `rows (5)`
 +defines the number of rows in the grid
 +
 ++ `columns (5)`
 +specifies the number of columns in the grid
 +
 ++ `width (5.1cm)`
 +sets the width of the minipage, in which the grid is typeset
 +
 ++ `scale (1)`
 +scales the size of the grid in the minipage
 +
 ++ `fontsize (Large)`
 +specifies the size of the numbers next to the grid. Here, the usual LaTeX sizes are used. Possible values: tiny, scriptsize, footnotesize,​ small, normalsize, large, **Large**, LARGE, huge, Huge
 +
 ++ `title ()`
 +sets the title of a puzzle
 +
 ++ `titleindent (0cm)`
 +defines the indent of the title
 +
 ++ `titlewidth (5.1cm)`
 +specifies the width of the box the title is set in
 +
 ++ `bgcolor ()`
 +sets the background color of the grid
 +
 ++ `counterstyle (none)`
 +defines the counter style. Predefined styles: **none**, left, right
 +
 ++ `cvoffset (-22pt)`
 +sets the vertical offset of the counters in the margin
 +
 +Environments
 +------------
 +
 +###hakyuu
 +
 +    \begin{hakyuu}
 +
 +    \end{hakyuu}
 +
 +The environment `hakyuu` is the central core of the style file. With the optional argument of the environment,​ you can reset the options with local scope. Here, a blank grid is created.
 +
 +###​puzzlebackground
 +
 +    \begin{puzzlebackground}
 +
 +    \end{puzzlebackground}
 +
 +The `puzzlebackground` environment allows you to place elements behind the main layer. This
 +is for example usefull for the `\fillarea` command.
 +
 +###​puzzleforeground
 +
 +    \begin{puzzleforeground}
 +
 +    \end{puzzleforeground}
 +
 +The `puzzleforeground` environment allows you to place elements in front of the main layer.
 +This is for example usefull for the `\framearea` command.
 +
 +Commands
 +--------
 +
 +### In the grid and around
 +
 +
 +#### hakyuucell
 +
 +`hakyuucell{column}{row}{number}`
 +
 +The command sets the `{number}` of the grid cell `{column}{row}`.
 +
 +#### setrow
 +
 +`\setrow{row}{csv list}`
 +
 +The command sets the contents of `{row}`. It expects a comma-separated list.
 +
 +#### setcolumn
 +
 +`\setcolumn{column}{csv list}`
 +
 +The command sets the contents of `{column}`.
 +
 +#### framearea
 +
 +`\framearea{color}{\tikz path}`
 +
 +The command frames the area given by `{\tikz path}` with color `{color}`. The reference for coordinates is the bottom left corner of the cell.
 +
 +`\framearea{green}{(2,​2)--(2,​3)--(3,​3)--(3,​2)--(2,​2)}`
 +
 +This command will color the frame of the grid cell `(2,2)` green. You should consider using this command in the `puzzleforeground` environment.
 +
 +#### fillarea
 +
 +`\fillarea{color}{\tikz path}`
 +
 +The command fills the area given by `{\tikz path}` with color `{color}`. The reference for coordinates is the bottom left corner of the cell. You should consider
 +using this command in the `puzzlebackground` environment.
 +
 +###​Presentation
 +
 +#### definecounterstyle
 +
 +The command allows you to define your own styles. For example, the style
 +`left` is defined as follows:
 +
 +    \definecounterstyle{left}{
 +      \begingroup\reversemarginpar\marginnote{
 +      \tikz\node[shape=rectangle,​fill=yellow!40,​inner sep=7pt,
 +                 ​draw,​rounded corners=3pt,​thick]
 +      {\Huge\puzzlecounter};​}[\LP@cvoffset]\endgroup}
 +    }
 +
 +To typeset the counter into the margin we use the command `\marginnote`. We need to use the command `\reversemarginpar` to set the counter into the left margin. Of course, we must use this command in a group for local scope. Finally we use `\puzzlecounter` in a `\tikz` node with a vertical offset set with the option `cvoffset`.
 +
 +#### puzzlecounter
 +
 +`\puzzlecounter`
 +
 +The command provides the counter in textual form to use it for example
 +in `\definecounterstyle`.
 +
 +#### titleformat
 +
 +`\titleformat{format}`
 +
 +With the command `\titleformat`,​ you can define the format of the title. By default,
 +the definition is as follows:
 +
 +`\titleformat{\centering\Large\color{blue}}`
 +
 +###​Miscellaneous
 +
 +#### hakyuusetup
 +
 +`\hakyuusetup{options}`
 +
 +With the command `hakyuusetup` you can reset the options with global scope.
 +
 +#### setpuzzlecounter
 +
 +`\setpuzzlecounter{number}`
 +
 +With the command `\setpuzzlecounter`,​ you can reset the puzzle counter, for example before the solutions.
 +
 +Examples & Solutions
 +--------------------
 +
 +You can download application examples and their solutions from the [project page](https://​bitbucket.org/​kleberj/​logicpuzzle/​). The puzzles are originally licensed under
 +[CC-BY-NC-SA](http://​creativecommons.org/​licenses/​by-nc-sa/​3.0/​).
 +
 +![qrcode](http://​imgur.com/​KAunnuS.png)
 +
 +</​markdown>​
hakyuu.txt · Last modified: 2015/09/06 09:51 (external edit)