Skip to content

Instantly share code, notes, and snippets.

@mctrafik
mctrafik / aoc.ts
Created December 20, 2023 06:13
AOC 2023: Problem 20
// ===========================================================
// PART 1
// ===========================================================
let answer1 = 0;
const parsed = input.split(`\n`);
const links = {} as Record<string, string[]>;
const backLinks = {} as Record<string, string[]>;
@mctrafik
mctrafik / aoc.ts
Created December 19, 2023 19:48
AOC 2023: Problem 19
type Flow =
| { type: 'go'; dest: string }
| { type: 'gt'; var: Key; value: number; dest: string }
| { type: 'lt'; var: Key; value: number; dest: string };
const rule: Record<string, Flow[]> = {};
const [rules, parts] = parsed;
for (const ruleLine of rules.split('\n')) {
const [name, rulePart] = ruleLine.split('{');
rule[name] = rulePart
@mctrafik
mctrafik / aoc.ts
Last active December 13, 2023 05:48
AOC 2023: Problem 13
const parsed = input.split(`\n\n`);
const start = performance.now();
// ===========================================================
// PART 1
// ===========================================================
let answer1 = 0;
@mctrafik
mctrafik / zookeeper-shortcuts.js
Created May 1, 2020 05:58
Zooniverse Zoo-Keeper Shortcuts.
function addHints() {
document.querySelectorAll('label.answer p').forEach((p, i) => {
if (p.getAttribute('data-processed')) return;
let hint = document.createTextNode(` (SHIFT: ${i + 1})`);
p.appendChild(hint);
p.setAttribute('data-processed', 'true');
});
}
setInterval(addHints, 1000);
window.addEventListener('keydown', (k) => {