Skip to content

Instantly share code, notes, and snippets.

View cjavdev's full-sized avatar
👉

CJ Avilla cjavdev

👉
View GitHub Profile
@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
cycles = 0
cycle_tracker = {}
x = 1
if ARGV.empty?
data = DATA.readlines(chomp: true)
else
data = File.readlines(ARGV[0], chomp: true)
end
require 'set'
def parse_moves(input)
input
.map(&:chomp)
.map {_1.split(' ')}
.map {[_1[0], _1[1].to_i]}
end
def follow(head, tail)
if ARGV.empty?
data = DATA.readlines
else
data = File.readlines(ARGV[0])
end
trees = data
.map(&:chomp)
.map {_1.chars}
.map {_1.map(&:to_i)}
if ARGV.empty?
data = DATA.readlines
else
data = File.readlines(ARGV[0])
end
cwd = []
dir_sizes = Hash.new { |h, k| h[k] = 0 }
require 'rspec/autorun'
require 'set'
def marker(input, length)
input
.chars
.each_cons(length)
.map(&:to_set)
.find_index { |set| set.size == length } + length
end