Skip to content

Instantly share code, notes, and snippets.

@kirkegaard
kirkegaard / iterator.js
Last active August 18, 2025 16:28
@cassidoo mailing list question
function createLaundryItem() {
let count = 0;
const tasks = [
"soak",
"wash",
"rinse",
"spin",
"dry",
];
@kirkegaard
kirkegaard / binpack.js
Created August 11, 2025 17:36
@cassidoo mailing list question
// To find the optimal groups we can use bin packing.
// https://en.wikipedia.org/wiki/Bin_packing_problem
const files = [120, 90, 60, 150, 80];
const maxDuration = 200;
function groupAudioFiles(files, maxDuration) {
// Sort files in descending order
const sorted = [...files].sort((a, b) => b - a);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>chat</title>
<style>
* {
box-sizing: border-box;
margin: 0;
@kirkegaard
kirkegaard / postmessages.html
Last active July 11, 2025 13:19
Send post messages back and forth between windows
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Window 1</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
@kirkegaard
kirkegaard / enable-akai-katana-and-dodonpachi-saidaiojou-in-mame.diff
Last active April 12, 2025 17:11
Enable Akai Katana and DoDonPachi SaiDaiOuJou in mame
diff --git a/src/mame/cave/cv1k.cpp b/src/mame/cave/cv1k.cpp
index c57694f92aa..14865cc0b5b 100644
--- a/src/mame/cave/cv1k.cpp
+++ b/src/mame/cave/cv1k.cpp
@@ -917,32 +917,32 @@ ROM_START( dfkbl )
ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(31f9eb0a) SHA1(322158779e969bb321241065dd49c1167b91ff6c) )
ROM_END
-// ROM_START( akatana )
-// ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
const input = await Deno.readTextFile("input.txt");
type Position = { x: number; y: number };
type Direction = "up" | "down" | "left" | "right";
type Guard = {
position: Position;
direction: Direction;
};
@kirkegaard
kirkegaard / aoc_day05.ts
Created December 5, 2024 16:17
advent of code day 5
const input = await Deno.readTextFile("input.txt");
type Rule = {
x: number;
y: number;
};
const [order, pages] = input.split("\n\n");
function parseRules(rules: string): Rule[] {
@kirkegaard
kirkegaard / aoc_day04.ts
Created December 4, 2024 09:33
advent of code day 4
const input = await Deno.readTextFile("input.txt");
const directions = [
[0, 1],
[0, -1],
[1, 0],
[1, 1],
[1, -1],
[-1, 0],
[-1, -1],
@kirkegaard
kirkegaard / aoc_day03.ts
Created December 3, 2024 18:14
advent of code day 3
const input = await Deno.readTextFile("input.txt");
function matchMuls(str: string): string[] {
return str.match(/mul\(\d+,\d+\)/g) || [];
}
function calculateMulSum(arr: string[]): number {
return arr.reduce((acc, str) => {
const [a, b] = str.slice(4, -1).split(",").map(Number);
return acc + a * b;
@kirkegaard
kirkegaard / aoc_day01.ts
Created December 2, 2024 09:28
advent of code day 1
const input = await Deno.readTextFile("input.txt");
const data = input.split("\n");
let left: number[] = [];
let right: number[] = [];
for (const pair of data) {
const [a, b] = pair.split(" ");
left.push(+a);
right.push(+b);