@logic-pad/core 0.26.1 → 0.26.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +31 -31
  2. package/assets/logic-core.global.d.ts +3264 -3262
  3. package/package.json +4 -1
  4. package/dist/benchmark/helper.d.ts +0 -21
  5. package/dist/benchmark/helper.js +0 -34
  6. package/dist/benchmark/prepareBench.d.ts +0 -1
  7. package/dist/benchmark/prepareBench.js +0 -140
  8. package/dist/benchmark/runBench.d.ts +0 -1
  9. package/dist/benchmark/runBench.js +0 -206
  10. package/dist/src/data/config.d.ts +0 -119
  11. package/dist/src/data/config.js +0 -72
  12. package/dist/src/data/configurable.d.ts +0 -14
  13. package/dist/src/data/configurable.js +0 -26
  14. package/dist/src/data/dataHelper.d.ts +0 -92
  15. package/dist/src/data/dataHelper.js +0 -217
  16. package/dist/src/data/events/eventHelper.d.ts +0 -1
  17. package/dist/src/data/events/eventHelper.js +0 -6
  18. package/dist/src/data/events/onFinalValidation.d.ts +0 -14
  19. package/dist/src/data/events/onFinalValidation.js +0 -4
  20. package/dist/src/data/events/onGetTile.d.ts +0 -7
  21. package/dist/src/data/events/onGetTile.js +0 -4
  22. package/dist/src/data/events/onGridChange.d.ts +0 -6
  23. package/dist/src/data/events/onGridChange.js +0 -4
  24. package/dist/src/data/events/onGridResize.d.ts +0 -9
  25. package/dist/src/data/events/onGridResize.js +0 -4
  26. package/dist/src/data/events/onSetGrid.d.ts +0 -7
  27. package/dist/src/data/events/onSetGrid.js +0 -19
  28. package/dist/src/data/events/onSymbolDisplay.d.ts +0 -16
  29. package/dist/src/data/events/onSymbolDisplay.js +0 -4
  30. package/dist/src/data/events/onSymbolMerge.d.ts +0 -10
  31. package/dist/src/data/events/onSymbolMerge.js +0 -4
  32. package/dist/src/data/events/onSymbolValidation.d.ts +0 -18
  33. package/dist/src/data/events/onSymbolValidation.js +0 -4
  34. package/dist/src/data/grid.d.ts +0 -410
  35. package/dist/src/data/grid.js +0 -1106
  36. package/dist/src/data/gridConnections.d.ts +0 -25
  37. package/dist/src/data/gridConnections.js +0 -309
  38. package/dist/src/data/gridZones.d.ts +0 -26
  39. package/dist/src/data/gridZones.js +0 -117
  40. package/dist/src/data/instruction.d.ts +0 -26
  41. package/dist/src/data/instruction.js +0 -29
  42. package/dist/src/data/primitives.d.ts +0 -138
  43. package/dist/src/data/primitives.js +0 -177
  44. package/dist/src/data/puzzle.d.ts +0 -73
  45. package/dist/src/data/puzzle.js +0 -105
  46. package/dist/src/data/rules/banPatternRule.d.ts +0 -30
  47. package/dist/src/data/rules/banPatternRule.js +0 -125
  48. package/dist/src/data/rules/cellCountPerZoneRule.d.ts +0 -23
  49. package/dist/src/data/rules/cellCountPerZoneRule.js +0 -39
  50. package/dist/src/data/rules/cellCountRule.d.ts +0 -33
  51. package/dist/src/data/rules/cellCountRule.js +0 -138
  52. package/dist/src/data/rules/completePatternRule.d.ts +0 -24
  53. package/dist/src/data/rules/completePatternRule.js +0 -46
  54. package/dist/src/data/rules/connectAllRule.d.ts +0 -29
  55. package/dist/src/data/rules/connectAllRule.js +0 -88
  56. package/dist/src/data/rules/connectZonesRule.d.ts +0 -29
  57. package/dist/src/data/rules/connectZonesRule.js +0 -111
  58. package/dist/src/data/rules/containsShapeRule.d.ts +0 -34
  59. package/dist/src/data/rules/containsShapeRule.js +0 -125
  60. package/dist/src/data/rules/customRule.d.ts +0 -34
  61. package/dist/src/data/rules/customRule.js +0 -74
  62. package/dist/src/data/rules/differentCountPerZoneRule.d.ts +0 -30
  63. package/dist/src/data/rules/differentCountPerZoneRule.js +0 -96
  64. package/dist/src/data/rules/exactCountPerZoneRule.d.ts +0 -33
  65. package/dist/src/data/rules/exactCountPerZoneRule.js +0 -99
  66. package/dist/src/data/rules/foresightRule.d.ts +0 -36
  67. package/dist/src/data/rules/foresightRule.js +0 -107
  68. package/dist/src/data/rules/index.d.ts +0 -3
  69. package/dist/src/data/rules/index.js +0 -10
  70. package/dist/src/data/rules/lyingSymbolRule.d.ts +0 -31
  71. package/dist/src/data/rules/lyingSymbolRule.js +0 -207
  72. package/dist/src/data/rules/musicControlLine.d.ts +0 -82
  73. package/dist/src/data/rules/musicControlLine.js +0 -167
  74. package/dist/src/data/rules/musicGridRule.d.ts +0 -51
  75. package/dist/src/data/rules/musicGridRule.js +0 -212
  76. package/dist/src/data/rules/mysteryRule.d.ts +0 -39
  77. package/dist/src/data/rules/mysteryRule.js +0 -146
  78. package/dist/src/data/rules/noLoopsRule.d.ts +0 -29
  79. package/dist/src/data/rules/noLoopsRule.js +0 -218
  80. package/dist/src/data/rules/offByXRule.d.ts +0 -32
  81. package/dist/src/data/rules/offByXRule.js +0 -124
  82. package/dist/src/data/rules/perfectionRule.d.ts +0 -45
  83. package/dist/src/data/rules/perfectionRule.js +0 -158
  84. package/dist/src/data/rules/regionAreaRule.d.ts +0 -34
  85. package/dist/src/data/rules/regionAreaRule.js +0 -149
  86. package/dist/src/data/rules/regionShapeRule.d.ts +0 -22
  87. package/dist/src/data/rules/regionShapeRule.js +0 -58
  88. package/dist/src/data/rules/rule.d.ts +0 -18
  89. package/dist/src/data/rules/rule.js +0 -19
  90. package/dist/src/data/rules/rules.gen.d.ts +0 -23
  91. package/dist/src/data/rules/rules.gen.js +0 -27
  92. package/dist/src/data/rules/sameCountPerZoneRule.d.ts +0 -30
  93. package/dist/src/data/rules/sameCountPerZoneRule.js +0 -95
  94. package/dist/src/data/rules/sameShapeRule.d.ts +0 -28
  95. package/dist/src/data/rules/sameShapeRule.js +0 -68
  96. package/dist/src/data/rules/symbolsPerRegionRule.d.ts +0 -38
  97. package/dist/src/data/rules/symbolsPerRegionRule.js +0 -181
  98. package/dist/src/data/rules/undercluedRule.d.ts +0 -24
  99. package/dist/src/data/rules/undercluedRule.js +0 -53
  100. package/dist/src/data/rules/uniqueShapeRule.d.ts +0 -28
  101. package/dist/src/data/rules/uniqueShapeRule.js +0 -65
  102. package/dist/src/data/rules/wrapAroundRule.d.ts +0 -36
  103. package/dist/src/data/rules/wrapAroundRule.js +0 -241
  104. package/dist/src/data/serializer/allSerializers.d.ts +0 -32
  105. package/dist/src/data/serializer/allSerializers.js +0 -71
  106. package/dist/src/data/serializer/compressor/allCompressors.d.ts +0 -14
  107. package/dist/src/data/serializer/compressor/allCompressors.js +0 -43
  108. package/dist/src/data/serializer/compressor/checksumCompressor.d.ts +0 -6
  109. package/dist/src/data/serializer/compressor/checksumCompressor.js +0 -21
  110. package/dist/src/data/serializer/compressor/compressorBase.d.ts +0 -16
  111. package/dist/src/data/serializer/compressor/compressorBase.js +0 -2
  112. package/dist/src/data/serializer/compressor/deflateCompressor.d.ts +0 -7
  113. package/dist/src/data/serializer/compressor/deflateCompressor.js +0 -17
  114. package/dist/src/data/serializer/compressor/gzipCompressor.d.ts +0 -5
  115. package/dist/src/data/serializer/compressor/gzipCompressor.js +0 -9
  116. package/dist/src/data/serializer/compressor/streamCompressor.d.ts +0 -6
  117. package/dist/src/data/serializer/compressor/streamCompressor.js +0 -41
  118. package/dist/src/data/serializer/serializerBase.d.ts +0 -32
  119. package/dist/src/data/serializer/serializerBase.js +0 -2
  120. package/dist/src/data/serializer/serializer_checksum.d.ts +0 -35
  121. package/dist/src/data/serializer/serializer_checksum.js +0 -179
  122. package/dist/src/data/serializer/serializer_v0.d.ts +0 -55
  123. package/dist/src/data/serializer/serializer_v0.js +0 -484
  124. package/dist/src/data/shapes.d.ts +0 -19
  125. package/dist/src/data/shapes.js +0 -137
  126. package/dist/src/data/solver/allSolvers.d.ts +0 -3
  127. package/dist/src/data/solver/allSolvers.js +0 -13
  128. package/dist/src/data/solver/auto/autoSolver.d.ts +0 -18
  129. package/dist/src/data/solver/auto/autoSolver.js +0 -156
  130. package/dist/src/data/solver/backtrack/backtrackSolver.d.ts +0 -11
  131. package/dist/src/data/solver/backtrack/backtrackSolver.js +0 -54
  132. package/dist/src/data/solver/backtrack/backtrackWorker.d.ts +0 -1
  133. package/dist/src/data/solver/backtrack/backtrackWorker.js +0 -312
  134. package/dist/src/data/solver/backtrack/data.d.ts +0 -47
  135. package/dist/src/data/solver/backtrack/data.js +0 -151
  136. package/dist/src/data/solver/backtrack/rules/banPattern.d.ts +0 -9
  137. package/dist/src/data/solver/backtrack/rules/banPattern.js +0 -77
  138. package/dist/src/data/solver/backtrack/rules/cellCount.d.ts +0 -7
  139. package/dist/src/data/solver/backtrack/rules/cellCount.js +0 -25
  140. package/dist/src/data/solver/backtrack/rules/connectAll.d.ts +0 -7
  141. package/dist/src/data/solver/backtrack/rules/connectAll.js +0 -44
  142. package/dist/src/data/solver/backtrack/rules/regionArea.d.ts +0 -8
  143. package/dist/src/data/solver/backtrack/rules/regionArea.js +0 -71
  144. package/dist/src/data/solver/backtrack/rules/regionShape.d.ts +0 -8
  145. package/dist/src/data/solver/backtrack/rules/regionShape.js +0 -57
  146. package/dist/src/data/solver/backtrack/rules/sameShape.d.ts +0 -8
  147. package/dist/src/data/solver/backtrack/rules/sameShape.js +0 -14
  148. package/dist/src/data/solver/backtrack/rules/symbolsPerRegion.d.ts +0 -10
  149. package/dist/src/data/solver/backtrack/rules/symbolsPerRegion.js +0 -82
  150. package/dist/src/data/solver/backtrack/rules/uniqueShape.d.ts +0 -8
  151. package/dist/src/data/solver/backtrack/rules/uniqueShape.js +0 -14
  152. package/dist/src/data/solver/backtrack/symbols/areaNumber.d.ts +0 -9
  153. package/dist/src/data/solver/backtrack/symbols/areaNumber.js +0 -75
  154. package/dist/src/data/solver/backtrack/symbols/dart.d.ts +0 -8
  155. package/dist/src/data/solver/backtrack/symbols/dart.js +0 -45
  156. package/dist/src/data/solver/backtrack/symbols/directionLinker.d.ts +0 -11
  157. package/dist/src/data/solver/backtrack/symbols/directionLinker.js +0 -121
  158. package/dist/src/data/solver/backtrack/symbols/focus.d.ts +0 -9
  159. package/dist/src/data/solver/backtrack/symbols/focus.js +0 -48
  160. package/dist/src/data/solver/backtrack/symbols/galaxy.d.ts +0 -9
  161. package/dist/src/data/solver/backtrack/symbols/galaxy.js +0 -14
  162. package/dist/src/data/solver/backtrack/symbols/letter.d.ts +0 -9
  163. package/dist/src/data/solver/backtrack/symbols/letter.js +0 -95
  164. package/dist/src/data/solver/backtrack/symbols/lotus.d.ts +0 -11
  165. package/dist/src/data/solver/backtrack/symbols/lotus.js +0 -55
  166. package/dist/src/data/solver/backtrack/symbols/minesweeper.d.ts +0 -9
  167. package/dist/src/data/solver/backtrack/symbols/minesweeper.js +0 -44
  168. package/dist/src/data/solver/backtrack/symbols/myopia.d.ts +0 -7
  169. package/dist/src/data/solver/backtrack/symbols/myopia.js +0 -73
  170. package/dist/src/data/solver/backtrack/symbols/viewpoint.d.ts +0 -7
  171. package/dist/src/data/solver/backtrack/symbols/viewpoint.js +0 -51
  172. package/dist/src/data/solver/cspuz/cspuzSolver.d.ts +0 -13
  173. package/dist/src/data/solver/cspuz/cspuzSolver.js +0 -124
  174. package/dist/src/data/solver/cspuz/cspuzWorker.d.ts +0 -1
  175. package/dist/src/data/solver/cspuz/cspuzWorker.js +0 -82
  176. package/dist/src/data/solver/cspuz/jsonify.d.ts +0 -3
  177. package/dist/src/data/solver/cspuz/jsonify.js +0 -215
  178. package/dist/src/data/solver/eventIteratingSolver.d.ts +0 -8
  179. package/dist/src/data/solver/eventIteratingSolver.js +0 -54
  180. package/dist/src/data/solver/solver.d.ts +0 -77
  181. package/dist/src/data/solver/solver.js +0 -59
  182. package/dist/src/data/solver/universal/universalSolver.d.ts +0 -7
  183. package/dist/src/data/solver/universal/universalSolver.js +0 -13
  184. package/dist/src/data/solver/universal/universalWorker.d.ts +0 -1
  185. package/dist/src/data/solver/universal/universalWorker.js +0 -128
  186. package/dist/src/data/symbols/areaNumberSymbol.d.ts +0 -31
  187. package/dist/src/data/symbols/areaNumberSymbol.js +0 -80
  188. package/dist/src/data/symbols/customIconSymbol.d.ts +0 -35
  189. package/dist/src/data/symbols/customIconSymbol.js +0 -94
  190. package/dist/src/data/symbols/customSymbol.d.ts +0 -25
  191. package/dist/src/data/symbols/customSymbol.js +0 -45
  192. package/dist/src/data/symbols/customTextSymbol.d.ts +0 -35
  193. package/dist/src/data/symbols/customTextSymbol.js +0 -95
  194. package/dist/src/data/symbols/dartSymbol.d.ts +0 -36
  195. package/dist/src/data/symbols/dartSymbol.js +0 -96
  196. package/dist/src/data/symbols/directionLinkerSymbol.d.ts +0 -29
  197. package/dist/src/data/symbols/directionLinkerSymbol.js +0 -232
  198. package/dist/src/data/symbols/everyLetterSymbol.d.ts +0 -32
  199. package/dist/src/data/symbols/everyLetterSymbol.js +0 -119
  200. package/dist/src/data/symbols/focusSymbol.d.ts +0 -40
  201. package/dist/src/data/symbols/focusSymbol.js +0 -159
  202. package/dist/src/data/symbols/galaxySymbol.d.ts +0 -27
  203. package/dist/src/data/symbols/galaxySymbol.js +0 -61
  204. package/dist/src/data/symbols/hiddenSymbol.d.ts +0 -38
  205. package/dist/src/data/symbols/hiddenSymbol.js +0 -113
  206. package/dist/src/data/symbols/houseSymbol.d.ts +0 -33
  207. package/dist/src/data/symbols/houseSymbol.js +0 -104
  208. package/dist/src/data/symbols/index.d.ts +0 -3
  209. package/dist/src/data/symbols/index.js +0 -10
  210. package/dist/src/data/symbols/letterSymbol.d.ts +0 -32
  211. package/dist/src/data/symbols/letterSymbol.js +0 -118
  212. package/dist/src/data/symbols/lotusSymbol.d.ts +0 -30
  213. package/dist/src/data/symbols/lotusSymbol.js +0 -132
  214. package/dist/src/data/symbols/minesweeperSymbol.d.ts +0 -33
  215. package/dist/src/data/symbols/minesweeperSymbol.js +0 -106
  216. package/dist/src/data/symbols/myopiaSymbol.d.ts +0 -37
  217. package/dist/src/data/symbols/myopiaSymbol.js +0 -182
  218. package/dist/src/data/symbols/numberSymbol.d.ts +0 -19
  219. package/dist/src/data/symbols/numberSymbol.js +0 -32
  220. package/dist/src/data/symbols/symbol.d.ts +0 -29
  221. package/dist/src/data/symbols/symbol.js +0 -87
  222. package/dist/src/data/symbols/symbols.gen.d.ts +0 -15
  223. package/dist/src/data/symbols/symbols.gen.js +0 -19
  224. package/dist/src/data/symbols/unsupportedSymbol.d.ts +0 -23
  225. package/dist/src/data/symbols/unsupportedSymbol.js +0 -47
  226. package/dist/src/data/symbols/viewpointSymbol.d.ts +0 -32
  227. package/dist/src/data/symbols/viewpointSymbol.js +0 -95
  228. package/dist/src/data/tile.d.ts +0 -26
  229. package/dist/src/data/tile.js +0 -56
  230. package/dist/src/data/tileConnections.d.ts +0 -25
  231. package/dist/src/data/tileConnections.js +0 -74
  232. package/dist/src/data/validate.d.ts +0 -5
  233. package/dist/src/data/validate.js +0 -131
  234. package/dist/src/data/validateAsync.d.ts +0 -15
  235. package/dist/src/data/validateAsync.js +0 -71
  236. package/dist/src/data/validateAsyncWorker.d.ts +0 -1
  237. package/dist/src/data/validateAsyncWorker.js +0 -9
  238. package/dist/src/index.d.ts +0 -109
  239. package/dist/src/index.js +0 -112
  240. package/dist/src/polyfill/streamPolyfill.d.ts +0 -2
  241. package/dist/src/polyfill/streamPolyfill.js +0 -1
