@logic-pad/core 0.23.2 → 0.25.0

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 (268) hide show
  1. package/assets/logic-core.global.d.ts +53 -0
  2. package/dist/benchmark/helper.d.ts +21 -0
  3. package/dist/benchmark/helper.js +34 -0
  4. package/dist/benchmark/prepareBench.js +140 -0
  5. package/dist/benchmark/runBench.js +206 -0
  6. package/dist/{data → src/data}/dataHelper.js +4 -18
  7. package/dist/{data → src/data}/grid.js +22 -70
  8. package/dist/{data → src/data}/gridZones.js +1 -6
  9. package/dist/{data → src/data}/rules/banPatternRule.js +19 -50
  10. package/dist/{data → src/data}/rules/cellCountPerZoneRule.js +2 -6
  11. package/dist/{data → src/data}/rules/cellCountRule.js +62 -96
  12. package/dist/{data → src/data}/rules/completePatternRule.js +6 -22
  13. package/dist/{data → src/data}/rules/connectAllRule.js +20 -50
  14. package/dist/{data → src/data}/rules/connectZonesRule.js +28 -58
  15. package/dist/{data → src/data}/rules/containsShapeRule.js +29 -65
  16. package/dist/{data → src/data}/rules/customRule.js +28 -57
  17. package/dist/{data → src/data}/rules/differentCountPerZoneRule.js +33 -68
  18. package/dist/{data → src/data}/rules/exactCountPerZoneRule.js +43 -82
  19. package/dist/{data → src/data}/rules/foresightRule.js +50 -87
  20. package/dist/{data → src/data}/rules/lyingSymbolRule.js +37 -88
  21. package/dist/{data → src/data}/rules/musicControlLine.js +69 -131
  22. package/dist/{data → src/data}/rules/musicGridRule.js +43 -76
  23. package/dist/{data → src/data}/rules/mysteryRule.js +29 -58
  24. package/dist/src/data/rules/noLoopsRule.d.ts +29 -0
  25. package/dist/src/data/rules/noLoopsRule.js +111 -0
  26. package/dist/{data → src/data}/rules/offByXRule.js +49 -74
  27. package/dist/{data → src/data}/rules/perfectionRule.js +8 -28
  28. package/dist/{data → src/data}/rules/regionAreaRule.js +47 -86
  29. package/dist/{data → src/data}/rules/regionShapeRule.js +2 -6
  30. package/dist/{data → src/data}/rules/rules.gen.d.ts +1 -0
  31. package/dist/{data → src/data}/rules/rules.gen.js +1 -0
  32. package/dist/{data → src/data}/rules/sameCountPerZoneRule.js +33 -68
  33. package/dist/{data → src/data}/rules/sameShapeRule.js +18 -44
  34. package/dist/{data → src/data}/rules/symbolsPerRegionRule.js +52 -90
  35. package/dist/{data → src/data}/rules/undercluedRule.js +11 -27
  36. package/dist/{data → src/data}/rules/uniqueShapeRule.js +18 -44
  37. package/dist/{data → src/data}/rules/wrapAroundRule.js +99 -138
  38. package/dist/{data → src/data}/serializer/serializer_checksum.js +1 -9
  39. package/dist/{data → src/data}/serializer/serializer_v0.js +1 -9
  40. package/dist/{data → src/data}/solver/auto/autoSolver.js +12 -39
  41. package/dist/{data → src/data}/solver/backtrack/backtrackSolver.js +15 -39
  42. package/dist/{data → src/data}/solver/backtrack/backtrackWorker.js +1 -1
  43. package/dist/{data → src/data}/solver/backtrack/data.js +16 -48
  44. package/dist/{data → src/data}/solver/backtrack/rules/banPattern.js +1 -6
  45. package/dist/{data → src/data}/solver/backtrack/rules/cellCount.js +1 -6
  46. package/dist/{data → src/data}/solver/backtrack/rules/connectAll.js +1 -6
  47. package/dist/{data → src/data}/solver/backtrack/rules/regionArea.js +1 -6
  48. package/dist/{data → src/data}/solver/backtrack/rules/regionShape.js +1 -6
  49. package/dist/{data → src/data}/solver/backtrack/rules/sameShape.js +1 -6
  50. package/dist/{data → src/data}/solver/backtrack/rules/symbolsPerRegion.js +2 -12
  51. package/dist/{data → src/data}/solver/backtrack/rules/uniqueShape.js +1 -6
  52. package/dist/{data → src/data}/solver/backtrack/symbols/areaNumber.js +1 -6
  53. package/dist/{data → src/data}/solver/backtrack/symbols/dart.js +1 -6
  54. package/dist/{data → src/data}/solver/backtrack/symbols/directionLinker.js +3 -13
  55. package/dist/{data → src/data}/solver/backtrack/symbols/focus.js +3 -13
  56. package/dist/{data → src/data}/solver/backtrack/symbols/galaxy.js +1 -6
  57. package/dist/{data → src/data}/solver/backtrack/symbols/letter.js +2 -12
  58. package/dist/{data → src/data}/solver/backtrack/symbols/lotus.js +1 -6
  59. package/dist/{data → src/data}/solver/backtrack/symbols/minesweeper.js +3 -13
  60. package/dist/{data → src/data}/solver/backtrack/symbols/myopia.js +1 -6
  61. package/dist/{data → src/data}/solver/backtrack/symbols/viewpoint.js +1 -6
  62. package/dist/{data → src/data}/solver/cspuz/cspuzSolver.js +22 -46
  63. package/dist/{data → src/data}/solver/eventIteratingSolver.js +9 -12
  64. package/dist/{data → src/data}/solver/solver.js +1 -8
  65. package/dist/src/data/solver/universal/universalSolver.js +20 -0
  66. package/dist/src/data/solver/universal/universalWorker.d.ts +1 -0
  67. package/dist/{data → src/data}/solver/z3/modules/areaNumberModule.js +1 -9
  68. package/dist/{data → src/data}/solver/z3/modules/cellCountModule.js +1 -9
  69. package/dist/{data → src/data}/solver/z3/modules/connectAllModule.js +1 -9
  70. package/dist/{data → src/data}/solver/z3/modules/dartModule.js +1 -9
  71. package/dist/{data → src/data}/solver/z3/modules/letterModule.js +1 -9
  72. package/dist/{data → src/data}/solver/z3/modules/myopiaModule.js +1 -9
  73. package/dist/{data → src/data}/solver/z3/modules/regionAreaModule.js +1 -9
  74. package/dist/{data → src/data}/solver/z3/modules/viewpointModule.js +1 -9
  75. package/dist/{data → src/data}/solver/z3/z3Solver.js +4 -27
  76. package/dist/{data → src/data}/solver/z3/z3SolverContext.js +3 -12
  77. package/dist/{data → src/data}/symbols/areaNumberSymbol.js +28 -44
  78. package/dist/{data → src/data}/symbols/customIconSymbol.js +40 -64
  79. package/dist/{data → src/data}/symbols/customSymbol.js +4 -12
  80. package/dist/{data → src/data}/symbols/customTextSymbol.js +40 -64
  81. package/dist/{data → src/data}/symbols/dartSymbol.js +39 -59
  82. package/dist/{data → src/data}/symbols/directionLinkerSymbol.js +34 -63
  83. package/dist/src/data/symbols/everyLetterSymbol.d.ts +32 -0
  84. package/dist/src/data/symbols/everyLetterSymbol.js +117 -0
  85. package/dist/{data → src/data}/symbols/focusSymbol.js +49 -69
  86. package/dist/{data → src/data}/symbols/galaxySymbol.js +12 -31
  87. package/dist/{data → src/data}/symbols/hiddenSymbol.js +34 -62
  88. package/dist/{data → src/data}/symbols/houseSymbol.js +39 -67
  89. package/dist/{data → src/data}/symbols/letterSymbol.js +40 -68
  90. package/dist/{data → src/data}/symbols/lotusSymbol.js +58 -81
  91. package/dist/{data → src/data}/symbols/minesweeperSymbol.js +30 -46
  92. package/dist/{data → src/data}/symbols/myopiaSymbol.js +45 -69
  93. package/dist/{data → src/data}/symbols/numberSymbol.js +6 -18
  94. package/dist/{data → src/data}/symbols/symbol.js +4 -12
  95. package/dist/{data → src/data}/symbols/symbols.gen.d.ts +1 -0
  96. package/dist/{data → src/data}/symbols/symbols.gen.js +1 -0
  97. package/dist/{data → src/data}/symbols/viewpointSymbol.js +26 -42
  98. package/dist/{data → src/data}/tile.js +6 -18
  99. package/dist/src/data/validateAsync.js +71 -0
  100. package/dist/src/data/validateAsyncWorker.d.ts +1 -0
  101. package/dist/{index.d.ts → src/index.d.ts} +3 -1
  102. package/dist/{index.js → src/index.js} +3 -1
  103. package/package.json +6 -2
  104. package/dist/data/solver/universal/universalSolver.js +0 -38
  105. package/dist/data/validateAsync.js +0 -128
  106. /package/dist/{data/solver/backtrack/backtrackWorker.d.ts → benchmark/prepareBench.d.ts} +0 -0
  107. /package/dist/{data/solver/cspuz/cspuzWorker.d.ts → benchmark/runBench.d.ts} +0 -0
  108. /package/dist/{data → src/data}/config.d.ts +0 -0
  109. /package/dist/{data → src/data}/config.js +0 -0
  110. /package/dist/{data → src/data}/configurable.d.ts +0 -0
  111. /package/dist/{data → src/data}/configurable.js +0 -0
  112. /package/dist/{data → src/data}/dataHelper.d.ts +0 -0
  113. /package/dist/{data → src/data}/events/eventHelper.d.ts +0 -0
  114. /package/dist/{data → src/data}/events/eventHelper.js +0 -0
  115. /package/dist/{data → src/data}/events/onFinalValidation.d.ts +0 -0
  116. /package/dist/{data → src/data}/events/onFinalValidation.js +0 -0
  117. /package/dist/{data → src/data}/events/onGetTile.d.ts +0 -0
  118. /package/dist/{data → src/data}/events/onGetTile.js +0 -0
  119. /package/dist/{data → src/data}/events/onGridChange.d.ts +0 -0
  120. /package/dist/{data → src/data}/events/onGridChange.js +0 -0
  121. /package/dist/{data → src/data}/events/onGridResize.d.ts +0 -0
  122. /package/dist/{data → src/data}/events/onGridResize.js +0 -0
  123. /package/dist/{data → src/data}/events/onSetGrid.d.ts +0 -0
  124. /package/dist/{data → src/data}/events/onSetGrid.js +0 -0
  125. /package/dist/{data → src/data}/events/onSymbolDisplay.d.ts +0 -0
  126. /package/dist/{data → src/data}/events/onSymbolDisplay.js +0 -0
  127. /package/dist/{data → src/data}/events/onSymbolMerge.d.ts +0 -0
  128. /package/dist/{data → src/data}/events/onSymbolMerge.js +0 -0
  129. /package/dist/{data → src/data}/events/onSymbolValidation.d.ts +0 -0
  130. /package/dist/{data → src/data}/events/onSymbolValidation.js +0 -0
  131. /package/dist/{data → src/data}/grid.d.ts +0 -0
  132. /package/dist/{data → src/data}/gridConnections.d.ts +0 -0
  133. /package/dist/{data → src/data}/gridConnections.js +0 -0
  134. /package/dist/{data → src/data}/gridZones.d.ts +0 -0
  135. /package/dist/{data → src/data}/instruction.d.ts +0 -0
  136. /package/dist/{data → src/data}/instruction.js +0 -0
  137. /package/dist/{data → src/data}/primitives.d.ts +0 -0
  138. /package/dist/{data → src/data}/primitives.js +0 -0
  139. /package/dist/{data → src/data}/puzzle.d.ts +0 -0
  140. /package/dist/{data → src/data}/puzzle.js +0 -0
  141. /package/dist/{data → src/data}/rules/banPatternRule.d.ts +0 -0
  142. /package/dist/{data → src/data}/rules/cellCountPerZoneRule.d.ts +0 -0
  143. /package/dist/{data → src/data}/rules/cellCountRule.d.ts +0 -0
  144. /package/dist/{data → src/data}/rules/completePatternRule.d.ts +0 -0
  145. /package/dist/{data → src/data}/rules/connectAllRule.d.ts +0 -0
  146. /package/dist/{data → src/data}/rules/connectZonesRule.d.ts +0 -0
  147. /package/dist/{data → src/data}/rules/containsShapeRule.d.ts +0 -0
  148. /package/dist/{data → src/data}/rules/customRule.d.ts +0 -0
  149. /package/dist/{data → src/data}/rules/differentCountPerZoneRule.d.ts +0 -0
  150. /package/dist/{data → src/data}/rules/exactCountPerZoneRule.d.ts +0 -0
  151. /package/dist/{data → src/data}/rules/foresightRule.d.ts +0 -0
  152. /package/dist/{data → src/data}/rules/index.d.ts +0 -0
  153. /package/dist/{data → src/data}/rules/index.js +0 -0
  154. /package/dist/{data → src/data}/rules/lyingSymbolRule.d.ts +0 -0
  155. /package/dist/{data → src/data}/rules/musicControlLine.d.ts +0 -0
  156. /package/dist/{data → src/data}/rules/musicGridRule.d.ts +0 -0
  157. /package/dist/{data → src/data}/rules/mysteryRule.d.ts +0 -0
  158. /package/dist/{data → src/data}/rules/offByXRule.d.ts +0 -0
  159. /package/dist/{data → src/data}/rules/perfectionRule.d.ts +0 -0
  160. /package/dist/{data → src/data}/rules/regionAreaRule.d.ts +0 -0
  161. /package/dist/{data → src/data}/rules/regionShapeRule.d.ts +0 -0
  162. /package/dist/{data → src/data}/rules/rule.d.ts +0 -0
  163. /package/dist/{data → src/data}/rules/rule.js +0 -0
  164. /package/dist/{data → src/data}/rules/sameCountPerZoneRule.d.ts +0 -0
  165. /package/dist/{data → src/data}/rules/sameShapeRule.d.ts +0 -0
  166. /package/dist/{data → src/data}/rules/symbolsPerRegionRule.d.ts +0 -0
  167. /package/dist/{data → src/data}/rules/undercluedRule.d.ts +0 -0
  168. /package/dist/{data → src/data}/rules/uniqueShapeRule.d.ts +0 -0
  169. /package/dist/{data → src/data}/rules/wrapAroundRule.d.ts +0 -0
  170. /package/dist/{data → src/data}/serializer/allSerializers.d.ts +0 -0
  171. /package/dist/{data → src/data}/serializer/allSerializers.js +0 -0
  172. /package/dist/{data → src/data}/serializer/compressor/allCompressors.d.ts +0 -0
  173. /package/dist/{data → src/data}/serializer/compressor/allCompressors.js +0 -0
  174. /package/dist/{data → src/data}/serializer/compressor/checksumCompressor.d.ts +0 -0
  175. /package/dist/{data → src/data}/serializer/compressor/checksumCompressor.js +0 -0
  176. /package/dist/{data → src/data}/serializer/compressor/compressorBase.d.ts +0 -0
  177. /package/dist/{data → src/data}/serializer/compressor/compressorBase.js +0 -0
  178. /package/dist/{data → src/data}/serializer/compressor/deflateCompressor.d.ts +0 -0
  179. /package/dist/{data → src/data}/serializer/compressor/deflateCompressor.js +0 -0
  180. /package/dist/{data → src/data}/serializer/compressor/gzipCompressor.d.ts +0 -0
  181. /package/dist/{data → src/data}/serializer/compressor/gzipCompressor.js +0 -0
  182. /package/dist/{data → src/data}/serializer/compressor/streamCompressor.d.ts +0 -0
  183. /package/dist/{data → src/data}/serializer/compressor/streamCompressor.js +0 -0
  184. /package/dist/{data → src/data}/serializer/serializerBase.d.ts +0 -0
  185. /package/dist/{data → src/data}/serializer/serializerBase.js +0 -0
  186. /package/dist/{data → src/data}/serializer/serializer_checksum.d.ts +0 -0
  187. /package/dist/{data → src/data}/serializer/serializer_v0.d.ts +0 -0
  188. /package/dist/{data → src/data}/shapes.d.ts +0 -0
  189. /package/dist/{data → src/data}/shapes.js +0 -0
  190. /package/dist/{data → src/data}/solver/allSolvers.d.ts +0 -0
  191. /package/dist/{data → src/data}/solver/allSolvers.js +0 -0
  192. /package/dist/{data → src/data}/solver/auto/autoSolver.d.ts +0 -0
  193. /package/dist/{data → src/data}/solver/backtrack/backtrackSolver.d.ts +0 -0
  194. /package/dist/{data/solver/universal/universalWorker.d.ts → src/data/solver/backtrack/backtrackWorker.d.ts} +0 -0
  195. /package/dist/{data → src/data}/solver/backtrack/data.d.ts +0 -0
  196. /package/dist/{data → src/data}/solver/backtrack/rules/banPattern.d.ts +0 -0
  197. /package/dist/{data → src/data}/solver/backtrack/rules/cellCount.d.ts +0 -0
  198. /package/dist/{data → src/data}/solver/backtrack/rules/connectAll.d.ts +0 -0
  199. /package/dist/{data → src/data}/solver/backtrack/rules/regionArea.d.ts +0 -0
  200. /package/dist/{data → src/data}/solver/backtrack/rules/regionShape.d.ts +0 -0
  201. /package/dist/{data → src/data}/solver/backtrack/rules/sameShape.d.ts +0 -0
  202. /package/dist/{data → src/data}/solver/backtrack/rules/symbolsPerRegion.d.ts +0 -0
  203. /package/dist/{data → src/data}/solver/backtrack/rules/uniqueShape.d.ts +0 -0
  204. /package/dist/{data → src/data}/solver/backtrack/symbols/areaNumber.d.ts +0 -0
  205. /package/dist/{data → src/data}/solver/backtrack/symbols/dart.d.ts +0 -0
  206. /package/dist/{data → src/data}/solver/backtrack/symbols/directionLinker.d.ts +0 -0
  207. /package/dist/{data → src/data}/solver/backtrack/symbols/focus.d.ts +0 -0
  208. /package/dist/{data → src/data}/solver/backtrack/symbols/galaxy.d.ts +0 -0
  209. /package/dist/{data → src/data}/solver/backtrack/symbols/letter.d.ts +0 -0
  210. /package/dist/{data → src/data}/solver/backtrack/symbols/lotus.d.ts +0 -0
  211. /package/dist/{data → src/data}/solver/backtrack/symbols/minesweeper.d.ts +0 -0
  212. /package/dist/{data → src/data}/solver/backtrack/symbols/myopia.d.ts +0 -0
  213. /package/dist/{data → src/data}/solver/backtrack/symbols/viewpoint.d.ts +0 -0
  214. /package/dist/{data → src/data}/solver/cspuz/cspuzSolver.d.ts +0 -0
  215. /package/dist/{data/validateAsyncWorker.d.ts → src/data/solver/cspuz/cspuzWorker.d.ts} +0 -0
  216. /package/dist/{data → src/data}/solver/cspuz/cspuzWorker.js +0 -0
  217. /package/dist/{data → src/data}/solver/cspuz/jsonify.d.ts +0 -0
  218. /package/dist/{data → src/data}/solver/cspuz/jsonify.js +0 -0
  219. /package/dist/{data → src/data}/solver/eventIteratingSolver.d.ts +0 -0
  220. /package/dist/{data → src/data}/solver/solver.d.ts +0 -0
  221. /package/dist/{data → src/data}/solver/universal/universalSolver.d.ts +0 -0
  222. /package/dist/{data → src/data}/solver/universal/universalWorker.js +0 -0
  223. /package/dist/{data → src/data}/solver/z3/modules/areaNumberModule.d.ts +0 -0
  224. /package/dist/{data → src/data}/solver/z3/modules/cellCountModule.d.ts +0 -0
  225. /package/dist/{data → src/data}/solver/z3/modules/connectAllModule.d.ts +0 -0
  226. /package/dist/{data → src/data}/solver/z3/modules/dartModule.d.ts +0 -0
  227. /package/dist/{data → src/data}/solver/z3/modules/index.d.ts +0 -0
  228. /package/dist/{data → src/data}/solver/z3/modules/index.js +0 -0
  229. /package/dist/{data → src/data}/solver/z3/modules/letterModule.d.ts +0 -0
  230. /package/dist/{data → src/data}/solver/z3/modules/modules.gen.d.ts +0 -0
  231. /package/dist/{data → src/data}/solver/z3/modules/modules.gen.js +0 -0
  232. /package/dist/{data → src/data}/solver/z3/modules/myopiaModule.d.ts +0 -0
  233. /package/dist/{data → src/data}/solver/z3/modules/regionAreaModule.d.ts +0 -0
  234. /package/dist/{data → src/data}/solver/z3/modules/viewpointModule.d.ts +0 -0
  235. /package/dist/{data → src/data}/solver/z3/modules/z3Module.d.ts +0 -0
  236. /package/dist/{data → src/data}/solver/z3/modules/z3Module.js +0 -0
  237. /package/dist/{data → src/data}/solver/z3/utils.d.ts +0 -0
  238. /package/dist/{data → src/data}/solver/z3/utils.js +0 -0
  239. /package/dist/{data → src/data}/solver/z3/z3Solver.d.ts +0 -0
  240. /package/dist/{data → src/data}/solver/z3/z3SolverContext.d.ts +0 -0
  241. /package/dist/{data → src/data}/symbols/areaNumberSymbol.d.ts +0 -0
  242. /package/dist/{data → src/data}/symbols/customIconSymbol.d.ts +0 -0
  243. /package/dist/{data → src/data}/symbols/customSymbol.d.ts +0 -0
  244. /package/dist/{data → src/data}/symbols/customTextSymbol.d.ts +0 -0
  245. /package/dist/{data → src/data}/symbols/dartSymbol.d.ts +0 -0
  246. /package/dist/{data → src/data}/symbols/directionLinkerSymbol.d.ts +0 -0
  247. /package/dist/{data → src/data}/symbols/focusSymbol.d.ts +0 -0
  248. /package/dist/{data → src/data}/symbols/galaxySymbol.d.ts +0 -0
  249. /package/dist/{data → src/data}/symbols/hiddenSymbol.d.ts +0 -0
  250. /package/dist/{data → src/data}/symbols/houseSymbol.d.ts +0 -0
  251. /package/dist/{data → src/data}/symbols/index.d.ts +0 -0
  252. /package/dist/{data → src/data}/symbols/index.js +0 -0
  253. /package/dist/{data → src/data}/symbols/letterSymbol.d.ts +0 -0
  254. /package/dist/{data → src/data}/symbols/lotusSymbol.d.ts +0 -0
  255. /package/dist/{data → src/data}/symbols/minesweeperSymbol.d.ts +0 -0
  256. /package/dist/{data → src/data}/symbols/myopiaSymbol.d.ts +0 -0
  257. /package/dist/{data → src/data}/symbols/numberSymbol.d.ts +0 -0
  258. /package/dist/{data → src/data}/symbols/symbol.d.ts +0 -0
  259. /package/dist/{data → src/data}/symbols/viewpointSymbol.d.ts +0 -0
  260. /package/dist/{data → src/data}/tile.d.ts +0 -0
  261. /package/dist/{data → src/data}/tileConnections.d.ts +0 -0
  262. /package/dist/{data → src/data}/tileConnections.js +0 -0
  263. /package/dist/{data → src/data}/validate.d.ts +0 -0
  264. /package/dist/{data → src/data}/validate.js +0 -0
  265. /package/dist/{data → src/data}/validateAsync.d.ts +0 -0
  266. /package/dist/{data → src/data}/validateAsyncWorker.js +0 -0
  267. /package/dist/{polyfill → src/polyfill}/streamPolyfill.d.ts +0 -0
  268. /package/dist/{polyfill → src/polyfill}/streamPolyfill.js +0 -0
