Skip to main content
Latest
File
import { assertEquals } from "../deps.ts";import solveSudoku from "./index.ts";
Deno.test("sudoku-solver", () => { const inputs = [ [ ["5", "3", "4", "6", "7", "8", "9", "1", "2"], ["6", "7", "2", "1", "9", "5", "3", "4", "8"], ["1", "9", "8", "3", "4", "2", "5", "6", "7"], ["8", "5", "9", "7", "6", "1", "4", "2", "3"], ["4", "2", "6", "8", "5", "3", "7", "9", "1"], ["7", "1", "3", ".", "2", "4", "8", "5", "6"], ["9", "6", "1", "5", "3", "7", "2", "8", "4"], ["2", "8", "7", "4", "1", "9", "6", "3", "5"], ["3", "4", "5", "2", "8", "6", "1", "7", "9"], ], [ ["5", "3", ".", ".", "7", ".", ".", ".", "."], ["6", ".", ".", "1", "9", "5", ".", ".", "."], [".", "9", "8", ".", ".", ".", ".", "6", "."], ["8", ".", ".", ".", "6", ".", ".", ".", "3"], ["4", ".", ".", "8", ".", "3", ".", ".", "1"], ["7", ".", ".", ".", "2", ".", ".", ".", "6"], [".", "6", ".", ".", ".", ".", "2", "8", "."], [".", ".", ".", "4", "1", "9", ".", ".", "5"], [".", ".", ".", ".", "8", ".", ".", "7", "9"], ], [ [".", ".", "9", "7", "4", "8", ".", ".", "."], ["7", ".", ".", ".", ".", ".", ".", ".", "."], [".", "2", ".", "1", ".", "9", ".", ".", "."], [".", ".", "7", ".", ".", ".", "2", "4", "."], [".", "6", "4", ".", "1", ".", "5", "9", "."], [".", "9", "8", ".", ".", ".", "3", ".", "."], [".", ".", ".", "8", ".", "3", ".", "2", "."], [".", ".", ".", ".", ".", ".", ".", ".", "6"], [".", ".", ".", "2", "7", "5", "9", ".", "."], ], [ [".", ".", "5", "3", ".", ".", ".", ".", "."], ["8", ".", ".", ".", ".", ".", ".", "2", "."], [".", "7", ".", ".", "1", ".", "5", ".", "."], ["4", ".", ".", ".", ".", "5", "3", ".", "."], [".", "1", ".", ".", "7", ".", ".", ".", "6"], [".", ".", "3", "2", ".", ".", ".", "8", "."], [".", "6", ".", "5", ".", ".", ".", ".", "9"], [".", ".", "4", ".", ".", ".", ".", "3", "."], [".", ".", ".", ".", ".", "9", "7", ".", "."], ], [ ["5", "3", "4", "6", "7", "8", ".", "1", "2"], ["6", "7", "2", "1", "9", "5", "3", "4", "8"], ["1", "9", "8", "3", "4", "2", "5", "6", "7"], ["8", "5", "9", "7", "6", "1", "4", "2", "3"], ["4", "2", "6", "8", "5", "3", "7", "9", "1"], ["7", "1", "3", "9", "2", "4", "8", "5", "6"], ["9", "6", "1", "5", "3", "7", "2", "8", "4"], ["2", "8", "7", "4", "1", "9", "6", "3", "5"], ["3", "4", "5", "2", "8", "6", "1", "7", "9"], ], [ [".", ".", "9", "7", "4", "8", ".", ".", "."], ["7", ".", ".", ".", ".", ".", ".", ".", "."], [".", "2", ".", "1", ".", "9", ".", ".", "."], [".", ".", "7", ".", ".", ".", "2", "4", "."], [".", "6", "4", ".", "1", ".", "5", "9", "."], [".", "9", "8", ".", ".", ".", "3", ".", "."], [".", ".", ".", "8", ".", "3", ".", "2", "."], [".", ".", ".", ".", ".", ".", ".", ".", "6"], [".", ".", ".", "2", "7", "5", "9", ".", "."], ], [ [".", "9", ".", "6", ".", ".", "3", ".", "."], [".", "3", ".", ".", "5", ".", ".", "2", "8"], ["5", ".", "1", ".", ".", "2", "7", ".", "."], [".", ".", "6", "1", ".", "8", ".", ".", "2"], [".", "1", ".", ".", ".", ".", ".", "3", "."], ["8", ".", ".", "5", ".", "9", "6", ".", "."], [".", ".", "9", "7", ".", ".", "4", ".", "3"], ["1", "4", ".", ".", "2", ".", ".", "9", "."], [".", ".", "8", ".", ".", "6", ".", "7", "."], ], [ [".", ".", "8", ".", "9", ".", ".", ".", "2"], [".", ".", ".", "1", ".", ".", "9", "7", "."], [".", ".", ".", ".", ".", "4", ".", "6", "."], [".", "1", ".", ".", ".", ".", "5", ".", "4"], [".", ".", "4", ".", "6", "5", "3", ".", "."], ["5", ".", "3", ".", ".", ".", ".", "9", "."], [".", "7", ".", "5", ".", ".", ".", ".", "."], [".", "8", "2", ".", ".", "3", ".", ".", "."], ["9", ".", ".", ".", "2", ".", "1", ".", "."], ], ]; const outputs = [ [ ["5", "3", "4", "6", "7", "8", "9", "1", "2"], ["6", "7", "2", "1", "9", "5", "3", "4", "8"], ["1", "9", "8", "3", "4", "2", "5", "6", "7"], ["8", "5", "9", "7", "6", "1", "4", "2", "3"], ["4", "2", "6", "8", "5", "3", "7", "9", "1"], ["7", "1", "3", "9", "2", "4", "8", "5", "6"], ["9", "6", "1", "5", "3", "7", "2", "8", "4"], ["2", "8", "7", "4", "1", "9", "6", "3", "5"], ["3", "4", "5", "2", "8", "6", "1", "7", "9"], ], [ ["5", "3", "4", "6", "7", "8", "9", "1", "2"], ["6", "7", "2", "1", "9", "5", "3", "4", "8"], ["1", "9", "8", "3", "4", "2", "5", "6", "7"], ["8", "5", "9", "7", "6", "1", "4", "2", "3"], ["4", "2", "6", "8", "5", "3", "7", "9", "1"], ["7", "1", "3", "9", "2", "4", "8", "5", "6"], ["9", "6", "1", "5", "3", "7", "2", "8", "4"], ["2", "8", "7", "4", "1", "9", "6", "3", "5"], ["3", "4", "5", "2", "8", "6", "1", "7", "9"], ], [ ["5", "1", "9", "7", "4", "8", "6", "3", "2"], ["7", "8", "3", "6", "5", "2", "4", "1", "9"], ["4", "2", "6", "1", "3", "9", "8", "7", "5"], ["3", "5", "7", "9", "8", "6", "2", "4", "1"], ["2", "6", "4", "3", "1", "7", "5", "9", "8"], ["1", "9", "8", "5", "2", "4", "3", "6", "7"], ["9", "7", "5", "8", "6", "3", "1", "2", "4"], ["8", "3", "2", "4", "9", "1", "7", "5", "6"], ["6", "4", "1", "2", "7", "5", "9", "8", "3"], ], [ ["1", "4", "5", "3", "2", "7", "6", "9", "8"], ["8", "3", "9", "6", "5", "4", "1", "2", "7"], ["6", "7", "2", "9", "1", "8", "5", "4", "3"], ["4", "9", "6", "1", "8", "5", "3", "7", "2"], ["2", "1", "8", "4", "7", "3", "9", "5", "6"], ["7", "5", "3", "2", "9", "6", "4", "8", "1"], ["3", "6", "7", "5", "4", "2", "8", "1", "9"], ["9", "8", "4", "7", "6", "1", "2", "3", "5"], ["5", "2", "1", "8", "3", "9", "7", "6", "4"], ], [ ["5", "3", "4", "6", "7", "8", "9", "1", "2"], ["6", "7", "2", "1", "9", "5", "3", "4", "8"], ["1", "9", "8", "3", "4", "2", "5", "6", "7"], ["8", "5", "9", "7", "6", "1", "4", "2", "3"], ["4", "2", "6", "8", "5", "3", "7", "9", "1"], ["7", "1", "3", "9", "2", "4", "8", "5", "6"], ["9", "6", "1", "5", "3", "7", "2", "8", "4"], ["2", "8", "7", "4", "1", "9", "6", "3", "5"], ["3", "4", "5", "2", "8", "6", "1", "7", "9"], ], [ ["5", "1", "9", "7", "4", "8", "6", "3", "2"], ["7", "8", "3", "6", "5", "2", "4", "1", "9"], ["4", "2", "6", "1", "3", "9", "8", "7", "5"], ["3", "5", "7", "9", "8", "6", "2", "4", "1"], ["2", "6", "4", "3", "1", "7", "5", "9", "8"], ["1", "9", "8", "5", "2", "4", "3", "6", "7"], ["9", "7", "5", "8", "6", "3", "1", "2", "4"], ["8", "3", "2", "4", "9", "1", "7", "5", "6"], ["6", "4", "1", "2", "7", "5", "9", "8", "3"], ], [ ["7", "9", "2", "6", "8", "1", "3", "4", "5"], ["6", "3", "4", "9", "5", "7", "1", "2", "8"], ["5", "8", "1", "3", "4", "2", "7", "6", "9"], ["4", "7", "6", "1", "3", "8", "9", "5", "2"], ["9", "1", "5", "2", "6", "4", "8", "3", "7"], ["8", "2", "3", "5", "7", "9", "6", "1", "4"], ["2", "6", "9", "7", "1", "5", "4", "8", "3"], ["1", "4", "7", "8", "2", "3", "5", "9", "6"], ["3", "5", "8", "4", "9", "6", "2", "7", "1"], ], [ ["7", "5", "8", "3", "9", "6", "4", "1", "2"], ["2", "4", "6", "1", "5", "8", "9", "7", "3"], ["1", "3", "9", "2", "7", "4", "8", "6", "5"], ["6", "1", "7", "9", "3", "2", "5", "8", "4"], ["8", "9", "4", "7", "6", "5", "3", "2", "1"], ["5", "2", "3", "8", "4", "1", "6", "9", "7"], ["3", "7", "1", "5", "8", "9", "2", "4", "6"], ["4", "8", "2", "6", "1", "3", "7", "5", "9"], ["9", "6", "5", "4", "2", "7", "1", "3", "8"], ], ]; const examples: { input: string[][]; output: string[][]; }[] = inputs.map((v, i) => ({ input: v, output: outputs[i] })); examples.forEach(({ input, output }) => { solveSudoku(input); // console.log(input); assertEquals(output, input); });});