@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
@@ -3,7 +3,42 @@ import GridData from '../grid.js';
3
3
  import { array } from '../dataHelper.js';
4
4
  import { Color } from '../primitives.js';
5
5
  import NumberSymbol from './numberSymbol.js';
6
- class HouseSymbol extends NumberSymbol {
6
+ export default class HouseSymbol extends NumberSymbol {
7
+ x;
8
+ y;
9
+ number;
10
+ title = 'House';
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
+ type: ConfigType.Number,
28
+ default: 2,
29
+ field: 'number',
30
+ description: 'Number',
31
+ explanation: 'Number of houses in this region',
32
+ configurable: true,
33
+ },
34
+ ]);
35
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['bbbww', 'wwwbw', 'wbbbw', 'wwwww'])
36
+ .addSymbol(new HouseSymbol(0, 0, 2))
37
+ .addSymbol(new HouseSymbol(2, 0, 2))
38
+ .addSymbol(new HouseSymbol(3, 0, 2))
39
+ .addSymbol(new HouseSymbol(2, 1, 2))
40
+ .addSymbol(new HouseSymbol(3, 1, 2))
41
+ .addSymbol(new HouseSymbol(1, 2, 2)));
7
42
  /**
8
43
  * **Houses must connect to exactly one other house**
9
44
  *
@@ -13,30 +48,9 @@ class HouseSymbol extends NumberSymbol {
13
48
  */
14
49
  constructor(x, y, number) {
15
50
  super(x, y, number);
16
- Object.defineProperty(this, "x", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: x
21
- });
22
- Object.defineProperty(this, "y", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: y
27
- });
28
- Object.defineProperty(this, "number", {
29
- enumerable: true,
30
- configurable: true,
31
- writable: true,
32
- value: number
33
- });
34
- Object.defineProperty(this, "title", {
35
- enumerable: true,
36
- configurable: true,
37
- writable: true,
38
- value: 'House'
39
- });
51
+ this.x = x;
52
+ this.y = y;
53
+ this.number = number;
40
54
  }
41
55
  get id() {
42
56
  return `house`;
@@ -85,46 +99,4 @@ class HouseSymbol extends NumberSymbol {
85
99
  return new HouseSymbol(x ?? this.x, y ?? this.y, number ?? this.number);
86
100
  }
87
101
  }
88
- Object.defineProperty(HouseSymbol, "CONFIGS", {
89
- enumerable: true,
90
- configurable: true,
91
- writable: true,
92
- value: Object.freeze([
93
- {
94
- type: ConfigType.Number,
95
- default: 0,
96
- field: 'x',
97
- description: 'X',
98
- configurable: false,
99
- },
100
- {
101
- type: ConfigType.Number,
102
- default: 0,
103
- field: 'y',
104
- description: 'Y',
105
- configurable: false,
106
- },
107
- {
108
- type: ConfigType.Number,
109
- default: 2,
110
- field: 'number',
111
- description: 'Number',
112
- explanation: 'Number of houses in this region',
113
- configurable: true,
114
- },
115
- ])
116
- });
117
- Object.defineProperty(HouseSymbol, "EXAMPLE_GRID", {
118
- enumerable: true,
119
- configurable: true,
120
- writable: true,
121
- value: Object.freeze(GridData.create(['bbbww', 'wwwbw', 'wbbbw', 'wwwww'])
122
- .addSymbol(new HouseSymbol(0, 0, 2))
123
- .addSymbol(new HouseSymbol(2, 0, 2))
124
- .addSymbol(new HouseSymbol(3, 0, 2))
125
- .addSymbol(new HouseSymbol(2, 1, 2))
126
- .addSymbol(new HouseSymbol(3, 1, 2))
127
- .addSymbol(new HouseSymbol(1, 2, 2)))
128
- });
129
- export default HouseSymbol;
130
102
  export const instance = new HouseSymbol(0, 0, 2);
@@ -3,7 +3,43 @@ import GridData from '../grid.js';
3
3
  import { array } from '../dataHelper.js';
4
4
  import { Color, State } from '../primitives.js';
5
5
  import Symbol from './symbol.js';
