Skip to content

Instantly share code, notes, and snippets.

@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);
@kirkegaard
kirkegaard / aoc_day02.ts
Created December 2, 2024 09:27
advent of code day 2
const input = await Deno.readTextFile("input.txt");
const data = input.split("\n");
const isSafe = (levels: number[]): boolean => {
const diffs = levels.slice(1).map((num, idx) => num - levels[idx]);
// Stupid off by one error >:(
if (diffs.length === 0) {
return false;
}
@kirkegaard
kirkegaard / parallel-fetch.js
Last active October 23, 2024 22:27
Fetch multiple endpoints in parallel
const fetcher = async (path, options = {}) => {
const response = await fetch(path, options);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
@kirkegaard
kirkegaard / JobQueue.js
Created October 9, 2024 15:11
JobQueue using pure async/await
// A job queue that takes an anonymous functions and executes them in parallel
let maxConcurrent = 3;
let queue = [];
let activeCount = 0;
// Add task to queue and execute
async function exec(task) {
queue.push(task);
await next();
}
@kirkegaard
kirkegaard / JobQueue.js
Last active October 9, 2024 15:12
JobQueue using Promises
// A job queue that takes an anonymous functions and executes them in parallel
class JobQueue {
constructor(maxConcurrent = 3) {
this.maxConcurrent = maxConcurrent;
this.queue = [];
this.activeCount = 0;
}
// Add task to queue and
exec(task) {
@kirkegaard
kirkegaard / go-rle.go
Last active September 15, 2024 00:52
Go RLE encoder/decoder
package main
import (
"errors"
"fmt"
"strconv"
)
func rleEncode(input string) (string, error) {
if len(input) == 0 {
@kirkegaard
kirkegaard / go-grid.go
Last active September 3, 2024 20:44
one million checkboxes, except its only 625
package server
import (
"context"
"encoding/hex"
"fmt"
"github.com/go-redis/redis/v8"
"net/http"
"strconv"
"sync"
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>all your base is ket to ball</title>
<style>
* {
box-sizing: border-box;
margin: 0;