@sudobility/sudojo_types 1.2.4 → 1.2.6

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.
package/dist/index.cjs CHANGED
@@ -4,7 +4,7 @@
4
4
  * TypeScript types for Sudojo API - Sudoku learning platform
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = void 0;
7
+ exports.DEFAULT_SCRAMBLE_CONFIG = exports.TOTAL_CELLS = exports.BLOCK_SIZE = exports.BOARD_SIZE = exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = exports.HINT_LEVEL_LIMITS = void 0;
8
8
  exports.successResponse = successResponse;
9
9
  exports.errorResponse = errorResponse;
10
10
  exports.techniqueToBit = techniqueToBit;
@@ -14,6 +14,10 @@ exports.getBeltForLevel = getBeltForLevel;
14
14
  exports.getAllBelts = getAllBelts;
15
15
  exports.getBeltIconSvg = getBeltIconSvg;
16
16
  exports.getBeltIconForLevel = getBeltIconForLevel;
17
+ exports.parseBoardString = parseBoardString;
18
+ exports.stringifyBoard = stringifyBoard;
19
+ exports.scrambleBoard = scrambleBoard;
20
+ exports.noScramble = noScramble;
17
21
  /** Create a success response */
18
22
  function successResponse(data) {
19
23
  return {
@@ -30,6 +34,12 @@ function errorResponse(error) {
30
34
  timestamp: new Date().toISOString(),
31
35
  };
32
36
  }
37
+ /** Hint level limits by entitlement */
38
+ exports.HINT_LEVEL_LIMITS = {
39
+ red_belt: Infinity,
40
+ blue_belt: 5,
41
+ free: 3,
42
+ };
33
43
  // =============================================================================
34
44
  // Technique Bitfield (matches SudokuDefines.h enum SudokuTechnique)
35
45
  // =============================================================================
@@ -181,4 +191,325 @@ function getBeltIconForLevel(levelIndex, width = 100, height = 40) {
181
191
  return null;
182
192
  return getBeltIconSvg(belt.hex, width, height);
183
193
  }
194
+ // =============================================================================
195
+ // Board Utilities (for parsing and manipulating Sudoku boards)
196
+ // =============================================================================
197
+ /** Board size constant (9x9 grid) */
198
+ exports.BOARD_SIZE = 9;
199
+ /** Block size constant (3x3 blocks) */
200
+ exports.BLOCK_SIZE = 3;
201
+ /** Total cells in a board */
202
+ exports.TOTAL_CELLS = exports.BOARD_SIZE * exports.BOARD_SIZE;
203
+ /**
204
+ * Parses an 81-character board string into a 2D array of numbers
205
+ * @param boardString - 81-character string where '0' or '.' represents empty cells
206
+ * @returns 9x9 array of numbers (0 = empty, 1-9 = filled)
207
+ */
208
+ function parseBoardString(boardString) {
209
+ if (boardString.length !== exports.TOTAL_CELLS) {
210
+ throw new Error(`Invalid board string length: expected ${exports.TOTAL_CELLS}, got ${boardString.length}`);
211
+ }
212
+ const board = [];
213
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
214
+ const rowArray = [];
215
+ for (let col = 0; col < exports.BOARD_SIZE; col++) {
216
+ const index = row * exports.BOARD_SIZE + col;
217
+ const char = boardString[index];
218
+ if (char === undefined) {
219
+ throw new Error(`Missing character at position ${index}`);
220
+ }
221
+ const value = char === '.' ? 0 : parseInt(char, 10);
222
+ if (isNaN(value) || value < 0 || value > 9) {
223
+ throw new Error(`Invalid character at position ${index}: '${char}'`);
224
+ }
225
+ rowArray.push(value);
226
+ }
227
+ board.push(rowArray);
228
+ }
229
+ return board;
230
+ }
231
+ /**
232
+ * Converts a 2D number array back to an 81-character string
233
+ * @param board - 9x9 array of numbers
234
+ * @returns 81-character string
235
+ */
236
+ function stringifyBoard(board) {
237
+ if (board.length !== exports.BOARD_SIZE) {
238
+ throw new Error(`Invalid board rows: expected ${exports.BOARD_SIZE}, got ${board.length}`);
239
+ }
240
+ let result = '';
241
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
242
+ if (board[row]?.length !== exports.BOARD_SIZE) {
243
+ throw new Error(`Invalid row ${row} length: expected ${exports.BOARD_SIZE}, got ${board[row]?.length}`);
244
+ }
245
+ for (let col = 0; col < exports.BOARD_SIZE; col++) {
246
+ const value = board[row]?.[col];
247
+ if (value === undefined || value < 0 || value > 9) {
248
+ throw new Error(`Invalid value at (${row}, ${col}): ${value}`);
249
+ }
250
+ result += value.toString();
251
+ }
252
+ }
253
+ return result;
254
+ }
255
+ /**
256
+ * Default scramble configuration (all transformations enabled)
257
+ */
258
+ exports.DEFAULT_SCRAMBLE_CONFIG = {
259
+ scrambleRows: true,
260
+ scrambleColumns: true,
261
+ scrambleRowBlocks: true,
262
+ scrambleColumnBlocks: true,
263
+ scrambleDigits: true,
264
+ rotate: true,
265
+ mirror: true,
266
+ };
267
+ /**
268
+ * Fisher-Yates shuffle algorithm for arrays
269
+ */
270
+ function shuffleArray(array) {
271
+ for (let i = array.length - 1; i > 0; i--) {
272
+ const j = Math.floor(Math.random() * (i + 1));
273
+ const temp = array[i];
274
+ array[i] = array[j];
275
+ array[j] = temp;
276
+ }
277
+ return array;
278
+ }
279
+ /**
280
+ * Creates a random digit mapping (1-9 -> 1-9)
281
+ */
282
+ function createDigitMapping() {
283
+ const digits = [1, 2, 3, 4, 5, 6, 7, 8, 9];
284
+ const shuffled = shuffleArray([...digits]);
285
+ const mapping = new Map();
286
+ for (let i = 0; i < digits.length; i++) {
287
+ mapping.set(digits[i], shuffled[i]);
288
+ }
289
+ return mapping;
290
+ }
291
+ /**
292
+ * Creates the reverse of a digit mapping
293
+ */
294
+ function reverseDigitMapping(mapping) {
295
+ const reverse = new Map();
296
+ for (const [original, scrambled] of mapping) {
297
+ reverse.set(scrambled, original);
298
+ }
299
+ return reverse;
300
+ }
301
+ /**
302
+ * Applies digit mapping to a board
303
+ */
304
+ function applyDigitMapping(board, mapping) {
305
+ return board.map((row) => row.map((value) => {
306
+ if (value === 0)
307
+ return 0;
308
+ return mapping.get(value) ?? value;
309
+ }));
310
+ }
311
+ /**
312
+ * Rotates the board 90 degrees clockwise
313
+ */
314
+ function rotateBoard90(board) {
315
+ const rotated = [];
316
+ for (let col = 0; col < exports.BOARD_SIZE; col++) {
317
+ const newRow = [];
318
+ for (let row = exports.BOARD_SIZE - 1; row >= 0; row--) {
319
+ newRow.push(board[row]?.[col] ?? 0);
320
+ }
321
+ rotated.push(newRow);
322
+ }
323
+ return rotated;
324
+ }
325
+ /**
326
+ * Mirrors the board horizontally (left-right)
327
+ */
328
+ function mirrorHorizontally(board) {
329
+ return board.map((row) => [...row].reverse());
330
+ }
331
+ /**
332
+ * Mirrors the board vertically (top-bottom)
333
+ */
334
+ function mirrorVertically(board) {
335
+ return [...board].reverse().map((row) => [...row]);
336
+ }
337
+ /**
338
+ * Scrambles a Sudoku board while preserving its logical structure.
339
+ *
340
+ * Scrambling preserves the logical structure of a Sudoku puzzle while making it
341
+ * appear different. This is useful for:
342
+ * - Preventing players from recognizing puzzles they've seen before
343
+ * - Creating variety from a limited puzzle database
344
+ * - Making it harder to look up solutions online
345
+ *
346
+ * @param puzzle - 81-character puzzle string
347
+ * @param solution - 81-character solution string
348
+ * @param config - Scramble configuration (defaults to all transformations enabled)
349
+ * @returns Scramble result with scrambled puzzle, solution, and digit mapping
350
+ *
351
+ * @example
352
+ * ```typescript
353
+ * const result = scrambleBoard(puzzle, solution);
354
+ * console.log(result.puzzle); // Scrambled puzzle
355
+ * console.log(result.solution); // Scrambled solution
356
+ * console.log(result.digitMapping); // Map from original to scrambled digits
357
+ * ```
358
+ */
359
+ function scrambleBoard(puzzle, solution, config = exports.DEFAULT_SCRAMBLE_CONFIG) {
360
+ // Parse the boards
361
+ let puzzleBoard = parseBoardString(puzzle);
362
+ let solutionBoard = parseBoardString(solution);
363
+ // Create digit mapping (applied to both puzzle and solution)
364
+ let digitMapping = new Map();
365
+ for (let i = 1; i <= 9; i++) {
366
+ digitMapping.set(i, i); // Identity mapping by default
367
+ }
368
+ if (config.scrambleDigits) {
369
+ digitMapping = createDigitMapping();
370
+ puzzleBoard = applyDigitMapping(puzzleBoard, digitMapping);
371
+ solutionBoard = applyDigitMapping(solutionBoard, digitMapping);
372
+ }
373
+ // Scramble rows within blocks
374
+ if (config.scrambleRows) {
375
+ const rowPermutations = [];
376
+ for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
377
+ rowPermutations.push(shuffleArray([0, 1, 2]));
378
+ }
379
+ const applyRowPermutation = (board) => {
380
+ for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
381
+ const startRow = blockRow * exports.BLOCK_SIZE;
382
+ const perm = rowPermutations[blockRow];
383
+ const rowsCopy = [
384
+ [...(board[startRow] ?? [])],
385
+ [...(board[startRow + 1] ?? [])],
386
+ [...(board[startRow + 2] ?? [])],
387
+ ];
388
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
389
+ board[startRow + i] = rowsCopy[perm[i]];
390
+ }
391
+ }
392
+ };
393
+ applyRowPermutation(puzzleBoard);
394
+ applyRowPermutation(solutionBoard);
395
+ }
396
+ // Scramble columns within blocks
397
+ if (config.scrambleColumns) {
398
+ const colPermutations = [];
399
+ for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
400
+ colPermutations.push(shuffleArray([0, 1, 2]));
401
+ }
402
+ const applyColPermutation = (board) => {
403
+ for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
404
+ const startCol = blockCol * exports.BLOCK_SIZE;
405
+ const perm = colPermutations[blockCol];
406
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
407
+ const boardRow = board[row];
408
+ if (boardRow) {
409
+ const colsCopy = [
410
+ boardRow[startCol],
411
+ boardRow[startCol + 1],
412
+ boardRow[startCol + 2],
413
+ ];
414
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
415
+ boardRow[startCol + i] = colsCopy[perm[i]];
416
+ }
417
+ }
418
+ }
419
+ }
420
+ };
421
+ applyColPermutation(puzzleBoard);
422
+ applyColPermutation(solutionBoard);
423
+ }
424
+ // Scramble row blocks
425
+ if (config.scrambleRowBlocks) {
426
+ const blockOrder = shuffleArray([0, 1, 2]);
427
+ const applyRowBlockPermutation = (board) => {
428
+ const allRows = board.map((row) => [...row]);
429
+ const result = [];
430
+ for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
431
+ const oldBlockIndex = blockOrder[newBlockIndex];
432
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
433
+ result.push(allRows[oldBlockIndex * exports.BLOCK_SIZE + i]);
434
+ }
435
+ }
436
+ return result;
437
+ };
438
+ puzzleBoard = applyRowBlockPermutation(puzzleBoard);
439
+ solutionBoard = applyRowBlockPermutation(solutionBoard);
440
+ }
441
+ // Scramble column blocks
442
+ if (config.scrambleColumnBlocks) {
443
+ const blockOrder = shuffleArray([0, 1, 2]);
444
+ const applyColBlockPermutation = (board) => {
445
+ const result = board.map(() => new Array(exports.BOARD_SIZE).fill(0));
446
+ for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
447
+ const oldBlockIndex = blockOrder[newBlockIndex];
448
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
449
+ const oldCol = oldBlockIndex * exports.BLOCK_SIZE + i;
450
+ const newCol = newBlockIndex * exports.BLOCK_SIZE + i;
451
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
452
+ const resultRow = result[row];
453
+ if (resultRow) {
454
+ resultRow[newCol] = board[row]?.[oldCol] ?? 0;
455
+ }
456
+ }
457
+ }
458
+ }
459
+ return result;
460
+ };
461
+ puzzleBoard = applyColBlockPermutation(puzzleBoard);
462
+ solutionBoard = applyColBlockPermutation(solutionBoard);
463
+ }
464
+ // Rotate
465
+ if (config.rotate) {
466
+ const rotations = Math.floor(Math.random() * 4);
467
+ for (let i = 0; i < rotations; i++) {
468
+ puzzleBoard = rotateBoard90(puzzleBoard);
469
+ solutionBoard = rotateBoard90(solutionBoard);
470
+ }
471
+ }
472
+ // Mirror
473
+ if (config.mirror) {
474
+ const mirrorType = Math.floor(Math.random() * 4);
475
+ const applyMirror = (board) => {
476
+ switch (mirrorType) {
477
+ case 1:
478
+ return mirrorHorizontally(board);
479
+ case 2:
480
+ return mirrorVertically(board);
481
+ case 3:
482
+ return mirrorVertically(mirrorHorizontally(board));
483
+ default:
484
+ return board;
485
+ }
486
+ };
487
+ puzzleBoard = applyMirror(puzzleBoard);
488
+ solutionBoard = applyMirror(solutionBoard);
489
+ }
490
+ return {
491
+ puzzle: stringifyBoard(puzzleBoard),
492
+ solution: stringifyBoard(solutionBoard),
493
+ digitMapping,
494
+ reverseDigitMapping: reverseDigitMapping(digitMapping),
495
+ };
496
+ }
497
+ /**
498
+ * Creates an identity scramble result (no scrambling)
499
+ * @param puzzle - 81-character puzzle string
500
+ * @param solution - 81-character solution string
501
+ * @returns ScrambleResult with identity mapping
502
+ */
503
+ function noScramble(puzzle, solution) {
504
+ const identityMapping = new Map();
505
+ for (let i = 1; i <= 9; i++) {
506
+ identityMapping.set(i, i);
507
+ }
508
+ return {
509
+ puzzle,
510
+ solution,
511
+ digitMapping: identityMapping,
512
+ reverseDigitMapping: identityMapping,
513
+ };
514
+ }
184
515
  //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -272,6 +272,35 @@ export interface SolveData {