6
- class LetterSymbol extends Symbol {
6
+ export default class LetterSymbol extends Symbol {
7
+ x;
8
+ y;
9
+ letter;
10
+ title = 'Letter';
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
+ type: ConfigType.String,
28
+ default: 'A',
29
+ field: 'letter',
30
+ description: 'Letter',
31
+ explanation: 'Use single uppercase letters by convention.',
32
+ configurable: true,
33
+ },
34
+ ]);
35
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['bbbww', 'wwbbw', 'wwbbb', 'bwwww'])
36
+ .addSymbol(new LetterSymbol(0, 0, 'B'))
37
+ .addSymbol(new LetterSymbol(3, 0, 'A'))
38
+ .addSymbol(new LetterSymbol(4, 1, 'A'))
39
+ .addSymbol(new LetterSymbol(3, 2, 'B'))
40
+ .addSymbol(new LetterSymbol(1, 1, 'C'))
41
+ .addSymbol(new LetterSymbol(0, 2, 'C'))
42
+ .addSymbol(new LetterSymbol(4, 3, 'C')));
7
43
  /**
8
44
  * **Letters must be sorted into one type per area**
9
45
  *
@@ -13,30 +49,9 @@ class LetterSymbol extends Symbol {
13
49
  */
14
50
  constructor(x, y, letter) {
15
51
  super(x, y);
16
- Object.defineProperty(this, "x", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: x
21
- });
22
- Object.defineProperty(this, "y", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: y
27
- });
28
- Object.defineProperty(this, "letter", {
29
- enumerable: true,
30
- configurable: true,
31
- writable: true,
32
- value: letter
33
- });
34
- Object.defineProperty(this, "title", {
35
- enumerable: true,
36
- configurable: true,
37
- writable: true,
38
- value: 'Letter'
39
- });
52
+ this.x = x;
53
+ this.y = y;
54
+ this.letter = letter;
40
55
  this.letter = letter;
41
56
  }
42
57
  get id() {
@@ -98,47 +113,4 @@ class LetterSymbol extends Symbol {
98
113
  return this.copyWith({ letter });
99
114
  }
100
115
  }
101
- Object.defineProperty(LetterSymbol, "CONFIGS", {
102
- enumerable: true,
103
- configurable: true,
104
- writable: true,
105
- value: Object.freeze([
106
- {
107
- type: ConfigType.Number,
108
- default: 0,
109
- field: 'x',
110
- description: 'X',
111
- configurable: false,
112
- },
113
- {
114
- type: ConfigType.Number,
115
- default: 0,
116
- field: 'y',
117
- description: 'Y',
118
- configurable: false,
119
- },
120
- {
121
- type: ConfigType.String,
122
- default: 'A',
123
- field: 'letter',
124
- description: 'Letter',
125
- explanation: 'Use single uppercase letters by convention.',
126
- configurable: true,
127
- },
128
- ])
129
- });
130
- Object.defineProperty(LetterSymbol, "EXAMPLE_GRID", {
131
- enumerable: true,
132
- configurable: true,
133
- writable: true,
134
- value: Object.freeze(GridData.create(['bbbww', 'wwbbw', 'wwbbb', 'bwwww'])
135
- .addSymbol(new LetterSymbol(0, 0, 'B'))
136
- .addSymbol(new LetterSymbol(3, 0, 'A'))
137
- .addSymbol(new LetterSymbol(4, 1, 'A'))
138
- .addSymbol(new LetterSymbol(3, 2, 'B'))
139
- .addSymbol(new LetterSymbol(1, 1, 'C'))
140
- .addSymbol(new LetterSymbol(0, 2, 'C'))
141
- .addSymbol(new LetterSymbol(4, 3, 'C')))
142
- });
143
- export default LetterSymbol;
144
116
  export const instance = new LetterSymbol(0, 0, 'A');
@@ -2,7 +2,61 @@ import { ConfigType } from '../config.js';
2
2
  import GridData from '../grid.js';
3
3
  import { Direction, Orientation, State } from '../primitives.js';
4
4
  import DirectionLinkerSymbol from './directionLinkerSymbol.js';
