Skip to content

Instantly share code, notes, and snippets.

View carlwiedemann's full-sized avatar

Carl Wiedemann carlwiedemann

View GitHub Profile
@carlwiedemann
carlwiedemann / day008.rb
Last active December 8, 2024 06:36
Advent of Code 2024 day008.rb
require_relative "main"
module Day008
INPUT = File.read("INPUT.txt")
EMPTY = "."
grid = INPUT.to_grid
h = grid.each_with_object(Hash.new { |h, k| h[k] = [] }) { |v, c, memo| memo[c].push(v) if c != EMPTY }
@carlwiedemann
carlwiedemann / day007.rb
Created December 7, 2024 09:41
Advent of Code 2024 day007.rb
require_relative "main"
module Day007
INPUT = File.read('INPUT.txt')
DATA = INPUT.split("\n").map do |line|
parts = line.split(":")
[
parts[0].to_i,
parts[1].split(" ").map(&:to_i)
@carlwiedemann
carlwiedemann / day006.rb
Created December 6, 2024 19:23
Advent of Code 2024 day006.rb
require_relative "main"
module Day006
INPUT = File.read('INPUT.txt')
grid = INPUT.to_grid
NORTH = V[0, -1]
SOUTH = V[0, 1]
WEST = V[-1, 0]
@carlwiedemann
carlwiedemann / day005.rb
Last active December 5, 2024 18:49
Advent of Code 2024 day005.rb
require_relative "main"
module Day005
INPUT = File.read('INPUT.txt')
rules_raw, updates_raw = INPUT.split("\n\n")
rules = rules_raw.split("\n").map { _1.split("|").map(&:to_i) }
updates = updates_raw.split("\n").map { _1.split(",").map(&:to_i) }
@carlwiedemann
carlwiedemann / day004.rb
Created December 4, 2024 05:43
Advent of Code 2024 day004.rb
require_relative "main"
module Day004
INPUT = File.read('INPUT.txt')
##########
# Part 1 #
##########
grid = INPUT.to_grid
@carlwiedemann
carlwiedemann / day003.rb
Last active December 3, 2024 05:59
Advent of Code 2024 day003.rb
require_relative "main"
module Day003
INPUT = File.read('INPUT.txt')
##########
# Part 1 #
##########
MUL_REGEX = /mul\(\d+,\d+\)/
@carlwiedemann
carlwiedemann / day019.rb
Created December 20, 2023 00:28
Advent of Code 2023 day019.rb
require_relative "main"
module Day019
INPUT = File.read('INPUT.txt')
parts = INPUT.split("\n\n")
guides = parts.first.to_lines.map do |guide_line|
guide_pieces = guide_line.split("{")
name = guide_pieces.first
@carlwiedemann
carlwiedemann / day007.rb
Created December 11, 2023 16:59
Advent of Code 2023 day007.rb
require_relative "main"
module Day007
INPUT = File.read('INPUT.txt')
DATA = INPUT.to_lines.map do |line|
cards, bid = line.split_strip(" ")
{
cards: cards,
bid: bid.to_i
@carlwiedemann
carlwiedemann / day008.rb
Created December 11, 2023 16:55
Advent of Code 2023 day008.rb
require_relative "main"
module Day008
INPUT = File.read('INPUT.txt')
lines = INPUT.to_lines
instructions = lines.shift.chars
lines.shift
graph = lines.map do |line|
@carlwiedemann
carlwiedemann / day009.rb
Created December 11, 2023 16:53
Advent of Code 2023 day009.rb
require_relative "main"
module Day009
INPUT = File.read('INPUT.txt')
lines = INPUT.to_lines
sets = lines.map do |line|
line.split(" ").map(&:to_i)
end