272
272
  /** Hints with steps */
273
273
  hints: SolverHints;
274
274
  }
275
+ /** User state for hint access control */
276
+ export type HintAccessUserState = 'anonymous' | 'no_subscription' | 'insufficient_tier';
277
+ /** Entitlement identifiers for hint access */
278
+ export type HintEntitlement = 'blue_belt' | 'red_belt';
279
+ /** Error details when hint access is denied (402 response) */
280
+ export interface HintAccessDeniedError {
281
+ /** Error code for programmatic handling */
282
+ code: 'HINT_ACCESS_DENIED';
283
+ /** Human-readable error message */
284
+ message: string;
285
+ /** The difficulty level of the requested hint */
286
+ hintLevel: number;
287
+ /** The entitlement required to access this hint level */
288
+ requiredEntitlement: HintEntitlement;
289
+ /** The user's current state */
290
+ userState: HintAccessUserState;
291
+ }
292
+ /** 402 response structure for hint access denied */
293
+ export interface HintAccessDeniedResponse {
294
+ success: false;
295
+ error: HintAccessDeniedError;
296
+ timestamp: string;
297
+ }
298
+ /** Hint level limits by entitlement */
299
+ export declare const HINT_LEVEL_LIMITS: {
300
+ readonly red_belt: number;
301
+ readonly blue_belt: 5;
302
+ readonly free: 3;
303
+ };
275
304
  /** Response data for /solver/validate endpoint */