5
- class LotusSymbol extends DirectionLinkerSymbol {
5
+ export default class LotusSymbol extends DirectionLinkerSymbol {
6
+ x;
7
+ y;
8
+ orientation;
9
+ title = 'Lotus';
10
+ static linkedDirectionsFromOrientation = {
11
+ [Orientation.Up]: {
12
+ [Direction.Left]: Direction.Right,
13
+ [Direction.Up]: Direction.Up,
14
+ [Direction.Right]: Direction.Left,
15
+ [Direction.Down]: Direction.Down,
16
+ },
17
+ [Orientation.UpRight]: {
18
+ [Direction.Left]: Direction.Down,
19
+ [Direction.Up]: Direction.Right,
20
+ [Direction.Right]: Direction.Up,
21
+ [Direction.Down]: Direction.Left,
22
+ },
23
+ [Orientation.Right]: {
24
+ [Direction.Left]: Direction.Left,
25
+ [Direction.Up]: Direction.Down,
26
+ [Direction.Right]: Direction.Right,
27
+ [Direction.Down]: Direction.Up,
28
+ },
29
+ [Orientation.DownRight]: {
30
+ [Direction.Left]: Direction.Up,
31
+ [Direction.Up]: Direction.Left,
32
+ [Direction.Right]: Direction.Down,
33
+ [Direction.Down]: Direction.Right,
34
+ },
35
+ [Orientation.Down]: {
36
+ [Direction.Left]: Direction.Right,
37
+ [Direction.Up]: Direction.Up,
38
+ [Direction.Right]: Direction.Left,
39
+ [Direction.Down]: Direction.Down,
40
+ },
41
+ [Orientation.DownLeft]: {
42
+ [Direction.Left]: Direction.Down,
43
+ [Direction.Up]: Direction.Right,
44
+ [Direction.Right]: Direction.Up,
45
+ [Direction.Down]: Direction.Left,
46
+ },
47
+ [Orientation.Left]: {
48
+ [Direction.Left]: Direction.Left,
49
+ [Direction.Up]: Direction.Down,
50
+ [Direction.Right]: Direction.Right,
51
+ [Direction.Down]: Direction.Up,
52
+ },
53
+ [Orientation.UpLeft]: {
54
+ [Direction.Left]: Direction.Up,
55
+ [Direction.Up]: Direction.Left,
56
+ [Direction.Right]: Direction.Down,
57
+ [Direction.Down]: Direction.Right,
58
+ },
59
+ };
6
60
  /**
7
61
  * **Areas containing this symbol must be symmetrical**
8
62
  *
@@ -12,30 +66,9 @@ class LotusSymbol extends DirectionLinkerSymbol {
12
66
  */
13
67
  constructor(x, y, orientation) {
14
68
  super(x, y);
15
- Object.defineProperty(this, "x", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: x
20
- });
21
- Object.defineProperty(this, "y", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: true,
25
- value: y
26
- });
27
- Object.defineProperty(this, "orientation", {
28
- enumerable: true,
29
- configurable: true,
30
- writable: true,
31
- value: orientation
32
- });
33
- Object.defineProperty(this, "title", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: 'Lotus'
38
- });
69
+ this.x = x;
70
+ this.y = y;
71
+ this.orientation = orientation;
39
72
  super.changeDirections(LotusSymbol.linkedDirectionsFromOrientation[orientation]);
40
73
  }
41
74
  get id() {
@@ -96,60 +129,4 @@ class LotusSymbol extends DirectionLinkerSymbol {
96
129
  return new LotusSymbol(x ?? this.x, y ?? this.y, orientation ?? this.orientation);
97
130
  }
98
131
  }
