Skip to content

Instantly share code, notes, and snippets.

@einarwh
einarwh / aoc05.fsx
Last active December 5, 2024 21:30
Advent of Code 2024. Day 05: Print Queue. F# version.
// Advent of Code 2024. Day 05: Print Queue.
// dotnet fsi aoc05.fsx
open System
open System.IO
let trim (input : string) = input.Trim()
let split (splitter : string) (input : string) = input.Split(splitter)
@einarwh
einarwh / aoc04.fsx
Last active December 4, 2024 08:30
Advent of Code 2024. Day 04: Ceres Search. F# version.
// Advent of Code 2024. Day 04: Ceres Search.
// dotnet fsi aoc04.fsx
open System
open System.IO
module Array2D =
let tryGet (a : 'a[,]) (x, y) =
let first = y >= 0 && y < a.GetLength(0)
let second = x >= 0 && x < a.GetLength(1)
@einarwh
einarwh / aoc03.fsx
Last active December 3, 2024 08:41
Advent of Code 2024. Day 03: Mull It Over. F# version.
// Advent of Code 2024. Day 03: Mull It Over.
// dotnet fsi aoc03.fsx
open System
open System.IO
open System.Text.RegularExpressions
type op = Mul of (int * int) | Do | Dont
let toOp (m : Match) : op =
@einarwh
einarwh / aoc02.fsx
Created December 3, 2024 08:39
Advent of Code 2024. Day 02: Red-Nosed Reports. F# version.
// Advent of Code 2024. Day 02: Red-Nosed Reports
// dotnet fsi aoc02.fsx
open System
open System.IO
let parseReport (s : string) =
s.Split() |> Array.toList |> List.map int
let isSafe report =
@einarwh
einarwh / aoc02.ps
Created December 2, 2024 17:39
Advent of Code 2024 - Day 02: Red-Nosed Reports - PostScript version
% Advent of Code 2024. Day 02: Red-Nosed Reports
% gs -DNOSAFER aoc02.ps
/read-input
{ % fn
[ % fn [
exch % [ fn
(r) file % [ F
{
dup % [ .. F F
@einarwh
einarwh / aoc01.fsx
Last active December 3, 2024 08:37
Advent of Code 2024 - Day 01: Historian Hysteria - F# version
// Advent of Code 2024. Day 01: Historian Hysteria
// dotnet fsi aoc01.fsx
open System
open System.IO
open System.Text.RegularExpressions
let parsePair (line : string) =
let pattern = "^(\d+)\s+(\d+)$"
let m = Regex.Match(line, pattern)
@einarwh
einarwh / aoc01.ps
Last active December 2, 2024 17:48
Advent of Code 2024 - Day 01: Historian Hysteria - PostScript version
% Advent of Code 2024. Day 01: Historian Hysteria
% gs -DNOSAFER aoc01.ps
/read-input
{ % fn
[ % fn [
exch % [ fn
(r) file % [ F
{
dup % [ .. F F
@einarwh
einarwh / HelloWorld.java
Last active January 2, 2024 22:03
Object-oriented Hello World.
import java.io.*;
public interface Printer {
public void print(PrintStream stream);
}
public class ChainPrinter implements Printer {
private final char _c;
private final Printer _next;
public ChainPrinter(char c, Printer next) {
@einarwh
einarwh / HelloWorld.java
Last active January 2, 2024 17:41
Object-oriented Hello World.
import java.io.*;
public abstract class Printer {
protected final PrintStream _stream;
public Printer(PrintStream stream) {
_stream = stream;
}
@einarwh
einarwh / dotify.fsx
Created December 20, 2023 15:56
Advent of Code 2023 - Day 20: Pulse Propagation - Convert input into dot format
// Advent of Code 2023. Day 20: Pulse Propagation.
// Convert input file into dot format for rendering with graphviz.
// dotnet fsi dotify.fsx <inputfile> <outputfile?>
open System
open System.IO
type Node =
| Broadcaster
| FlipFlop