Skip to content

Instantly share code, notes, and snippets.

View cjavdev's full-sized avatar
👉

CJ Avilla cjavdev

👉
View GitHub Profile
if ARGV.empty?
data = DATA.readlines(chomp: true)
else
data = File.readlines(ARGV.first, chomp: true)
end
def blueprints(data)
data.map do |line|
match = /Blueprint (?<id>\d+): Each ore robot costs (?<ore_robot_ore>\d+) ore. Each clay robot costs (?<clay_robot_ore>\d+) ore. Each obsidian robot costs (?<obsidian_robot_ore>\d+) ore and (?<obsidian_robot_clay>\d+) clay. Each geode robot costs (?<geode_robot_ore>\d+) ore and (?<geode_robot_obsidian>\d+) obsidian./.match(line)
class Piece
attr_reader :shape, :kind
ORDER = [
:dash,
:plus,
:jay,
:line,
:square
if ARGV.empty?
data = DATA.readlines(chomp: true)
else
data = File.readlines(ARGV[0], chomp: true)
end
VALVES = {}
GRAPH = {}
@cjavdev
cjavdev / day16.rb
Last active December 17, 2022 22:18
# require 'set'
# require 'byebug'
if ARGV.empty?
data = DATA.readlines(chomp: true)
else
data = File.readlines(ARGV[0], chomp: true)
end
ADJ = {}
require 'set'
if ARGV.empty?
data = DATA.readlines(chomp: true)
y = 10
MAX = 20
else
data = File.readlines(ARGV[0], chomp: true)
y = 2000000
MAX = 4000000
@cjavdev
cjavdev / day15.rb
Created December 15, 2022 14:21
Part 1 - comparing ruby 3.1.2 vs 3.2.0-preview2
require 'set'
if ARGV.empty?
data = DATA.readlines(chomp: true)
y = 10
else
data = File.readlines(ARGV[0], chomp: true)
y = 2000000
end
sensors = Set.new
require 'byebug'
if ARGV.empty?
input = <<~INPUT
498,4 -> 498,6 -> 496,6
503,4 -> 502,4 -> 502,9 -> 494,9
INPUT
else
input = File.read(ARGV.first, chomp: true)
end
def valid(l, r)
return nil if l.empty? && r.empty?
return true if l.empty?
return false if r.empty?
l_head, *l_tail = l
r_head, *r_tail = r
case [l_head, r_head]
in [Integer, Integer]
if ARGV.empty?
data = DATA.readlines(chomp: true)
else
data = File.readlines(ARGV[0], chomp: true)
end
grid = data.map(&:chars)
heights = Array.new(grid.size) { Array.new(grid[0].size) }
distances = {}
class Monkey
attr_reader :inspection_count, :test
@monkeys = {}
def self.parse(monkey_data)
n, i, o, t, tr, fa = monkey_data.split("\n")
name = n.split(/:| /)[1].to_i
items = i.split(': ').last.split(', ').map(&:to_i)
operation = o.split('= ').last
test = t.split(' ').last.to_i