99
- Object.defineProperty(LotusSymbol, "linkedDirectionsFromOrientation", {
100
- enumerable: true,
101
- configurable: true,
102
- writable: true,
103
- value: {
104
- [Orientation.Up]: {
105
- [Direction.Left]: Direction.Right,
106
- [Direction.Up]: Direction.Up,
107
- [Direction.Right]: Direction.Left,
108
- [Direction.Down]: Direction.Down,
109
- },
110
- [Orientation.UpRight]: {
111
- [Direction.Left]: Direction.Down,
112
- [Direction.Up]: Direction.Right,
113
- [Direction.Right]: Direction.Up,
114
- [Direction.Down]: Direction.Left,
115
- },
116
- [Orientation.Right]: {
117
- [Direction.Left]: Direction.Left,
118
- [Direction.Up]: Direction.Down,
119
- [Direction.Right]: Direction.Right,
120
- [Direction.Down]: Direction.Up,
121
- },
122
- [Orientation.DownRight]: {
123
- [Direction.Left]: Direction.Up,
124
- [Direction.Up]: Direction.Left,
125
- [Direction.Right]: Direction.Down,
126
- [Direction.Down]: Direction.Right,
127
- },
128
- [Orientation.Down]: {
129
- [Direction.Left]: Direction.Right,
130
- [Direction.Up]: Direction.Up,
131
- [Direction.Right]: Direction.Left,
132
- [Direction.Down]: Direction.Down,
133
- },
134
- [Orientation.DownLeft]: {
135
- [Direction.Left]: Direction.Down,
136
- [Direction.Up]: Direction.Right,
137
- [Direction.Right]: Direction.Up,
138
- [Direction.Down]: Direction.Left,
139
- },
140
- [Orientation.Left]: {
141
- [Direction.Left]: Direction.Left,
142
- [Direction.Up]: Direction.Down,
143
- [Direction.Right]: Direction.Right,
144
- [Direction.Down]: Direction.Up,
145
- },
146
- [Orientation.UpLeft]: {
147
- [Direction.Left]: Direction.Up,
148
- [Direction.Up]: Direction.Left,
149
- [Direction.Right]: Direction.Down,
150
- [Direction.Down]: Direction.Right,
151
- },
152
- }
153
- });
154
- export default LotusSymbol;
155
132
  export const instance = new LotusSymbol(0, 0, Orientation.Up);
@@ -2,7 +2,36 @@ import { ConfigType } from '../config.js';
2
2
  import GridData from '../grid.js';
3
3
  import { Color } from '../primitives.js';
4
4
  import NumberSymbol from './numberSymbol.js';
5
- class MinesweeperSymbol extends NumberSymbol {
5
+ export default class MinesweeperSymbol extends NumberSymbol {
6
+ title = 'Minesweeper Number';
7
+ static CONFIGS = Object.freeze([
8
+ {
9
+ type: ConfigType.Number,
10
+ default: 0,
11
+ field: 'x',
12
+ description: 'X',
13
+ configurable: false,
14
+ },
15
+ {
16
+ type: ConfigType.Number,
17
+ default: 0,
18
+ field: 'y',
19
+ description: 'Y',
20
+ configurable: false,
21
+ },
22
+ {
23
+ type: ConfigType.Number,
24
+ default: 1,
25
+ field: 'number',
26
+ description: 'Number',
27
+ configurable: true,
28
+ },
29
+ ]);
30
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['wwbww', 'wwbwb', 'wwbwb', 'bwwww'])
31
+ .addSymbol(new MinesweeperSymbol(1, 1, 3))
32
+ .addSymbol(new MinesweeperSymbol(3, 1, 5))
33
+ .addSymbol(new MinesweeperSymbol(4, 1, 4))
34
+ .addSymbol(new MinesweeperSymbol(2, 3, 1)));
6
35
  /**
7
36
  * **Minesweeper Numbers count opposite cells in 8 adjacent spaces**
8
37
  *
@@ -12,12 +41,6 @@ class MinesweeperSymbol extends NumberSymbol {
12
41
  */
13
42
  constructor(x, y, number) {
14
43
  super(x, y, number);
15
- Object.defineProperty(this, "title", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: 'Minesweeper Number'
20
- });
21
44
  }
22
45
  get id() {
23
46
  return `minesweeper`;
@@ -80,43 +103,4 @@ class MinesweeperSymbol extends NumberSymbol {
80
103
  return this.copyWith({ number });
81
104
  }
82
105
  }