@@ -18,42 +18,8 @@ import { instance as connectAllInstance } from '../../rules/connectAllRule.js';
18
18
  import EventIteratingSolver from '../eventIteratingSolver.js';
19
19
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
20
20
  ('vite-apply-code-mod');
21
- class BacktrackSolver extends EventIteratingSolver {
22
- constructor() {
23
- super(...arguments);
24
- Object.defineProperty(this, "id", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: 'backtrack'
29
- });
30
- Object.defineProperty(this, "author", {
31
- enumerable: true,
32
- configurable: true,
33
- writable: true,
34
- value: 'ALaggyDev'
35
- });
36
- Object.defineProperty(this, "description", {
37
- enumerable: true,
38
- configurable: true,
39
- writable: true,
40
- value: 'Solves puzzles pretty fast using backtracking with optimizations. Support most rules and symbols (including underclued).'
41
- });
42
- }
43
- createWorker() {
44
- return new Worker(new URL(`./backtrackWorker.js`, import.meta.url), {
45
- type: 'module',
46
- });
47
- }
48
- isInstructionSupported(instructionId) {
49
- return BacktrackSolver.supportedInstrs.includes(instructionId);
50
- }
51
- }
52
- Object.defineProperty(BacktrackSolver, "supportedInstrs", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: true,
56
- value: [
21
+ export default class BacktrackSolver extends EventIteratingSolver {
22
+ static supportedInstrs = [
57
23
  areaNumberInstance.id,
58
24
  viewpointInstance.id,
59
25
  dartInstance.id,
@@ -71,6 +37,16 @@ Object.defineProperty(BacktrackSolver, "supportedInstrs", {
71
37
  cellCountInstance.id,
72
38
  sameShapeInstance.id,
73
39
  uniqueShapeInstance.id,
74
- ]
75
- });
76
- export default BacktrackSolver;
40
+ ];
41
+ id = 'backtrack';
42
+ author = 'ALaggyDev';
43
+ description = 'Solves puzzles pretty fast using backtracking with optimizations. Support most rules and symbols (including underclued).';
44
+ createWorker() {
45
+ return new Worker(new URL(`./backtrackWorker.js`, import.meta.url), {
46
+ type: 'module',
47
+ });
48
+ }
49
+ isInstructionSupported(instructionId) {
50
+ return BacktrackSolver.supportedInstrs.includes(instructionId);
51
+ }
52
+ }
@@ -182,7 +182,7 @@ function getNextTile(grid, ratings) {
182
182
  highest = scores[y][x];
183
183
  pos = { x, y };
184
184
  }
185
- fallback ?? (fallback = { x, y });
185
+ fallback ??= { x, y };
186
186
  }
