From fee75ff8a7c72cdfdac8a7840183a501c91b44d6 Mon Sep 17 00:00:00 2001 From: Manuel Friedli <manuel@fritteli.ch> Date: Sat, 15 Apr 2023 19:37:50 +0200 Subject: [PATCH] Fetching remote data from the REST service works, basic drawing too. That's a first prototype. --- src/App.js | 23 +- src/Cell.js | 7 +- src/InputForm.js | 111 + src/Maze.js | 9 +- src/Row.js | 5 +- src/ValidatingInputNumberField.js | 49 + src/styles.css | 3 + src/testdata.js | 3679 ----------------------------- 8 files changed, 190 insertions(+), 3696 deletions(-) create mode 100644 src/InputForm.js create mode 100644 src/ValidatingInputNumberField.js delete mode 100644 src/testdata.js diff --git a/src/App.js b/src/App.js index fde5c47..c7b5cf3 100644 --- a/src/App.js +++ b/src/App.js @@ -1,16 +1,21 @@ -import React from 'react'; +import React, {useState} from 'react'; import Maze from "./Maze"; -import {maze1, maze2, maze3} from "./testdata"; +import InputForm from "./InputForm"; -export default function Square() { - const mazes = [{grid: [[]]}, maze1, maze2, maze3]; - const renderedMazes = mazes.map(maze => (<div> - <h1>The Maze ({maze.width}x{maze.height}).</h1> - <Maze labyrinth={maze}/> - </div>)) +export default function App() { + const [maze, setMaze] = useState({}); + let title; + if (!!maze.grid) { + title = <h1>The Maze ({maze.width}x{maze.height})</h1>; + } else { + title = <span/>; + } return ( <div> - {renderedMazes} + <InputForm handleResult={setMaze}/> + {title} + <Maze labyrinth={maze} + showSolution={true}/> </div> ); } diff --git a/src/Cell.js b/src/Cell.js index 89a4d4d..32ff9c4 100644 --- a/src/Cell.js +++ b/src/Cell.js @@ -1,15 +1,14 @@ import React from 'react'; -export default function Cell({spec, rowIndex, cellIndex}) { +export default function Cell({spec, rowIndex, cellIndex, showSolution}) { let classes = "cell r" + rowIndex + " c" + cellIndex; if (spec.top) classes += " top"; if (spec.right) classes += " right"; if (spec.bottom) classes += " bottom"; if (spec.left) classes += " left"; - if (spec.solution) classes += " solution"; + if (spec.solution && showSolution) classes += " solution"; if (spec.user) classes += " user"; return ( - <div className={classes}> - </div> + <div className={classes}/> ); } diff --git a/src/InputForm.js b/src/InputForm.js new file mode 100644 index 0000000..3c8af4a --- /dev/null +++ b/src/InputForm.js @@ -0,0 +1,111 @@ +import React, {useState} from 'react'; +import ValidatingInputNumberField from "./ValidatingInputNumberField"; + +export default function InputForm({handleResult}) { + const [width, setWidth] = useState(2); + const [height, setHeight] = useState(2); + const [id, setId] = useState(null); + const [status, setStatus] = useState("typing"); // "typing", "submitting" + + if (status === "submitted") { + return <span/>; + } + const callAPI = () => { + let url = "https://manuel.friedli.info/labyrinth/create/json?w=" + width + + "&h=" + height; + if (!!id) { + url += "&id=" + id; + } + fetch(url) + .then(response => response.json()) + .then(result => { + handleResult(result); + // FIXME doesn't update the contents of the text input field. + setId(_ => result.id); + }) + .catch(reason => { + console.error("Failed to fetch maze data.", reason); + // FIXME alert is not user friendly + alert("Failed to fetch maze data: " + reason); + }) + .finally(() => { + setStatus("typing"); + }); + }; + const handleSubmit = (e) => { + e.preventDefault(); + setStatus("submitting"); + callAPI(); + }; + const validateWidthHeightInput = value => { + if (isNaN(value) || "" === value || (Math.floor(value) !== Number(value))) { + return { + valid: false, + message: "Must be an integer greater than 1.", + value + }; + } + if (value < 1) { + return { + valid: false, + message: "Must be greater than 1.", + value + }; + } + return { + valid: true, + value + }; + }; + const validateIdInput = value => { + // FIXME doesn't handle strings with characters correctly (e.g. "asdf" yields an empty value, due to "type=number"). + if (isNaN(value) || ("" !== value && ((Math.floor(value) !== Number(value))))) { + return { + valid: false, + message: "Must be empty or an integer", + value + }; + } + return { + valid: true, + value + } + }; + return ( + <form onSubmit={handleSubmit}> + <ValidatingInputNumberField id={"width"} + label={"Width"} + defaultValue={width} + constraints={{ + min: 2 + }} + validatorFn={validateWidthHeightInput} + disabled={status === "submitting"} + onChange={setWidth} + /><br/> + <ValidatingInputNumberField id={"height"} + label={"Height"} + defaultValue={height} + constraints={{ + min: 2 + }} + validatorFn={validateWidthHeightInput} + disabled={status === "submitting"} + onChange={setHeight} + /><br/> + <ValidatingInputNumberField id={"id"} + label={"ID (optional)"} + defaultValue={id} + validatorFn={validateIdInput} + disabled={status === "submitting"} + onChange={setId} + /><br/> + <button type={"submit"} + disabled={status === "submitting" + || isNaN(width) + || isNaN(height) + }>GO! + </button> + </form> + ); +} diff --git a/src/Maze.js b/src/Maze.js index a1c97df..b67e65f 100644 --- a/src/Maze.js +++ b/src/Maze.js @@ -2,9 +2,14 @@ import React from 'react'; import Row from "./Row"; -export default function Maze({labyrinth}) { +export default function Maze({labyrinth, showSolution = false}) { + if (!labyrinth.grid) { + return <div>No valid maze.</div> + } + const maze = labyrinth.grid.map((row, rowIdx) => <Row key={"r" + rowIdx} spec={row} - index={rowIdx}/>); + index={rowIdx} + showSolution={showSolution}/>); return ( <div className={"maze"}> {maze} diff --git a/src/Row.js b/src/Row.js index 213ce13..e52df33 100644 --- a/src/Row.js +++ b/src/Row.js @@ -1,11 +1,12 @@ import React from 'react'; import Cell from "./Cell"; -export default function Row({spec, index}) { +export default function Row({spec, index, showSolution}) { const cells = spec.map((cell, cellIdx) => <Cell key={"c" + index + "-" + cellIdx} spec={cell} rowIndex={index} - cellIndex={cellIdx}/>) + cellIndex={cellIdx} + showSolution={showSolution}/>) return ( <div className={"row"}> {cells} diff --git a/src/ValidatingInputNumberField.js b/src/ValidatingInputNumberField.js new file mode 100644 index 0000000..5d54b0c --- /dev/null +++ b/src/ValidatingInputNumberField.js @@ -0,0 +1,49 @@ +import React, {useState} from 'react'; + +export default function ValidatingInputNumberField({ + id, + label, + defaultValue = 0, + constraints = {}, + validatorFn = (value) => { + return {valid: true, value}; + }, + disabled = false, + onChange = _ => { + } + }) { + const [error, setError] = useState(null); + const [value, setValue] = useState(defaultValue); + + const handleValueChange = (e) => { + const value = e.target.value; + const validation = validatorFn(value); + if (!validation.valid) { + setError(validation.message); + } else { + setError(null); + onChange(validation.value); + } + setValue(validation.value); + }; + let errorComponent; + if (!!error) { + errorComponent = <span>{error}</span>; + } else { + errorComponent = <span/>; + } + return ( + <span> + <label htmlFor={id}>{label}: </label> + <input id={id} + type={"number"} + onChange={handleValueChange} + value={value || ""} + min={constraints.min || null} + max={constraints.max || null} + disabled={disabled} + /> + {errorComponent} + </span> + ); +} diff --git a/src/styles.css b/src/styles.css index 0337869..00dc8c3 100644 --- a/src/styles.css +++ b/src/styles.css @@ -42,6 +42,9 @@ div.cell.left { border-left-color: #000; } +input:invalid { + border-color: #f00; +} body { font-family: sans-serif; margin: 20px; diff --git a/src/testdata.js b/src/testdata.js deleted file mode 100644 index 0739419..0000000 --- a/src/testdata.js +++ /dev/null @@ -1,3679 +0,0 @@ -export const maze1 = { - width: 3, - height: 2, - grid: [ - [ - { - left: true, - solution: true - }, - { - top: true, - solution: true - }, - { - top: true, - right: true, - bottom: true - } - ], - [ - { - right: true, - bottom: true, - left: true - }, - { - bottom: true, - left: true, - solution: true - }, - { - top: true, - right: true, - solution: true - } - ] - ] -}; - -export const maze2 = { - width: 3, - height: 3, - grid: [ - [ - {solution: true, left: true}, - {solution: true, top: true, bottom: true}, - { - solution: true, - right: true, - top: true - } - ], - [ - {left: true, right: true}, - {left: true, solution: true, top: true}, - { - solution: true, - right: true, - bottom: true - } - ], - [ - {left: true, right: true, bottom: true}, - { - left: true, - solution: true, - bottom: true - }, - {solution: true, right: true, top: true} - ] - ] -}; - -export const maze3 = { - "id": 222524481216700, - "width": 20, - "height": 30, - "grid": [[{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }], [{ - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }], [{ - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }], [{ - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }], [{ - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }], [{ - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }], [{ - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }], [{ - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }], [{ - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }], [{ - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }], [{ - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }], [{ - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }], [{ - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": true - }], [{ - "top": false, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": false, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": false, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }], [{ - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": false, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": true, - "right": false, - "bottom": true, - "left": true, - "solution": false - }, { - "top": false, - "right": true, - "bottom": true, - "left": false, - "solution": false - }, { - "top": false, - "right": false, - "bottom": true, - "left": true, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": false, - "bottom": true, - "left": false, - "solution": true - }, { - "top": true, - "right": true, - "bottom": false, - "left": false, - "solution": true - }]] -}; \ No newline at end of file