Skip to content

Instantly share code, notes, and snippets.

View carlwiedemann's full-sized avatar

Carl Wiedemann carlwiedemann

View GitHub Profile
@carlwiedemann
carlwiedemann / day018.rb
Created December 19, 2024 17:45
Advent of Code 2024 day018.rb
require_relative "main"
module Day018
INPUT = File.read("INPUT.txt")
SIDE = 71
LIMIT = 1024
CORRUPT = "#"
SAFE = "."
@carlwiedemann
carlwiedemann / day017.rb
Created December 18, 2024 18:49
Advent of Code 2024 day017.rb
require_relative "main"
module Day017
INPUT = File.read("INPUT.txt")
##########
# Part 1 #
##########
parts = INPUT.split("\n\n")
@carlwiedemann
carlwiedemann / day016.rb
Created December 17, 2024 05:40
Advent of Code 2024 day016.rb
require_relative "main"
module Day016
INPUT = File.read("INPUT.txt")
grid = INPUT.to_grid
CHAR_START = "S"
CHAR_END = "E"
EAST = V[1, 0]
@carlwiedemann
carlwiedemann / day015.rb
Last active December 16, 2024 03:19
Advent of Code 2024 day015.rb
require_relative "main"
module Day015
INPUT = File.read("INPUT.txt")
ROBOT = "@"
BOX = "O"
WALL = "#"
EMPTY = "."
@carlwiedemann
carlwiedemann / day014.rb
Created December 15, 2024 04:54
Advent of Code 2024 day014.rb
require_relative "main"
module Day014
INPUT = File.read("INPUT.txt")
WIDTH = 101
HEIGHT = 103
rs = INPUT.split("\n").map do |line|
line.split(" ").map do |chunk|
V[*chunk.split("=").last.split(",").map(&:to_i)]
@carlwiedemann
carlwiedemann / day013.rb
Last active December 13, 2024 16:18
Advent of Code 2024 day013.rb
require_relative "main"
module Day013
INPUT = File.read("INPUT.txt")
answer1 = 0
answer2 = 0
INPUT.split("\n\n").each do |group|
ax, ay, bx, by, px1, py1 = group.split("\n").map { |line| line.split(",").map { |s| s[/\d+/].to_i } }.flatten
@carlwiedemann
carlwiedemann / day012.rb
Created December 12, 2024 17:41
Advent of Code 2024 day012.rb
require_relative "main"
module Day012
INPUT = File.read("INPUT.txt")
grid = INPUT.to_grid
origins = grid.each_with_object(Hash.new { |h, k| h[k] = [] }) { |v, value, a| a[value].push(v) }
answer1 = 0
answer2 = 0
@carlwiedemann
carlwiedemann / day011.rb
Created December 11, 2024 05:49
Advent of Code 2024 day011.rb
require_relative "main"
module Day011
INPUT = File.read("INPUT.txt")
s = INPUT.split.map { [_1.to_i, 1] }.to_h
convert = ->(n) do
return [1] if n == 0
t = n.to_s
@carlwiedemann
carlwiedemann / day009.rb
Created December 10, 2024 20:33
Advent of Code 2024 day009.rb
require_relative "main"
module Day009
INPUT = File.read("INPUT.txt")
s = INPUT.strip
expand = ->(s) { s.chars.each_with_object([]).with_index { |(c, a), i| c.to_i.times { a.push(i.even? ? i / 2 : nil) } } }
checksum = ->(a) { a.each_with_index.sum { _2 * _1.to_i } }
@carlwiedemann
carlwiedemann / day010.rb
Created December 10, 2024 19:31
Advent of Code 2024 day010.rb
require_relative "main"
module Day010
INPUT = File.read("INPUT.txt")
grid = INPUT.to_grid(cast_int: true)
v0s = grid.each_with_object([]) { |v, h, a| a.push(v) if h == 0 }
##########