187
187
  }
188
188
  return pos ?? fallback;
@@ -7,37 +7,17 @@ export var BTTile;
7
7
  BTTile[BTTile["NonExist"] = 3] = "NonExist";
8
8
  })(BTTile || (BTTile = {}));
9
9
  export class BTGridData {
10
+ tiles;
11
+ connections;
12
+ modules;
13
+ width;
14
+ height;
10
15
  constructor(tiles, connections, modules, width, height) {
11
- Object.defineProperty(this, "tiles", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: tiles
16
- });
17
- Object.defineProperty(this, "connections", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: connections
22
- });
23
- Object.defineProperty(this, "modules", {
24
- enumerable: true,
25
- configurable: true,
26
- writable: true,
27
- value: modules
28
- });
29
- Object.defineProperty(this, "width", {
30
- enumerable: true,
31
- configurable: true,
32
- writable: true,
33
- value: width
34
- });
35
- Object.defineProperty(this, "height", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: height
40
- });
16
+ this.tiles = tiles;
17
+ this.connections = connections;
18
+ this.modules = modules;
19
+ this.width = width;
20
+ this.height = height;
41
21
  this.tiles = tiles;
42
22
  this.connections = connections;
43
23
  this.modules = modules;
@@ -80,25 +60,13 @@ export class BTGridData {
80
60
  }