276
305
  export interface ValidateData {
277
306
  /** Board with solution (includes level/techniques metadata) */
@@ -410,4 +439,88 @@ export declare function getBeltIconSvg(fill: string, width?: number, height?: nu
410
439
  * @returns SVG string or null if level is invalid
411
440
  */
412
441
  export declare function getBeltIconForLevel(levelIndex: number, width?: number, height?: number): string | null;
442
+ /** Board size constant (9x9 grid) */
443
+ export declare const BOARD_SIZE = 9;
444
+ /** Block size constant (3x3 blocks) */
445
+ export declare const BLOCK_SIZE = 3;
446
+ /** Total cells in a board */
447
+ export declare const TOTAL_CELLS: number;
448
+ /**
449
+ * Parses an 81-character board string into a 2D array of numbers
450
+ * @param boardString - 81-character string where '0' or '.' represents empty cells
451
+ * @returns 9x9 array of numbers (0 = empty, 1-9 = filled)
452
+ */
453
+ export declare function parseBoardString(boardString: string): number[][];
454
+ /**
455
+ * Converts a 2D number array back to an 81-character string
456
+ * @param board - 9x9 array of numbers
457
+ * @returns 81-character string
458
+ */
459
+ export declare function stringifyBoard(board: number[][]): string;
460
+ /**
461
+ * Scramble configuration options
462
+ */
463
+ export interface ScrambleConfig {
464
+ /** Whether to scramble rows within blocks */
465
+ scrambleRows: boolean;
466
+ /** Whether to scramble columns within blocks */
467
+ scrambleColumns: boolean;
468
+ /** Whether to scramble row blocks (groups of 3 rows) */
469
+ scrambleRowBlocks: boolean;
470
+ /** Whether to scramble column blocks (groups of 3 columns) */
471
+ scrambleColumnBlocks: boolean;
472
+ /** Whether to scramble digit mapping (1-9 -> 1-9) */
473
+ scrambleDigits: boolean;
474
+ /** Whether to rotate the board (0, 90, 180, 270 degrees) */
475
+ rotate: boolean;
476
+ /** Whether to mirror the board */
477
+ mirror: boolean;
478
+ }
479
+ /**
480
+ * Default scramble configuration (all transformations enabled)
481
+ */
482
+ export declare const DEFAULT_SCRAMBLE_CONFIG: ScrambleConfig;
483
+ /**
484
+ * Result of scrambling a board
485
+ */
486
+ export interface ScrambleResult {
487
+ /** The scrambled puzzle string */
488
+ puzzle: string;
489
+ /** The scrambled solution string */
490
+ solution: string;
491
+ /** The digit mapping used (original -> scrambled) */
492
+ digitMapping: Map<number, number>;
493
+ /** The reverse digit mapping (scrambled -> original) */
494
+ reverseDigitMapping: Map<number, number>;
495
+ }
496
+ /**
497
+ * Scrambles a Sudoku board while preserving its logical structure.
498
+ *
499
+ * Scrambling preserves the logical structure of a Sudoku puzzle while making it
500
+ * appear different. This is useful for:
501
+ * - Preventing players from recognizing puzzles they've seen before
502
+ * - Creating variety from a limited puzzle database
503
+ * - Making it harder to look up solutions online
504
+ *
505
+ * @param puzzle - 81-character puzzle string
506
+ * @param solution - 81-character solution string
507
+ * @param config - Scramble configuration (defaults to all transformations enabled)
508
+ * @returns Scramble result with scrambled puzzle, solution, and digit mapping
509
+ *
510
+ * @example
511
+ * ```typescript
512
+ * const result = scrambleBoard(puzzle, solution);
513
+ * console.log(result.puzzle); // Scrambled puzzle
514
+ * console.log(result.solution); // Scrambled solution
515
+ * console.log(result.digitMapping); // Map from original to scrambled digits
516
+ * ```
517
+ */
518
+ export declare function scrambleBoard(puzzle: string, solution: string, config?: ScrambleConfig): ScrambleResult;
519
+ /**
520
+ * Creates an identity scramble result (no scrambling)
521
+ * @param puzzle - 81-character puzzle string
522
+ * @param solution - 81-character solution string
523
+ * @returns ScrambleResult with identity mapping
524
+ */
525
+ export declare function noScramble(puzzle: string, solution: string): ScrambleResult;
413
526
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * TypeScript types for Sudojo API - Sudoku learning platform
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = void 0;
7
+ exports.DEFAULT_SCRAMBLE_CONFIG = exports.TOTAL_CELLS = exports.BLOCK_SIZE = exports.BOARD_SIZE = exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = exports.HINT_LEVEL_LIMITS = void 0;
8
8
  exports.successResponse = successResponse;
9
9
  exports.errorResponse = errorResponse;
10
10
  exports.techniqueToBit = techniqueToBit;
@@ -14,6 +14,10 @@ exports.getBeltForLevel = getBeltForLevel;
14
14
  exports.getAllBelts = getAllBelts;
15
15
  exports.getBeltIconSvg = getBeltIconSvg;
16
16
  exports.getBeltIconForLevel = getBeltIconForLevel;
17
+ exports.parseBoardString = parseBoardString;
18
+ exports.stringifyBoard = stringifyBoard;
19
+ exports.scrambleBoard = scrambleBoard;
20
+ exports.noScramble = noScramble;
17
21
  /** Create a success response */
18
22
  function successResponse(data) {
19
23
  return {
@@ -30,6 +34,12 @@ function errorResponse(error) {
30
34
  timestamp: new Date().toISOString(),
31
35
  };
32
36
  }
37
+ /** Hint level limits by entitlement */
38
+ exports.HINT_LEVEL_LIMITS = {
39
+ red_belt: Infinity,
40
+ blue_belt: 5,
41
+ free: 3,
42
+ };
33
43
  // =============================================================================
34
44
  // Technique Bitfield (matches SudokuDefines.h enum SudokuTechnique)
35
45
  // =============================================================================
@@ -181,4 +191,325 @@ function getBeltIconForLevel(levelIndex, width = 100, height = 40) {
181
191
  return null;
182
192
  return getBeltIconSvg(belt.hex, width, height);
183
193
  }
194
+ // =============================================================================
195
+ // Board Utilities (for parsing and manipulating Sudoku boards)
196
+ // =============================================================================
197
+ /** Board size constant (9x9 grid) */
198
+ exports.BOARD_SIZE = 9;
199
+ /** Block size constant (3x3 blocks) */
200
+ exports.BLOCK_SIZE = 3;
201
+ /** Total cells in a board */
202
+ exports.TOTAL_CELLS = exports.BOARD_SIZE * exports.BOARD_SIZE;
203
+ /**
204
+ * Parses an 81-character board string into a 2D array of numbers
205
+ * @param boardString - 81-character string where '0' or '.' represents empty cells
206
+ * @returns 9x9 array of numbers (0 = empty, 1-9 = filled)
207
+ */
208
+ function parseBoardString(boardString) {
209
+ if (boardString.length !== exports.TOTAL_CELLS) {
210
+ throw new Error(`Invalid board string length: expected ${exports.TOTAL_CELLS}, got ${boardString.length}`);
211
+ }
212
+ const board = [];
213
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
214
+ const rowArray = [];
215
+ for (let col = 0; col < exports.BOARD_SIZE; col++) {
216
+ const index = row * exports.BOARD_SIZE + col;
217
+ const char = boardString[index];
218
+ if (char === undefined) {
219
+ throw new Error(`Missing character at position ${index}`);
220
+ }
221
+ const value = char === '.' ? 0 : parseInt(char, 10);
222
+ if (isNaN(value) || value < 0 || value > 9) {
223
+ throw new Error(`Invalid character at position ${index}: '${char}'`);
224
+ }
225
+ rowArray.push(value);
226
+ }
227
+ board.push(rowArray);
228
+ }
229
+ return board;
230
+ }
231
+ /**
232
+ * Converts a 2D number array back to an 81-character string
233
+ * @param board - 9x9 array of numbers
234
+ * @returns 81-character string
235
+ */
236
+ function stringifyBoard(board) {
237
+ if (board.length !== exports.BOARD_SIZE) {
238
+ throw new Error(`Invalid board rows: expected ${exports.BOARD_SIZE}, got ${board.length}`);
239
+ }
240
+ let result = '';
241
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
242
+ if (board[row]?.length !== exports.BOARD_SIZE) {
243
+ throw new Error(`Invalid row ${row} length: expected ${exports.BOARD_SIZE}, got ${board[row]?.length}`);
244
+ }
245
+ for (let col = 0; col < exports.BOARD_SIZE; col++) {
246
+ const value = board[row]?.[col];
247
+ if (value === undefined || value < 0 || value > 9) {
248
+ throw new Error(`Invalid value at (${row}, ${col}): ${value}`);
249
+ }
250
+ result += value.toString();
251
+ }
252
+ }
253
+ return result;
254
+ }
255
+ /**
256
+ * Default scramble configuration (all transformations enabled)
257
+ */
258
+ exports.DEFAULT_SCRAMBLE_CONFIG = {
259
+ scrambleRows: true,
260
+ scrambleColumns: true,
261
+ scrambleRowBlocks: true,
262
+ scrambleColumnBlocks: true,
263
+ scrambleDigits: true,
264
+ rotate: true,
265
+ mirror: true,
266
+ };
267
+ /**
268
+ * Fisher-Yates shuffle algorithm for arrays
269
+ */
270
+ function shuffleArray(array) {
271
+ for (let i = array.length - 1; i > 0; i--) {
272
+ const j = Math.floor(Math.random() * (i + 1));
273
+ const temp = array[i];
274
+ array[i] = array[j];
275
+ array[j] = temp;
276
+ }
277
+ return array;
278
+ }
279
+ /**
280
+ * Creates a random digit mapping (1-9 -> 1-9)
281
+ */
282
+ function createDigitMapping() {
283
+ const digits = [1, 2, 3, 4, 5, 6, 7, 8, 9];
284
+ const shuffled = shuffleArray([...digits]);
285
+ const mapping = new Map();
286
+ for (let i = 0; i < digits.length; i++) {
287
+ mapping.set(digits[i], shuffled[i]);
288
+ }
289
+ return mapping;
290
+ }
291
+ /**
292
+ * Creates the reverse of a digit mapping
293
+ */
294
+ function reverseDigitMapping(mapping) {
295
+ const reverse = new Map();
296
+ for (const [original, scrambled] of mapping) {
297
+ reverse.set(scrambled, original);
298
+ }
299
+ return reverse;
300
+ }
301
+ /**
302
+ * Applies digit mapping to a board
303
+ */
304
+ function applyDigitMapping(board, mapping) {
305
+ return board.map((row) => row.map((value) => {
306
+ if (value === 0)
307
+ return 0;
308
+ return mapping.get(value) ?? value;
309
+ }));
310
+ }
311
+ /**
312
+ * Rotates the board 90 degrees clockwise
313
+ */
314
+ function rotateBoard90(board) {
315
+ const rotated = [];
316
+ for (let col = 0; col < exports.BOARD_SIZE; col++) {
317
+ const newRow = [];
318
+ for (let row = exports.BOARD_SIZE - 1; row >= 0; row--) {
319
+ newRow.push(board[row]?.[col] ?? 0);
320
+ }
321
+ rotated.push(newRow);
322
+ }
323
+ return rotated;
324
+ }
325
+ /**
326
+ * Mirrors the board horizontally (left-right)
327
+ */
328
+ function mirrorHorizontally(board) {
329
+ return board.map((row) => [...row].reverse());
330
+ }
331
+ /**
332
+ * Mirrors the board vertically (top-bottom)
333
+ */
334
+ function mirrorVertically(board) {
335
+ return [...board].reverse().map((row) => [...row]);
336
+ }
337
+ /**
338
+ * Scrambles a Sudoku board while preserving its logical structure.
339
+ *
340
+ * Scrambling preserves the logical structure of a Sudoku puzzle while making it
341
+ * appear different. This is useful for:
342
+ * - Preventing players from recognizing puzzles they've seen before
343
+ * - Creating variety from a limited puzzle database
344
+ * - Making it harder to look up solutions online
345
+ *
346
+ * @param puzzle - 81-character puzzle string
347
+ * @param solution - 81-character solution string
348
+ * @param config - Scramble configuration (defaults to all transformations enabled)
349
+ * @returns Scramble result with scrambled puzzle, solution, and digit mapping
350
+ *
351
+ * @example
352
+ * ```typescript
353
+ * const result = scrambleBoard(puzzle, solution);
354
+ * console.log(result.puzzle); // Scrambled puzzle
355
+ * console.log(result.solution); // Scrambled solution
356
+ * console.log(result.digitMapping); // Map from original to scrambled digits
357
+ * ```
358
+ */
359
+ function scrambleBoard(puzzle, solution, config = exports.DEFAULT_SCRAMBLE_CONFIG) {
360
+ // Parse the boards
361
+ let puzzleBoard = parseBoardString(puzzle);
362
+ let solutionBoard = parseBoardString(solution);
363
+ // Create digit mapping (applied to both puzzle and solution)
364
+ let digitMapping = new Map();
365
+ for (let i = 1; i <= 9; i++) {
366
+ digitMapping.set(i, i); // Identity mapping by default
367
+ }
368
+ if (config.scrambleDigits) {
369
+ digitMapping = createDigitMapping();
370
+ puzzleBoard = applyDigitMapping(puzzleBoard, digitMapping);
371
+ solutionBoard = applyDigitMapping(solutionBoard, digitMapping);
372
+ }
373
+ // Scramble rows within blocks
374
+ if (config.scrambleRows) {
375
+ const rowPermutations = [];
376
+ for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
377
+ rowPermutations.push(shuffleArray([0, 1, 2]));
378
+ }
379
+ const applyRowPermutation = (board) => {
380
+ for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
381
+ const startRow = blockRow * exports.BLOCK_SIZE;
382
+ const perm = rowPermutations[blockRow];
383
+ const rowsCopy = [
384
+ [...(board[startRow] ?? [])],
385
+ [...(board[startRow + 1] ?? [])],
386
+ [...(board[startRow + 2] ?? [])],
387
+ ];
388
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
389
+ board[startRow + i] = rowsCopy[perm[i]];
390
+ }
391
+ }
392
+ };
393
+ applyRowPermutation(puzzleBoard);
394
+ applyRowPermutation(solutionBoard);
395
+ }
396
+ // Scramble columns within blocks
397
+ if (config.scrambleColumns) {
398
+ const colPermutations = [];
399
+ for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
400
+ colPermutations.push(shuffleArray([0, 1, 2]));
401
+ }
402
+ const applyColPermutation = (board) => {
403
+ for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
404
+ const startCol = blockCol * exports.BLOCK_SIZE;
405
+ const perm = colPermutations[blockCol];
406
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
407
+ const boardRow = board[row];
408
+ if (boardRow) {
409
+ const colsCopy = [
410
+ boardRow[startCol],
411
+ boardRow[startCol + 1],
412
+ boardRow[startCol + 2],
413
+ ];
414
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
415
+ boardRow[startCol + i] = colsCopy[perm[i]];
416
+ }
417
+ }
418
+ }
419
+ }
420
+ };
421
+ applyColPermutation(puzzleBoard);
422
+ applyColPermutation(solutionBoard);
423
+ }
424
+ // Scramble row blocks
425
+ if (config.scrambleRowBlocks) {
426
+ const blockOrder = shuffleArray([0, 1, 2]);
427
+ const applyRowBlockPermutation = (board) => {
428
+ const allRows = board.map((row) => [...row]);
429
+ const result = [];
430
+ for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
431
+ const oldBlockIndex = blockOrder[newBlockIndex];
432
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
433
+ result.push(allRows[oldBlockIndex * exports.BLOCK_SIZE + i]);
434
+ }
435
+ }
436
+ return result;
437
+ };
438
+ puzzleBoard = applyRowBlockPermutation(puzzleBoard);
439
+ solutionBoard = applyRowBlockPermutation(solutionBoard);
440
+ }
441
+ // Scramble column blocks
442
+ if (config.scrambleColumnBlocks) {
443
+ const blockOrder = shuffleArray([0, 1, 2]);
444
+ const applyColBlockPermutation = (board) => {
445
+ const result = board.map(() => new Array(exports.BOARD_SIZE).fill(0));
446
+ for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
447
+ const oldBlockIndex = blockOrder[newBlockIndex];
448
+ for (let i = 0; i < exports.BLOCK_SIZE; i++) {
449
+ const oldCol = oldBlockIndex * exports.BLOCK_SIZE + i;
450
+ const newCol = newBlockIndex * exports.BLOCK_SIZE + i;
451
+ for (let row = 0; row < exports.BOARD_SIZE; row++) {
452
+ const resultRow = result[row];
453
+ if (resultRow) {
454
+ resultRow[newCol] = board[row]?.[oldCol] ?? 0;
455
+ }
456
+ }
457
+ }
458
+ }
459
+ return result;
460
+ };
461
+ puzzleBoard = applyColBlockPermutation(puzzleBoard);
462
+ solutionBoard = applyColBlockPermutation(solutionBoard);
463
+ }
464
+ // Rotate
465
+ if (config.rotate) {
466
+ const rotations = Math.floor(Math.random() * 4);
467
+ for (let i = 0; i < rotations; i++) {
468
+ puzzleBoard = rotateBoard90(puzzleBoard);
469
+ solutionBoard = rotateBoard90(solutionBoard);
470
+ }
471
+ }
472
+ // Mirror
473
+ if (config.mirror) {
474
+ const mirrorType = Math.floor(Math.random() * 4);
475
+ const applyMirror = (board) => {
476
+ switch (mirrorType) {
477
+ case 1:
478
+ return mirrorHorizontally(board);
479
+ case 2:
480
+ return mirrorVertically(board);
481
+ case 3:
482
+ return mirrorVertically(mirrorHorizontally(board));
483
+ default:
484
+ return board;
485
+ }
486
+ };
487
+ puzzleBoard = applyMirror(puzzleBoard);
488
+ solutionBoard = applyMirror(solutionBoard);
489
+ }
490
+ return {
491
+ puzzle: stringifyBoard(puzzleBoard),
492
+ solution: stringifyBoard(solutionBoard),
493
+ digitMapping,
494
+ reverseDigitMapping: reverseDigitMapping(digitMapping),
495
+ };
496
+ }
497
+ /**
498
+ * Creates an identity scramble result (no scrambling)
499
+ * @param puzzle - 81-character puzzle string
500
+ * @param solution - 81-character solution string
501
+ * @returns ScrambleResult with identity mapping
502
+ */
503
+ function noScramble(puzzle, solution) {
504
+ const identityMapping = new Map();
505
+ for (let i = 1; i <= 9; i++) {
506
+ identityMapping.set(i, i);
507
+ }
508
+ return {
509
+ puzzle,
510
+ solution,
511
+ digitMapping: identityMapping,
512
+ reverseDigitMapping: identityMapping,
513
+ };
514
+ }
184
515
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudobility/sudojo_types",
3
- "version": "1.2.4",
3
+ "version": "1.2.6",
4
4
  "description": "TypeScript types for Sudojo API - Sudoku learning platform",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",