83
- Object.defineProperty(MinesweeperSymbol, "CONFIGS", {
84
- enumerable: true,
85
- configurable: true,
86
- writable: true,
87
- value: Object.freeze([
88
- {
89
- type: ConfigType.Number,
90
- default: 0,
91
- field: 'x',
92
- description: 'X',
93
- configurable: false,
94
- },
95
- {
96
- type: ConfigType.Number,
97
- default: 0,
98
- field: 'y',
99
- description: 'Y',
100
- configurable: false,
101
- },
102
- {
103
- type: ConfigType.Number,
104
- default: 1,
105
- field: 'number',
106
- description: 'Number',
107
- configurable: true,
108
- },
109
- ])
110
- });
111
- Object.defineProperty(MinesweeperSymbol, "EXAMPLE_GRID", {
112
- enumerable: true,
113
- configurable: true,
114
- writable: true,
115
- value: Object.freeze(GridData.create(['wwbww', 'wwbwb', 'wwbwb', 'bwwww'])
116
- .addSymbol(new MinesweeperSymbol(1, 1, 3))
117
- .addSymbol(new MinesweeperSymbol(3, 1, 5))
118
- .addSymbol(new MinesweeperSymbol(4, 1, 4))
119
- .addSymbol(new MinesweeperSymbol(2, 3, 1)))
120
- });
121
- export default MinesweeperSymbol;
122
106
  export const instance = new MinesweeperSymbol(0, 0, 1);
@@ -3,10 +3,52 @@ import { move } from '../dataHelper.js';
3
3
  import GridData from '../grid.js';
4
4
  import { Color, ORIENTATIONS, Orientation, State, orientationToggle, } from '../primitives.js';
5
5
  import Symbol from './symbol.js';
6
- class MyopiaSymbol extends Symbol {
6
+ export default class MyopiaSymbol extends Symbol {
7
+ diagonals;
8
+ directions;
7
9
  get title() {
8
10
  return this.diagonals ? 'Framed Myopia Arrow' : 'Myopia Arrow';
9
11
  }
12
+ static CONFIGS = Object.freeze([
13
+ {
14
+ type: ConfigType.Number,
15
+ default: 0,
16
+ field: 'x',
17
+ description: 'X',
18
+ configurable: false,
19
+ },
20
+ {
21
+ type: ConfigType.Number,
22
+ default: 0,
23
+ field: 'y',
24
+ description: 'Y',
25
+ configurable: false,
26
+ },
27
+ {
28
+ type: ConfigType.Boolean,
29
+ default: false,
30
+ field: 'diagonals',
31
+ description: 'Include diagonal directions',
32
+ explanation: 'Whether to check diagonals as well. Must be enabled for diagonal arrows.',
33
+ configurable: true,
34
+ },
35
+ {
36
+ type: ConfigType.OrientationToggle,
37
+ default: orientationToggle(Orientation.Up, Orientation.Right),
38
+ field: 'directions',
39
+ description: 'Directions',
40
+ explanation: 'The directions in which an arrow is pointing. A dot will be displayed if no arrows are present.',
41
+ configurable: true,
42
+ },
43
+ ]);
44
+ static EXAMPLE_GRID = Object.freeze(GridData.create(['wbwww', 'bwwwb', 'wwwww', 'wbwww']).withSymbols([
45
+ new MyopiaSymbol(1, 1, false, orientationToggle(Orientation.Up, Orientation.Left)),
46
+ new MyopiaSymbol(4, 3, false, orientationToggle(Orientation.Up)),
47
+ ]));
48
+ static EXAMPLE_DIAGONAL_GRID = Object.freeze(GridData.create(['wbwww', 'bwwwb', 'wwwww', 'wbwww']).withSymbols([
49
+ new MyopiaSymbol(1, 2, true, orientationToggle(Orientation.UpLeft, Orientation.Down)),
50
+ new MyopiaSymbol(3, 2, true, orientationToggle(Orientation.UpRight)),
51
+ ]));
10
52
  /**
11
53
  * **Viewpoint Numbers count visible cells in the four directions**
12
54
  * @param x - The x-coordinate of the symbol.
@@ -16,18 +58,8 @@ class MyopiaSymbol extends Symbol {
16
58
  */
17
59
  constructor(x, y, diagonals, directions) {
18
60
  super(x, y);
19
- Object.defineProperty(this, "diagonals", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: diagonals
24
- });
25
- Object.defineProperty(this, "directions", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: directions
30
- });
61
+ this.diagonals = diagonals;
62
+ this.directions = directions;
31
63
  this.directions = directions;
32
64
  this.diagonals =
33
65
  directions[Orientation.DownLeft] ||
@@ -147,60 +179,4 @@ class MyopiaSymbol extends Symbol {
147
179
  return this.copyWith({ diagonals });
148
180
  }
149
181
  }
