/sudoku

TypeScriptで数独を扱うための何か

Primary LanguageTypeScript

TypeScriptで数独を扱うための何か

デモ

盤面をファイルから読み込み

> cat ./problems/01.txt
6 5 - - - - - - 9
- - 2 - 8 - - - -
- - 1 9 3 2 6 - -
- - - 8 - - 2 - -
- - - 4 5 - - - -
- - 9 - - 3 - - 7
- 9 - - - - 7 - -
4 - - - - - 3 8 -
- - 7 - 1 - 9 - -
> cat ./src/demo.ts
import { Sudoku } from './Sudoku';

const sudoku = new Sudoku();

sudoku.load('./problems/01.txt');
sudoku.print();

sudoku.solve();
sudoku.print();

> ts-node ./src/demo.ts
    0 1 2   3 4 5   6 7 8
  ┌───────┬───────┬───────┐
0 │ 6 5 - │ - - - │ - - 9 │
1 │ - - 2 │ - 8 - │ - - - │
2 │ - - 1 │ 9 3 2 │ 6 - - │
  ├───────┼───────┼───────┤
3 │ - - - │ 8 - - │ 2 - - │
4 │ - - - │ 4 5 - │ - - - │
5 │ - - 9 │ - - 3 │ - - 7 │
  ├───────┼───────┼───────┤
6 │ - 9 - │ - - - │ 7 - - │
7 │ 4 - - │ - - - │ 3 8 - │
8 │ - - 7 │ - 1 - │ 9 - - │
  └───────┴───────┴───────┘
    0 1 2   3 4 5   6 7 8
  ┌───────┬───────┬───────┐
0 │ 6 5 3 │ 1 4 7 │ 8 2 9 │
1 │ 9 7 2 │ 6 8 5 │ 4 1 3 │
2 │ 8 4 1 │ 9 3 2 │ 6 7 5 │
  ├───────┼───────┼───────┤
3 │ 5 3 4 │ 8 7 1 │ 2 9 6 │
4 │ 7 2 6 │ 4 5 9 │ 1 3 8 │
5 │ 1 8 9 │ 2 6 3 │ 5 4 7 │
  ├───────┼───────┼───────┤
6 │ 3 9 8 │ 5 2 4 │ 7 6 1 │
7 │ 4 1 5 │ 7 9 6 │ 3 8 2 │
8 │ 2 6 7 │ 3 1 8 │ 9 5 4 │
  └───────┴───────┴───────┘

盤面をランダム生成

> cat ./src/demo.ts
import { Sudoku } from './Sudoku';

const sudoku = new Sudoku();

sudoku.random();
sudoku.print();

sudoku.solve();
sudoku.print();

> ts-node ./src/demo.ts

    0 1 2   3 4 5   6 7 8
  ┌───────┬───────┬───────┐
0 │ - - 7 │ - 8 5 │ - - - │
1 │ - - - │ 2 - 9 │ 6 8 - │
2 │ - - - │ - 6 - │ - 2 - │
  ├───────┼───────┼───────┤
3 │ 4 9 - │ - 3 - │ - - 2 │
4 │ 5 - - │ - - - │ - - 9 │
5 │ - - 3 │ - - 4 │ - - - │
  ├───────┼───────┼───────┤
6 │ 3 4 8 │ - - - │ - - - │
7 │ - - - │ - - - │ 7 - - │
8 │ - 6 9 │ - - 1 │ - 3 - │
  └───────┴───────┴───────┘
    0 1 2   3 4 5   6 7 8
  ┌───────┬───────┬───────┐
0 │ 6 2 7 │ 1 8 5 │ 4 9 3 │
1 │ 1 3 5 │ 2 4 9 │ 6 8 7 │
2 │ 9 8 4 │ 7 6 3 │ 1 2 5 │
  ├───────┼───────┼───────┤
3 │ 4 9 6 │ 5 3 7 │ 8 1 2 │
4 │ 5 7 2 │ 8 1 6 │ 3 4 9 │
5 │ 8 1 3 │ 9 2 4 │ 5 7 6 │
  ├───────┼───────┼───────┤
6 │ 3 4 8 │ 6 7 2 │ 9 5 1 │
7 │ 2 5 1 │ 3 9 8 │ 7 6 4 │
8 │ 7 6 9 │ 4 5 1 │ 2 3 8 │
  └───────┴───────┴───────┘