Compare commits

...

4 Commits

Author SHA1 Message Date
Jeff Yates 769f37a89e Merge branch 'master' of http://git.doublehack.me/s00ner/AoC2020 2020-12-15 10:01:29 -05:00
Jeff Yates 78e6cb2509 finished 2020-12-15 10:01:13 -05:00
Jeff Yates 7306e37f07 Merge branch 'master' of http://git.doublehack.me/s00ner/AoC2020 2020-12-11 09:02:08 -05:00
Jeff Yates e4657f1f08 solved part 2 2020-12-10 12:08:38 -05:00
3 changed files with 123 additions and 12 deletions

36
day10/solution2.rb Executable file
View File

@ -0,0 +1,36 @@
#!/bin/env ruby
require 'pry'
numbers = File.read('./input').split("\n").map(&:to_i).sort
numbers.prepend(0)
numbers.push(numbers[-1] + 3)
#binding.pry
solution = numbers.map.with_index do |num, i|
next if i == 0
num - numbers[i-1]
end
solution.compact!
count = [0]
count_i = 0
solution.each.with_index do |num, i|
next if i == 0
if num == 3
count_i += 1
count.push(0)
next
end
count[count_i] += 1 if solution[i-1] == 1
end
count.delete(0)
count.map! do |num|
case num
when 1
2
when 2
4
when 3
7
end
end
p count.reduce(:*)

View File

@ -1,27 +1,51 @@
#!/bin/env ruby
require 'pry'
def convert (seats)
seats.map! do |row|
row.map! do |seat|
case seat
when 0 then 'L'
when 1 then '#'
when nil then '.'
end
end
row.reduce(:+)
end
end
def fill_seats (seats)
output = Array.new(seats.length, Array.new(seats[0].length, nil))
output.map!.with_index do |row, i|
row.each.with_index do |seat, j|
next if !seats[i][j]
adjecents = 0
adjecents += seats[i+1][j-1..j+1].compact.sum if i < seats.length - 1
adjecents += seats[i][j-1].to_i if j > 0
adjecents += seats[i-1][j-1..j+1].compact.sum if i > 0
adjecents += seats[i][j+1].to_i if j < seats[i].length
puts "#{i},#{j}:#{adjecents}"
adjecents >= 4 ? 0 : 1
row.map.with_index do |seat, j|
next if seats[i][j] == nil
i == 0 ? row_min = 0 : row_min = i - 1
i == seats.length - 1 ? row_max = -1 : row_max = i + 1
j == 0 ? col_min = 0 : col_min = j - 1
j == seats[0].length - 1 ? col_max = -1 : col_max = j + 1
row_range = (row_min..row_max)
col_range = (col_min..col_max)
adjecents = seats[row_range].map {|line| line[col_range]}.flatten.compact.sum - seats[i][j]
combo = {:occupied? => seats[i][j], :adjecents => adjecents}
case
when combo[:occupied?] == 0 && combo[:adjecents] == 0 then 1
when combo[:occupied?] == 0 && combo[:adjecents] != 0 then 0
when combo[:occupied?] == 1 && combo[:adjecents] < 4 then 1
when combo[:occupied?] == 1 && combo[:adjecents] >= 4 then 0
end
end
end
return output
end
seats = File.readlines('./input.sample').map(&:strip)
seats = File.readlines('./input').map(&:strip)
.map! {|line| line.split('') }
.map! {|line| line.map { |char| char == 'L' ? 0 : nil }}
#next = fill_seats(seats)
binding.pry
steps = []
steps[0] = seats
until steps[-1] == steps[-2] do
steps.push(fill_seats(steps[-1]))
end
p steps[-1].map(&:compact).flatten.sum

51
day11/solution2.rb Executable file
View File

@ -0,0 +1,51 @@
#!/bin/env ruby
require 'pry'
def convert (seats)
seats.map! do |row|
row.map! do |seat|
case seat
when 0 then 'L'
when 1 then '#'
when nil then '.'
end
end
row.reduce(:+)
end
end
def fill_seats (seats)
output = Array.new(seats.length, Array.new(seats[0].length, nil))
output.map!.with_index do |row, i|
row.map.with_index do |seat, j|
next if seats[i][j] == nil
i == 0 ? row_min = 0 : row_min = i - 1
i == seats.length - 1 ? row_max = -1 : row_max = i + 1
j == 0 ? col_min = 0 : col_min = j - 1
j == seats[0].length - 1 ? col_max = -1 : col_max = j + 1
row_range = (row_min..row_max)
col_range = (col_min..col_max)
adjecents = seats[row_range].map {|line| line[col_range]}.flatten.compact.sum - seats[i][j]
combo = {:occupied? => seats[i][j], :adjecents => adjecents}
case
when combo[:occupied?] == 0 && combo[:adjecents] == 0 then 1
when combo[:occupied?] == 0 && combo[:adjecents] != 0 then 0
when combo[:occupied?] == 1 && combo[:adjecents] < 4 then 1
when combo[:occupied?] == 1 && combo[:adjecents] >= 4 then 0
end
end
end
return output
end
seats = File.readlines('./input').map(&:strip)
.map! {|line| line.split('') }
.map! {|line| line.map { |char| char == 'L' ? 0 : nil }}
steps = []
steps[0] = seats
until steps[-1] == steps[-2] do
steps.push(fill_seats(steps[-1]))
end
p steps[-1].map(&:compact).flatten.sum