@@ -1,32 +0,0 @@
1
- import { State } from '../primitives.js';
2
- import Symbol from './symbol.js';
3
- /**
4
- * All symbols which contain a number should extend this class to be compatible with off by X rules.
5
- */
6
- export default class NumberSymbol extends Symbol {
7
- x;
8
- y;
9
- number;
10
- constructor(x, y, number) {
11
- super(x, y);
12
- this.x = x;
13
- this.y = y;
14
- this.number = number;
15
- this.number = number;
16
- }
17
- validateSymbol(grid) {
18
- const countResult = this.countTiles(grid);
19
- if (countResult === null)
20
- return State.Error;
21
- const { completed, possible } = countResult;
22
- if (completed > this.number || possible < this.number)
23
- return State.Error;
24
- if (completed === this.number && possible === this.number)
25
- return State.Satisfied;
26
- return State.Incomplete;
27
- }
28
- withNumber(number) {
29
- return this.copyWith({ number });
30
- }
31
- }
32
- export const instance = undefined;
@@ -1,29 +0,0 @@
1
- import { GridResizeHandler } from '../events/onGridResize.js';
2
- import GridData from '../grid.js';
3
- import Instruction from '../instruction.js';
4
- import { Mode, State } from '../primitives.js';
5
- export default abstract class Symbol extends Instruction implements GridResizeHandler {
6
- readonly x: number;
7
- readonly y: number;
8
- constructor(x: number, y: number);
9
- abstract validateSymbol(grid: GridData, solution: GridData | null): State;
10
- modeVariant(_mode: Mode): Symbol | null;
11
- onGridResize(_grid: GridData, mode: 'insert' | 'remove', direction: 'row' | 'column', index: number): this | null;
12
- /**
13
- * The step size for the x and y coordinates of the symbol.
14
- */
15
- get placementStep(): number;
16
- /**
17
- * The order in which symbols are displayed on the instruction list. Lower values are displayed first.
18
- */
19
- get sortOrder(): number;
20
- withX(x: number): this;
21
- withY(y: number): this;
22
- withPosition(x: number, y: number): this;
23
- /**
24
- * For symbols that can be placed between tiles, this method implements the default validation logic,
25
- * which requires all tiles touching the symbol to be either gray or of the same color.
26
- */
27
- protected validateSubtilePlacement(grid: GridData): boolean;
28
- }
29
- export declare const instance: undefined;
@@ -1,87 +0,0 @@
1
- import Instruction from '../instruction.js';
2
- import { Color } from '../primitives.js';
3
- export default class Symbol extends Instruction {
4
- x;
5
- y;
6
- constructor(x, y) {
7
- super();
8
- this.x = x;
9
- this.y = y;
10
- this.x = x;
11
- this.y = y;
12
- }
13
- modeVariant(_mode) {
14
- return this;
15
- }
16
- onGridResize(_grid, mode, direction, index) {
17
- if (mode === 'insert') {
18
- return this.copyWith({
19
- x: direction === 'column' && this.x >= index ? this.x + 1 : this.x,
20
- y: direction === 'row' && this.y >= index ? this.y + 1 : this.y,
21
- });
22
- }
23
- else {
24
- if (direction === 'column' && this.x === index)
25
- return null;
26
- if (direction === 'row' && this.y === index)
27
- return null;
28
- return this.copyWith({
29
- x: direction === 'column' && this.x > index ? this.x - 1 : this.x,
30
- y: direction === 'row' && this.y > index ? this.y - 1 : this.y,
31
- });
32
- }
33
- }
34
- /**
35
- * The step size for the x and y coordinates of the symbol.
36
- */
37
- get placementStep() {
38
- return 0.5;
39
- }
40
- /**
41
- * The order in which symbols are displayed on the instruction list. Lower values are displayed first.
42
- */
43
- get sortOrder() {
44
- return this.id.charCodeAt(0);
45
- }
46
- withX(x) {
47
- return this.copyWith({ x });
48
- }
49
- withY(y) {
50
- return this.copyWith({ y });
51
- }
52
- withPosition(x, y) {
53
- return this.copyWith({ x, y });
54
- }
55
- /**
56
- * For symbols that can be placed between tiles, this method implements the default validation logic,
57
- * which requires all tiles touching the symbol to be either gray or of the same color.
58
- */
59
- validateSubtilePlacement(grid) {
60
- if (this.placementStep >= 1)
61
- return true;
62
- const minX = Math.floor(this.x);
63
- const minY = Math.floor(this.y);
64
- if (minX === this.x && minY === this.y)
65
- return true;
66
- const maxX = Math.ceil(this.x);
67
- const maxY = Math.ceil(this.y);
68
- let color = Color.Gray;
69
- for (let i = 0; i < 4; i++) {
70
- const x = i % 2 === 0 ? minX : maxX;
71
- const y = i < 2 ? minY : maxY;
72
- const tile = grid.getTile(x, y);
73
- if (!tile.exists)
74
- return false;
75
- if (tile.color !== Color.Gray) {
76
- if (color === Color.Gray) {
77
- color = tile.color;
78
- }
79
- else if (color !== tile.color) {
80
- return false;
81
- }
82
- }
83
- }
84
- return true;
85
- }
86
- }
87
- export const instance = undefined;
@@ -1,15 +0,0 @@
1
- export { instance as AreaNumberSymbol } from './areaNumberSymbol.js';
2
- export { instance as CustomIconSymbol } from './customIconSymbol.js';
3
- export { instance as CustomTextSymbol } from './customTextSymbol.js';
4
- export { instance as DartSymbol } from './dartSymbol.js';
5
- export { instance as EveryLetterSymbol } from './everyLetterSymbol.js';
6
- export { instance as FocusSymbol } from './focusSymbol.js';
7
- export { instance as GalaxySymbol } from './galaxySymbol.js';
8
- export { instance as HiddenSymbol } from './hiddenSymbol.js';
9
- export { instance as HouseSymbol } from './houseSymbol.js';
10
- export { instance as LetterSymbol } from './letterSymbol.js';
11
- export { instance as LotusSymbol } from './lotusSymbol.js';
12
- export { instance as MinesweeperSymbol } from './minesweeperSymbol.js';
13
- export { instance as MyopiaSymbol } from './myopiaSymbol.js';
14
- export { instance as UnsupportedSymbol } from './unsupportedSymbol.js';
15
- export { instance as ViewpointSymbol } from './viewpointSymbol.js';
@@ -1,19 +0,0 @@
1
- /* prettier-ignore-start */
2
- /* eslint-disable */
3
- // @ts-nocheck
4
- // noinspection JSUnusedGlobalSymbols
5
- export { instance as AreaNumberSymbol } from './areaNumberSymbol.js';
6
- export { instance as CustomIconSymbol } from './customIconSymbol.js';
7
- export { instance as CustomTextSymbol } from './customTextSymbol.js';
8
- export { instance as DartSymbol } from './dartSymbol.js';
9
- export { instance as EveryLetterSymbol } from './everyLetterSymbol.js';
10
- export { instance as FocusSymbol } from './focusSymbol.js';
11
- export { instance as GalaxySymbol } from './galaxySymbol.js';
12
- export { instance as HiddenSymbol } from './hiddenSymbol.js';
13
- export { instance as HouseSymbol } from './houseSymbol.js';
14
- export { instance as LetterSymbol } from './letterSymbol.js';
15
- export { instance as LotusSymbol } from './lotusSymbol.js';
16
- export { instance as MinesweeperSymbol } from './minesweeperSymbol.js';
17
- export { instance as MyopiaSymbol } from './myopiaSymbol.js';
18
- export { instance as UnsupportedSymbol } from './unsupportedSymbol.js';
19
- export { instance as ViewpointSymbol } from './viewpointSymbol.js';
@@ -1,23 +0,0 @@
1
- import Symbol from './symbol.js';
2
- import { AnyConfig } from '../config.js';
3
- import GridData from '../grid.js';
4
- import { State } from '../primitives.js';
5
- /**
6
- * A marker for symbols not supported by the current solver.
7
- * Solvers should count these symbols in the symbols per region rule but otherwise ignore them.
8
- */
9
- export default class UnsupportedSymbol extends Symbol {
10
- readonly title = "Unsupported Symbol";
11
- private static readonly CONFIGS;
12
- private static readonly EXAMPLE_GRID;
13
- get id(): string;
14
- get explanation(): string;
15
- get configs(): readonly AnyConfig[] | null;
16
- createExampleGrid(): GridData;
17
- validateSymbol(_grid: GridData, _solution: GridData | null): State;
18
- copyWith({ x, y }: {
19
- x?: number;
20
- y?: number;
21
- }): this;
22
- }
23
- export declare const instance: UnsupportedSymbol;
@@ -1,47 +0,0 @@
1
- import Symbol from './symbol.js';
2
- import { ConfigType } from '../config.js';
3
- import GridData from '../grid.js';
4
- import { State } from '../primitives.js';
5
- /**
6
- * A marker for symbols not supported by the current solver.
7
- * Solvers should count these symbols in the symbols per region rule but otherwise ignore them.
8
- */
9
- export default class UnsupportedSymbol extends Symbol {
10
- title = 'Unsupported Symbol';
11
- static CONFIGS = Object.freeze([
12
- {
13
- type: ConfigType.Number,
14
- default: 0,
15
- field: 'x',
16
- description: 'X',
17
- configurable: false,
18
- },
19
- {
20
- type: ConfigType.Number,
21
- default: 0,
22
- field: 'y',
23
- description: 'Y',
24
- configurable: false,
25
- },
26
- ]);
27
- static EXAMPLE_GRID = Object.freeze(GridData.create(['.']));
28
- get id() {
29
- return `unsupported`;
30
- }
31
- get explanation() {
32
- return 'Unsupported symbol';
33
- }
34
- get configs() {
35
- return UnsupportedSymbol.CONFIGS;
36
- }
37
- createExampleGrid() {
38
- return UnsupportedSymbol.EXAMPLE_GRID;
39
- }
40
- validateSymbol(_grid, _solution) {
41
- return State.Satisfied;
42
- }
43
- copyWith({ x, y }) {
44
- return new UnsupportedSymbol(x ?? this.x, y ?? this.y);
45
- }
46
- }
47
- export const instance = new UnsupportedSymbol(0, 0);
@@ -1,32 +0,0 @@
1
- import { AnyConfig } from '../config.js';
2
- import GridData from '../grid.js';
3
- import NumberSymbol from './numberSymbol.js';
4
- export default class ViewpointSymbol extends NumberSymbol {
5
- readonly title = "Viewpoint Number";
6
- private static readonly CONFIGS;
7
- private static readonly EXAMPLE_GRID;
8
- /**
9
- * **Viewpoint Numbers count visible cells in the four directions**
10
- * @param x - The x-coordinate of the symbol.
11
- * @param y - The y-coordinate of the symbol.
12
- * @param number - The viewpoint number.
13
- */
14
- constructor(x: number, y: number, number: number);
15
- get id(): string;
16
- get placementStep(): number;
17
- get explanation(): string;
18
- get configs(): readonly AnyConfig[] | null;
19
- createExampleGrid(): GridData;
20
- private countForColor;
21
- countTiles(grid: GridData): {
22
- completed: number;
23
- possible: number;
24
- };
25
- copyWith({ x, y, number, }: {
26
- x?: number;
27
- y?: number;
28
- number?: number;
29
- }): this;
30
- withNumber(number: number): this;
31
- }
32
- export declare const instance: ViewpointSymbol;
@@ -1,95 +0,0 @@
1
- import { ConfigType } from '../config.js';
2
- import GridData from '../grid.js';
3
- import { array, move } from '../dataHelper.js';
4
- import { Color, DIRECTIONS } from '../primitives.js';
5
- import NumberSymbol from './numberSymbol.js';
6
- export default class ViewpointSymbol extends NumberSymbol {
7
- title = 'Viewpoint Number';
8
- static CONFIGS = Object.freeze([
9
- {
10
- type: ConfigType.Number,
11
- default: 0,
12
- field: 'x',
13
- description: 'X',
14
- configurable: false,
15
- },
16
- {
17
- type: ConfigType.Number,
18
- default: 0,
19
- field: 'y',
20
- description: 'Y',
21
- configurable: false,
22
- },
23
- {
24
- type: ConfigType.Number,
25
- default: 1,
26
- field: 'number',
27
- description: 'Number',
28
- configurable: true,
29
- },
30
- ]);
31
- static EXAMPLE_GRID = Object.freeze(GridData.create(['bbbbb', 'wwwwb', 'bwwbb', 'bbwww']).addSymbol(new ViewpointSymbol(1, 1, 5)));
32
- /**
33
- * **Viewpoint Numbers count visible cells in the four directions**
34
- * @param x - The x-coordinate of the symbol.
35
- * @param y - The y-coordinate of the symbol.
36
- * @param number - The viewpoint number.
37
- */
38
- constructor(x, y, number) {
39
- super(x, y, number);
40
- }
41
- get id() {
42
- return `viewpoint`;
43
- }
44
- get placementStep() {
45
- return 1;
46
- }
47
- get explanation() {
48
- return '*Viewpoint Numbers* count visible cells in the four directions';
49
- }
50
- get configs() {
51
- return ViewpointSymbol.CONFIGS;
52
- }
53
- createExampleGrid() {
54
- return ViewpointSymbol.EXAMPLE_GRID;
55
- }
56
- countForColor(grid, color, pos) {
57
- let minSize = 1;
58
- let maxSize = 1;
59
- const visitedColored = array(grid.width, grid.height, (x, y) => x === pos.x && y === pos.y);
60
- for (const direction of DIRECTIONS) {
61
- grid.iterateDirection(move(pos, direction), direction, tile => tile.color === color, () => {
62
- minSize++;
63
- }, visitedColored);
64
- }
65
- const visitedAll = array(grid.width, grid.height, (x, y) => x === pos.x && y === pos.y);
66
- for (const direction of DIRECTIONS) {
67
- grid.iterateDirection(move(pos, direction), direction, tile => tile.color === color || tile.color === Color.Gray, () => {
68
- maxSize++;
69
- }, visitedAll);
70
- }
71
- return { completed: minSize, possible: maxSize };
72
- }
73
- countTiles(grid) {
74
- if (Math.floor(this.x) !== this.x || Math.floor(this.y) !== this.y)
75
- return { completed: 0, possible: Number.MAX_SAFE_INTEGER };
76
- const pos = { x: this.x, y: this.y };
77
- const color = grid.getTile(this.x, this.y).color;
78
- if (color === Color.Gray) {
79
- const dark = this.countForColor(grid, Color.Dark, pos);
80
- const light = this.countForColor(grid, Color.Light, pos);
81
- return {
82
- completed: Math.min(dark.completed, light.completed),
83
- possible: Math.max(dark.possible, light.possible),
84
- };
85
- }
86
- return this.countForColor(grid, color, pos);
87
- }
88
- copyWith({ x, y, number, }) {
89
- return new ViewpointSymbol(x ?? this.x, y ?? this.y, number ?? this.number);
90
- }
91
- withNumber(number) {
92
- return this.copyWith({ number });
93
- }
94
- }
95
- export const instance = new ViewpointSymbol(0, 0, 1);
@@ -1,26 +0,0 @@
1
- import { Color } from './primitives.js';
2
- export default class TileData {
3
- readonly exists: boolean;
4
- readonly fixed: boolean;
5
- readonly color: Color;
6
- constructor(exists: boolean, fixed: boolean, color: Color);
7
- /**
8
- * Create a gray tile.
9
- */
10
- static empty(): TileData;
11
- /**
12
- * Create a non-existent tile.
13
- */
14
- static doesNotExist(): TileData;
15
- copyWith({ exists, fixed, color, }: {
16
- exists?: boolean;
17
- fixed?: boolean;
18
- color?: Color;
19
- }): this;
20
- withExists(exists: boolean): this;
21
- withFixed(fixed: boolean): this;
22
- withColor(color: Color): this;
23
- get isFixed(): boolean;
24
- equals(other: TileData): boolean;
25
- static create(char: string): TileData;
26
- }
@@ -1,56 +0,0 @@
1
- import { Color } from './primitives.js';
2
- export default class TileData {
3
- exists;
4
- fixed;
5
- color;
6
- constructor(exists, fixed, color) {
7
- this.exists = exists;
8
- this.fixed = fixed;
9
- this.color = color;
10
- this.exists = exists;
11
- this.fixed = fixed;
12
- this.color = color;
13
- }
14
- /**
15
- * Create a gray tile.
16
- */
17
- static empty() {
18
- return new TileData(true, false, Color.Gray);
19
- }
20
- /**
21
- * Create a non-existent tile.
22
- */
23
- static doesNotExist() {
24
- return new TileData(false, false, Color.Gray);
25
- }
26
- copyWith({ exists, fixed, color, }) {
27
- return new TileData(exists ?? this.exists, fixed ?? this.fixed, color ?? this.color);
28
- }
29
- withExists(exists) {
30
- return this.copyWith({ exists });
31
- }
32
- withFixed(fixed) {
33
- return this.copyWith({ fixed });
34
- }
35
- withColor(color) {
36
- return this.copyWith({ color });
37
- }
38
- get isFixed() {
39
- return this.fixed;
40
- }
41
- equals(other) {
42
- return (this.exists === other.exists &&
43
- this.fixed === other.fixed &&
44
- this.color === other.color);
45
- }
46
- static create(char) {
47
- const exists = char !== '.';
48
- const fixed = char.toUpperCase() === char;
49
- const color = char.toLowerCase() === 'n'
50
- ? Color.Gray
51
- : char.toLowerCase() === 'b'
52
- ? Color.Dark
53
- : Color.Light;
54
- return new TileData(exists, fixed, color);
55
- }
56
- }
@@ -1,25 +0,0 @@
1
- export default class TileConnections {
2
- [y: number]: {
3
- [x: number]: boolean;
4
- };
5
- constructor();
6
- get topLeft(): boolean;
7
- set topLeft(value: boolean);
8
- get top(): boolean;
9
- set top(value: boolean);
10
- get topRight(): boolean;
11
- set topRight(value: boolean);
12
- get left(): boolean;
13
- set left(value: boolean);
14
- get center(): boolean;
15
- set center(value: boolean);
16
- get right(): boolean;
17
- set right(value: boolean);
18
- get bottomLeft(): boolean;
19
- set bottomLeft(value: boolean);
20
- get bottom(): boolean;
21
- set bottom(value: boolean);
22
- get bottomRight(): boolean;
23
- set bottomRight(value: boolean);
24
- equals(other: TileConnections): boolean;
25
- }
@@ -1,74 +0,0 @@
1
- export default class TileConnections {
2
- constructor() {
3
- for (let i = -1; i <= 1; i++) {
4
- this[i] = {};
5
- for (let j = -1; j <= 1; j++) {
6
- this[i][j] = false;
7
- }
8
- }
9
- }
10
- get topLeft() {
11
- return this[-1][-1];
12
- }
13
- set topLeft(value) {
14
- this[-1][-1] = value;
15
- }
16
- get top() {
17
- return this[-1][0];
18
- }
19
- set top(value) {
20
- this[-1][0] = value;
21
- }
22
- get topRight() {
23
- return this[-1][1];
24
- }
25
- set topRight(value) {
26
- this[-1][1] = value;
27
- }
28
- get left() {
29
- return this[0][-1];
30
- }
31
- set left(value) {
32
- this[0][-1] = value;
33
- }
34
- get center() {
35
- return this[0][0];
36
- }
37
- set center(value) {
38
- this[0][0] = value;
39
- }
40
- get right() {
41
- return this[0][1];
42
- }
43
- set right(value) {
44
- this[0][1] = value;
45
- }
46
- get bottomLeft() {
47
- return this[1][-1];
48
- }
49
- set bottomLeft(value) {
50
- this[1][-1] = value;
51
- }
52
- get bottom() {
53
- return this[1][0];
54
- }
55
- set bottom(value) {
56
- this[1][0] = value;
57
- }
58
- get bottomRight() {
59
- return this[1][1];
60
- }
61
- set bottomRight(value) {
62
- this[1][1] = value;
63
- }
64
- equals(other) {
65
- for (let i = -1; i <= 1; i++) {
66
- for (let j = -1; j <= 1; j++) {
67
- if (this[i][j] !== other[i][j]) {
68
- return false;
69
- }
70
- }
71
- }
72
- return true;
73
- }
74
- }
@@ -1,5 +0,0 @@
1
- import GridData from './grid.js';
2
- import { GridState, RuleState, State } from './primitives.js';
3
- export declare function aggregateState(rules: readonly RuleState[], grid: GridData, symbols: ReadonlyMap<string, State[]>): State.Error | State.Satisfied | State.Incomplete;
4
- export declare function applyFinalOverrides(grid: GridData, solution: GridData | null, state: GridState): GridState;
5
- export default function validateGrid(grid: GridData, solution: GridData | null): GridState;