150
- Object.defineProperty(MyopiaSymbol, "CONFIGS", {
151
- enumerable: true,
152
- configurable: true,
153
- writable: true,
154
- value: Object.freeze([
155
- {
156
- type: ConfigType.Number,
157
- default: 0,
158
- field: 'x',
159
- description: 'X',
160
- configurable: false,
161
- },
162
- {
163
- type: ConfigType.Number,
164
- default: 0,
165
- field: 'y',
166
- description: 'Y',
167
- configurable: false,
168
- },
169
- {
170
- type: ConfigType.Boolean,
171
- default: false,
172
- field: 'diagonals',
173
- description: 'Include diagonal directions',
174
- explanation: 'Whether to check diagonals as well. Must be enabled for diagonal arrows.',
175
- configurable: true,
176
- },
177
- {
178
- type: ConfigType.OrientationToggle,
179
- default: orientationToggle(Orientation.Up, Orientation.Right),
180
- field: 'directions',
181
- description: 'Directions',
182
- explanation: 'The directions in which an arrow is pointing. A dot will be displayed if no arrows are present.',
183
- configurable: true,
184
- },
185
- ])
186
- });
187
- Object.defineProperty(MyopiaSymbol, "EXAMPLE_GRID", {
188
- enumerable: true,
189
- configurable: true,
190
- writable: true,
191
- value: Object.freeze(GridData.create(['wbwww', 'bwwwb', 'wwwww', 'wbwww']).withSymbols([
192
- new MyopiaSymbol(1, 1, false, orientationToggle(Orientation.Up, Orientation.Left)),
193
- new MyopiaSymbol(4, 3, false, orientationToggle(Orientation.Up)),
194
- ]))
195
- });
196
- Object.defineProperty(MyopiaSymbol, "EXAMPLE_DIAGONAL_GRID", {
197
- enumerable: true,
198
- configurable: true,
199
- writable: true,
200
- value: Object.freeze(GridData.create(['wbwww', 'bwwwb', 'wwwww', 'wbwww']).withSymbols([
201
- new MyopiaSymbol(1, 2, true, orientationToggle(Orientation.UpLeft, Orientation.Down)),
202
- new MyopiaSymbol(3, 2, true, orientationToggle(Orientation.UpRight)),
203
- ]))
204
- });
205
- export default MyopiaSymbol;
206
182
  export const instance = new MyopiaSymbol(0, 0, false, orientationToggle(Orientation.Up, Orientation.Right));
@@ -4,26 +4,14 @@ import Symbol from './symbol.js';
4
4
  * All symbols which contain a number should extend this class to be compatible with off by X rules.
5
5
  */
6
6
  export default class NumberSymbol extends Symbol {
7
+ x;
8
+ y;
9
+ number;
7
10
  constructor(x, y, number) {
8
11
  super(x, y);
9
- Object.defineProperty(this, "x", {
10
- enumerable: true,
11
- configurable: true,
12
- writable: true,
13
- value: x
14
- });
15
- Object.defineProperty(this, "y", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: y
20
- });
21
- Object.defineProperty(this, "number", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: true,
25
- value: number
26
- });
12
+ this.x = x;
13
+ this.y = y;
14
+ this.number = number;
27
15
  this.number = number;
28
16
  }
29
17
  validateSymbol(grid) {
@@ -1,19 +1,11 @@
1
1
  import Instruction from '../instruction.js';
2
2
  export default class Symbol extends Instruction {
3
+ x;
4
+ y;
3
5
  constructor(x, y) {
4
6
  super();
5
- Object.defineProperty(this, "x", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: x
10
- });
11
- Object.defineProperty(this, "y", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: y
16
- });
7
+ this.x = x;
8
+ this.y = y;
17
9
  this.x = x;
18
10
  this.y = y;
19
11
  }