Skip to content

Instantly share code, notes, and snippets.

@einarwh
einarwh / aoc20.fsx
Created December 20, 2024 19:31
Advent of Code 2024. Day 20: Race Condition.
// Advent of Code 2024. Day 20: Race Condition.
// dotnet fsi aoc20.fsx
open System
open System.IO
open System.Collections.Generic
open System.Diagnostics
module Array2D =
let inBounds (a : 'a[,]) (x, y) =
@einarwh
einarwh / aoc19.fsx
Last active December 20, 2024 09:16
Advent of Code 2024. Day 19: Linen Layout. F# version.
// Advent of Code 2024. Day 19: Linen Layout.
// dotnet fsi aoc19.fsx
open System
open System.IO
open System.Collections.Concurrent
let trim (input : string) = input.Trim()
let split (splitter : string) (input : string) = input.Split(splitter)
@einarwh
einarwh / aoc18.fsx
Created December 18, 2024 23:55
Advent of Code 2024. Day 18: RAM Run. F# version.
// Advent of Code 2024. Day 18: RAM Run.
// dotnet fsi aoc18.fsx
open System
open System.IO
open System.Collections.Generic
type Pos = (int*int)
type PQ = PriorityQueue<Pos * int, int>
@einarwh
einarwh / aoc17.fsx
Last active December 17, 2024 18:13
Advent of Code 2024. Day 17: Chronospatial Computer. F# version.
// Advent of Code 2024. Day 17: Chronospatial Computer.
// dotnet fsi aoc17.fsx
open System
open System.IO
type Computer = {
regA : int64
regB : int64
regC : int64
@einarwh
einarwh / aoc16.fsx
Last active December 16, 2024 21:14
Advent of Code 2024. Day 16: Reindeer Maze. F# version.
// Advent of Code 2024. Day 16: Reindeer Maze.
// dotnet fsi aoc16.fsx
open System
open System.IO
open System.Collections.Generic
module Maze =
let get (a : 'a[,]) (x, y) =
Array2D.get a y x
@einarwh
einarwh / aoc15.fsx
Created December 15, 2024 13:47
Advent of Code 2024. Day 15: Warehouse Woes. F# version.
// Advent of Code 2024. Day 15: Warehouse Woes.
// dotnet fsi aoc15.fsx
open System
open System.IO
module Warehouse =
let inBounds (a : 'a[,]) (x, y) =
let first = y >= 0 && y < a.GetLength(0)
let second = x >= 0 && x < a.GetLength(1)
@einarwh
einarwh / aoc14.fsx
Last active December 15, 2024 13:46
Advent of Code 2024. Day 14: Restroom Redoubt. F# version.
// Advent of Code 2024. Day 14: Restroom Redoubt.
// dotnet fsi aoc14.fsx
open System
open System.IO
open System.Diagnostics
type Pos = (int * int)
type Robot = { p : Pos; v : Pos }
@einarwh
einarwh / aoc13.fsx
Last active December 13, 2024 10:11
Advent of Code 2024. Day 13: Claw Contraption. F# version.
// Advent of Code 2024. Day 13: Claw Contraption.
// dotnet fsi aoc13.fsx
open System
open System.IO
type Machine =
{ ax : int64
bx : int64
ay : int64
@einarwh
einarwh / aoc12.fsx
Last active December 12, 2024 14:31
Advent of Code 2024. Day 12: Garden Groups. F# version.
// Advent of Code 2024. Day 12: Garden Groups.
// dotnet fsi aoc12.fsx
open System
open System.IO
module Garden =
let inBounds (a : 'a[,]) (x, y) =
let first = y >= 0 && y < a.GetLength(0)
let second = x >= 0 && x < a.GetLength(1)
@einarwh
einarwh / aoc11.fsx
Created December 11, 2024 16:17
Advent of Code 2024. Day 11: Plutonian Pebbles. F# version.
// Advent of Code 2024. Day 11: Plutonian Pebbles.
// dotnet fsi aoc11.fsx
open System
open System.IO
let applyRules stone =
if stone = 0L then [1L]
else
let s = stone.ToString()