81
61
  }
82
62
  export class IntArray2D {
63
+ array;
64
+ width;
65
+ height;
83
66
  constructor(array, width, height) {
84
- Object.defineProperty(this, "array", {
85
- enumerable: true,
86
- configurable: true,
87
- writable: true,
88
- value: array
89
- });
90
- Object.defineProperty(this, "width", {
91
- enumerable: true,
92
- configurable: true,
93
- writable: true,
94
- value: width
95
- });
96
- Object.defineProperty(this, "height", {
97
- enumerable: true,
98
- configurable: true,
99
- writable: true,
100
- value: height
101
- });
67
+ this.array = array;
68
+ this.width = width;
69
+ this.height = height;
102
70
  this.array = array;
103
71
  this.width = width;
104
72
  this.height = height;
@@ -1,13 +1,8 @@
1
1
  import BTModule, { BTTile, colorToBTTile, } from '../data.js';
2
2
  export default class BanPatternBTModule extends BTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -1,13 +1,8 @@
1
1
  import BTModule, { BTTile, colorToBTTile, } from '../data.js';
2
2
  export default class CellCountBTModule extends BTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -1,13 +1,8 @@
1
1
  import BTModule, { IntArray2D, colorToBTTile, getOppositeColor, } from '../data.js';
2
2
  export default class ConnectAllBTModule extends BTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -1,13 +1,8 @@
1
1
  import BTModule, { BTTile, IntArray2D, colorToBTTile, } from '../data.js';
2
2
  export default class RegionAreaBTModule extends BTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -1,14 +1,9 @@
1
1
  import { normalizeShape, positionsToShape, shapeEquals, } from '../../../shapes.js';
2
2
  import BTModule, { BTTile, IntArray2D, colorToBTTile, } from '../data.js';
3
3
  export default class RegionShapeBTModule extends BTModule {
4
+ instr;
4
5
  constructor(instr) {
5
6
  super();
6
- Object.defineProperty(this, "instr", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: void 0
11
- });
12
7
  this.instr = instr;
13
8
  }
14
9
  getShapeRegions(grid) {
@@ -1,13 +1,8 @@
1
1
  import RegionShapeBTModule from './regionShape.js';
2
2
  export default class SameShapeBTModule extends RegionShapeBTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super(instr);
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -1,20 +1,10 @@
1
1
  import { Comparison } from '../../../primitives.js';
2
2
  import BTModule, { BTTile, IntArray2D, colorToBTTile, } from '../data.js';
3
3
  export default class SymbolsPerRegionBTModule extends BTModule {
4
+ instr;
5
+ symbolCount;
4
6
  constructor(instr, width, height, allSymbols) {
5
7
  super();
6
- Object.defineProperty(this, "instr", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: void 0
11
- });
12
- Object.defineProperty(this, "symbolCount", {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value: void 0
17
- });
18
8
  this.instr = instr;
19
9
  this.symbolCount = IntArray2D.create(width, height);
20
10
  for (const symbol of allSymbols) {
@@ -1,13 +1,8 @@
1
1
  import RegionShapeBTModule from './regionShape.js';
2
2
  export default class UniqueShapeBTModule extends RegionShapeBTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super(instr);
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -1,13 +1,8 @@
1
1
  import BTModule, { BTTile, IntArray2D, createOneTileResult, } from '../data.js';
2
2
  export default class AreaNumberBTModule extends BTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -1,14 +1,9 @@
1
1
  import { move } from '../../../dataHelper.js';
2
2
  import BTModule, { BTTile, IntArray2D, createOneTileResult, getOppositeColor, } from '../data.js';
3
3
  export default class DartBTModule extends BTModule {
4
+ instr;
4
5
  constructor(instr) {
5
6
  super();
6
- Object.defineProperty(this, "instr", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: void 0
11
- });
12
7
  this.instr = instr;
13
8
  }
14
9
  checkGlobal(grid) {
@@ -1,21 +1,11 @@
1
1
  import BTModule, { BTTile, IntArray2D, } from '../data.js';
2
2
  export default class DirectionLinkerBTModule extends BTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- Object.defineProperty(this, "initialPositions", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: null
16
- });
17
6
  this.instr = instr;
18
7
  }
8
+ initialPositions = null;
19
9
  getInitialPositions() {
20
10
  if (this.instr.x % 1 !== 0 && this.instr.y % 1 !== 0)
21
11
  return [
@@ -38,7 +28,7 @@ export default class DirectionLinkerBTModule extends BTModule {
38
28
  return [{ x: this.instr.x, y: this.instr.y }];
39
29
  }
40
30
  checkGlobal(grid) {
41
- this.initialPositions ?? (this.initialPositions = this.getInitialPositions());
31
+ this.initialPositions ??= this.getInitialPositions();
42
32
  const tilesNeedCheck = IntArray2D.create(grid.width, grid.height);
43
33
  const ratings = [];
44
34
  for (const pos of this.initialPositions) {
@@ -1,19 +1,9 @@
1
1
  import BTModule, { BTTile, IntArray2D, createOneTileResult, } from '../data.js';
2
2
  export default class FocusBTModule extends BTModule {
3
+ instr;
4
+ cachedCheckResult;
3
5
  constructor(instr) {
4
6
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- Object.defineProperty(this, "cachedCheckResult", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
7
  this.instr = instr;
18
8
  }
19
9
  checkGlobal(grid) {
@@ -37,7 +27,7 @@ export default class FocusBTModule extends BTModule {
37
27
  }
38
28
  if (same > this.instr.number || same + gray < this.instr.number)
39
29
  return false;
40
- this.cachedCheckResult ?? (this.cachedCheckResult = this.buildCheckAndRating(grid));
30
+ this.cachedCheckResult ??= this.buildCheckAndRating(grid);
41
31
  return this.cachedCheckResult;
42
32
  }
43
33
  buildCheckAndRating(grid) {
@@ -1,13 +1,8 @@
1
1
  import DirectionLinkerBTModule from './directionLinker.js';
2
2
  export default class GalaxyBTModule extends DirectionLinkerBTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super(instr);
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  // Translate a position in relative to a galaxy symbol
@@ -1,19 +1,9 @@
1
1
  import BTModule, { BTTile, IntArray2D, } from '../data.js';
2
2
  export default class LetterBTModule extends BTModule {
3
+ letters;
4
+ letterGrid;
3
5
  constructor(instrs, width, height) {
4
6
  super();
5
- Object.defineProperty(this, "letters", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- Object.defineProperty(this, "letterGrid", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
7
  this.letters = [];
18
8
  this.letterGrid = IntArray2D.create(width, height);
19
9
  const letterMap = new Map();
@@ -2,14 +2,9 @@ import { Orientation } from '../../../primitives.js';
2
2
  import { BTTile } from '../data.js';
3
3
  import DirectionLinkerBTModule from './directionLinker.js';
4
4
  export default class LotusBTModule extends DirectionLinkerBTModule {
5
+ instr;
5
6
  constructor(instr) {
6
7
  super(instr);
7
- Object.defineProperty(this, "instr", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: void 0
12
- });
13
8
  this.instr = instr;
14
9
  }
15
10
  // Translate a position in relative to a lotus symbol
@@ -1,19 +1,9 @@
1
1
  import BTModule, { BTTile, IntArray2D, createOneTileResult, getOppositeColor, } from '../data.js';
2
2
  export default class MinesweeperBTModule extends BTModule {
3
+ instr;
4
+ cachedCheckResult;
3
5
  constructor(instr) {
4
6
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- Object.defineProperty(this, "cachedCheckResult", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
7
  this.instr = instr;
18
8
  }
19
9
  checkGlobal(grid) {
@@ -35,7 +25,7 @@ export default class MinesweeperBTModule extends BTModule {
35
25
  }
36
26
  if (opposite > this.instr.number || opposite + gray < this.instr.number)
37
27
  return false;
38
- this.cachedCheckResult ?? (this.cachedCheckResult = this.buildCheckAndRating(grid));
28
+ this.cachedCheckResult ??= this.buildCheckAndRating(grid);
39
29
  return this.cachedCheckResult;
40
30
  }
41
31
  buildCheckAndRating(grid) {
@@ -2,14 +2,9 @@ import { move } from '../../../dataHelper.js';
2
2
  import { ORIENTATIONS, Orientation } from '../../../primitives.js';
3
3
  import BTModule, { BTTile, createOneTileResult, getOppositeColor, } from '../data.js';
4
4
  export default class MyopiaBTModule extends BTModule {
5
+ instr;
5
6
  constructor(instr) {
6
7
  super();
7
- Object.defineProperty(this, "instr", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: void 0
12
- });
13
8
  this.instr = instr;
14
9
  }
15
10
  checkGlobal(grid) {
@@ -1,13 +1,8 @@
1
1
  import BTModule, { BTTile, IntArray2D, createOneTileResult, getOppositeColor, } from '../data.js';
2
2
  export default class ViewpointBTModule extends BTModule {
3
+ instr;
3
4
  constructor(instr) {
4
5
  super();
5
- Object.defineProperty(this, "instr", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
6
  this.instr = instr;
12
7
  }
13
8
  checkGlobal(grid) {
@@ -19,28 +19,28 @@ import GridData from '../../grid.js';
19
19
  import { Color } from '../../primitives.js';
20
20
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
21
21
  ('vite-apply-code-mod');
22
- class CspuzSolver extends EventIteratingSolver {
23
- constructor() {
24
- super(...arguments);
25
- Object.defineProperty(this, "id", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: 'cspuz'
30
- });
31
- Object.defineProperty(this, "author", {
32
- enumerable: true,
33
- configurable: true,
34
- writable: true,
35
- value: 'semiexp'
36
- });
37
- Object.defineProperty(this, "description", {
38
- enumerable: true,
39
- configurable: true,
40
- writable: true,
41
- value: 'A blazingly fast WebAssembly solver that supports most rules and symbols (including underclued).'
42
- });
43
- }
22
+ export default class CspuzSolver extends EventIteratingSolver {
23
+ static supportedInstrs = [
24
+ minesweeperInstance.id,
25
+ areaNumberInstance.id,
26
+ letterInstance.id,
27
+ dartInstance.id,
28
+ viewpointInstance.id,
29
+ lotusInstance.id,
30
+ galaxyInstance.id,
31
+ connectAllInstance.id,
32
+ banPatternInstance.id,
33
+ sameShapeInstance.id,
34
+ uniqueShapeInstance.id,
35
+ regionAreaInstance.id,
36
+ cellCountInstance.id,
37
+ offByXInstance.id,
38
+ undercluedInstance.id,
39
+ symbolsPerRegionInstance.id,
40
+ ];
41
+ id = 'cspuz';
42
+ author = 'semiexp';
43
+ description = 'A blazingly fast WebAssembly solver that supports most rules and symbols (including underclued).';
44
44
  createWorker() {
45
45
  return new Worker(new URL('./cspuzWorker.js', import.meta.url), {
46
46
  type: 'module',
@@ -88,27 +88,3 @@ class CspuzSolver extends EventIteratingSolver {
88
88
  }
89
89
  }
90
90
  }
91
- Object.defineProperty(CspuzSolver, "supportedInstrs", {
92
- enumerable: true,
93
- configurable: true,
94
- writable: true,
95
- value: [
96
- minesweeperInstance.id,
97
- areaNumberInstance.id,
98
- letterInstance.id,
99
- dartInstance.id,
100
- viewpointInstance.id,
101
- lotusInstance.id,
102
- galaxyInstance.id,
103
- connectAllInstance.id,
104
- banPatternInstance.id,
105
- sameShapeInstance.id,
106
- uniqueShapeInstance.id,
107
- regionAreaInstance.id,
108
- cellCountInstance.id,
109
- offByXInstance.id,
110
- undercluedInstance.id,
111
- symbolsPerRegionInstance.id,
112
- ]
113
- });
114
- export default CspuzSolver;
@@ -2,15 +2,7 @@ import { Serializer } from '../serializer/allSerializers.js';
2
2
  import Solver from './solver.js';
3
3
  import { EventIterator } from 'event-iterator';
4
4
  export default class EventIteratingSolver extends Solver {
5
- constructor() {
6
- super(...arguments);
7
- Object.defineProperty(this, "supportsCancellation", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: true
12
- });
13
- }
5
+ supportsCancellation = true;
14
6
  isEnvironmentSupported() {
15
7
  try {
16
8
  const worker = this.createWorker();
@@ -23,10 +15,14 @@ export default class EventIteratingSolver extends Solver {
23
15
  }
24
16
  async *solve(grid, abortSignal) {
25
17
  const worker = this.createWorker();
26
- const terminateHandler = () => worker.terminate();
27
- abortSignal?.addEventListener('abort', terminateHandler);
18
+ let terminateHandler;
28
19
  try {
29
20
  const iterator = new EventIterator(({ push, stop, fail }) => {
21
+ terminateHandler = () => {
22
+ worker.terminate();
23
+ stop();
24
+ };
25
+ abortSignal?.addEventListener('abort', terminateHandler);
30
26
  worker.postMessage(Serializer.stringifyGrid(grid.resetTiles()));
31
27
  worker.addEventListener('message', (e) => {
32
28
  if (e.data) {
@@ -51,7 +47,8 @@ export default class EventIteratingSolver extends Solver {
51
47
  }
52
48
  finally {
53
49
  worker.terminate();
54
- abortSignal?.removeEventListener('abort', terminateHandler);
50
+ if (terminateHandler)
51
+ abortSignal?.removeEventListener('abort', terminateHandler);
55
52
  }
56
53
  }
57
54
  }
@@ -5,14 +5,6 @@ import { allSymbols } from '../symbols/index.js';
5
5
  * Base class that all solvers must extend.
6
6
  */
7
7
  export default class Solver {
8
- constructor() {
9
- Object.defineProperty(this, "environmentCheck", {
10
- enumerable: true,
11
- configurable: true,
12
- writable: true,
13
- value: CachedAccess.of(() => this.isEnvironmentSupported())
14
- });
15
- }
16
8
  /**
17
9
  * Check if the solver supports the current browser environment. This method is called once when the user first clicks
18
10
  * the "Solve" button, and the result is cached for the duration of the editor session.
@@ -25,6 +17,7 @@ export default class Solver {
25
17
  isEnvironmentSupported() {
26
18
  return Promise.resolve(true);
27
19
  }
20
+ environmentCheck = CachedAccess.of(() => this.isEnvironmentSupported());
28
21
  /**
29
22
  * Check if the solver supports the given instruction. This is used to render a small indication in the UI for each
30
23
  * instruction in the editor.