Solved and rubocopd

main
s00ner 2024-12-30 11:22:57 -05:00
parent c8d09f9eab
commit d1988683d8
2 changed files with 1045 additions and 0 deletions

1000
day02/input Normal file

File diff suppressed because it is too large Load Diff

45
day02/solution.rb Executable file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'pry'
def sorted?(sequence)
test = sequence.each_cons(2).map { |left, right| left < right }
return true if test.uniq.length == 1
false
end
def safe?(sequence)
test = sequence.each_cons(2).map { |left, right| (left - right).abs }
test.reject { |num| num.positive? && num < 4 }.empty?
end
# sample = '7 6 4 2 1
# 1 2 7 8 9
# 9 7 6 2 1
# 1 3 2 4 5
# 8 6 4 4 1
# 1 3 6 7 9'
input = File.readlines('./input').map(&:strip).map { |line| line.split.map(&:to_i) }
# input = sample.split("\n").map{ | line | line.split.map(&:to_i) }
# Part 1
solution = input.map { |report| sorted?(report) and safe?(report) }.count(true)
puts solution
# Part 2
second_run = input.zip(input.map { |report| sorted?(report) and safe?(report) }).reject { |_, test| test }.transpose
second_run.delete_at(-1)
second_run.flatten!(1)
permutations = second_run.map { |report| report.map.with_index { |_number, i| report.dup.tap { |j| j.delete_at(i) } } }
solution2 = permutations.map do |line|
line.map do |report|
sorted?(report) and safe?(report)
end
end.map(&:uniq).flatten.count(true)
puts solution + solution2