aupl-ss24-sudoku-solver/generateRules.ts

64 lines
1.1 KiB
TypeScript

// Copyright (C) 2024 AstroGD® Lukas Weber
import generateRules, { getLength } from "./src/rules";
import fs from "fs";
import { v } from "./src/util";
import { visualizeValues } from "./src/visualizeValues";
const constValues: number[] = [
v(2, 1, 8),
v(4, 1, 9),
v(6, 1, 7),
v(7, 1, 3),
v(2, 2, 3),
v(3, 2, 9),
v(5, 2, 6),
v(7, 2, 2),
v(8, 2, 8),
v(2, 3, 5),
v(3, 3, 7),
v(8, 3, 9),
v(1, 4, 5),
v(2, 4, 1),
v(3, 4, 6),
v(5, 4, 2),
v(9, 4, 8),
v(2, 5, 4),
v(4, 5, 7),
v(5, 5, 8),
v(6, 5, 1),
v(8, 5, 6),
v(9, 5, 2),
v(1, 6, 2),
v(2, 6, 7),
v(3, 6, 8),
v(5, 6, 4),
v(6, 6, 6),
v(7, 6, 9),
v(2, 7, 9),
v(3, 7, 4),
v(6, 7, 3),
v(7, 7, 6),
v(1, 8, 3),
v(3, 8, 5),
v(4, 8, 6),
v(5, 8, 9),
v(8, 8, 7),
v(9, 8, 1),
v(9, 9, 9),
];
console.log("Input values:");
visualizeValues(constValues);
console.log("\nRule generation:");
const rules = generateRules(constValues);
const output = fs.createWriteStream("output.cnf");
output.write(`p cnf ${v(9, 9, 9)} ${getLength(constValues)}\n`);
for (const rule of rules) {
output.write(rule + "\n");
}
output.end();