aoc-2023/day_13/solver.test.ts

33 lines
1.0 KiB
TypeScript
Raw Permalink Normal View History

2024-12-09 22:41:02 +09:00
import { Cell, getBitsNumbers, getReflectionIndex, correctReflection, popcount } from "./solver.ts";
import { assertEquals } from "https://deno.land/std@0.212.0/assert/mod.ts";
Deno.test("getBitsNumbers", () => {
const cells = ["#", ".", "#", ".", "#", "#"] as Cell[];
const ret = getBitsNumbers(cells);
assertEquals(ret, 0b101011);
});
Deno.test("getBitsNumbers long line", () => {
const maxLength = 30;
const cells = new Array(maxLength).fill("#") as Cell[];
const ret = getBitsNumbers(cells);
assertEquals(ret, Math.pow(2, maxLength) - 1);
});
Deno.test("getReflectionIndex", () => {
const arr = [1, 2, 3, 4, 4, 3];
const ret = getReflectionIndex(arr);
assertEquals(ret, 4);
});
Deno.test("correctReflection", () => {
const arr = [0b000, 0b111, 0b110];
const ret = correctReflection(arr);
assertEquals(ret, 2);
});
Deno.test("popcount", () => {
const arr = [0b000, 0b111, 0b110, 0b11101, 0b11110, 0b11111];
const ret = arr.map(x => popcount(x));
assertEquals(ret, [0, 3, 2, 4,4, 5]);
})