Formatting
parent
daa7f3eeb5
commit
4386d976f1
|
@ -5,51 +5,55 @@ input = File.readlines('./input').map(&:strip)
|
||||||
|
|
||||||
lights = Array.new(1000) { Array.new(1000, false) }
|
lights = Array.new(1000) { Array.new(1000, false) }
|
||||||
|
|
||||||
instructions = Hash.new
|
instructions = {}
|
||||||
|
|
||||||
instructions = input.map.with_index do |line, i|
|
instructions = input.map.with_index do |line, _i|
|
||||||
line.slice!('turn')
|
line.slice!('turn')
|
||||||
line = line.split(' ')
|
line = line.split(' ')
|
||||||
{ Command: line[0], Start: line[1].split(',').map!(&:to_i), End: line[3].split(',').map!(&:to_i) }
|
{ Command: line[0], Start: line[1].split(',').map!(&:to_i), End: line[3].split(',').map!(&:to_i) }
|
||||||
end
|
end
|
||||||
|
|
||||||
instructions.each do | instruction |
|
instructions.each do |instruction|
|
||||||
x = instruction[:End][0] - instruction[:Start][0] + 1
|
x = instruction[:End][0] - instruction[:Start][0] + 1
|
||||||
y = instruction[:End][1] - instruction[:Start][1] + 1
|
y = instruction[:End][1] - instruction[:Start][1] + 1
|
||||||
y.times do |y|
|
y.times do |y|
|
||||||
x.times do |x|
|
x.times do |x|
|
||||||
case instruction[:Command]
|
case instruction[:Command]
|
||||||
when 'on'
|
when 'on'
|
||||||
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] = true
|
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] = true
|
||||||
when 'off'
|
when 'off'
|
||||||
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] = false
|
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] = false
|
||||||
when 'toggle'
|
when 'toggle'
|
||||||
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] = !(lights[instruction[:Start][0] + x][ instruction[:Start][1] + y])
|
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] =
|
||||||
end
|
!(lights[instruction[:Start][0] + x][ instruction[:Start][1] + y])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
puts "Part 1 Solution: #{lights.flatten.count(true)}"
|
puts "Part 1 Solution: #{lights.flatten.count(true)}"
|
||||||
# Part 2 (sloppy style)
|
# Part 2 (sloppy style)
|
||||||
lights = Array.new(1000) { Array.new(1000, 0) }
|
lights = Array.new(1000) { Array.new(1000, 0) }
|
||||||
|
|
||||||
instructions.each do | instruction |
|
instructions.each do |instruction|
|
||||||
x = instruction[:End][0] - instruction[:Start][0] + 1
|
x = instruction[:End][0] - instruction[:Start][0] + 1
|
||||||
y = instruction[:End][1] - instruction[:Start][1] + 1
|
y = instruction[:End][1] - instruction[:Start][1] + 1
|
||||||
y.times do |y|
|
y.times do |y|
|
||||||
x.times do |x|
|
x.times do |x|
|
||||||
case instruction[:Command]
|
case instruction[:Command]
|
||||||
when 'on'
|
when 'on'
|
||||||
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] += 1
|
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] += 1
|
||||||
when 'off'
|
when 'off'
|
||||||
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] -= 1
|
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] -= 1
|
||||||
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] = 0 if lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] < 0
|
if lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] < 0
|
||||||
when 'toggle'
|
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] =
|
||||||
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] += 2
|
0
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
when 'toggle'
|
||||||
|
lights[instruction[:Start][0] + x][ instruction[:Start][1] + y] += 2
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
puts "Part 2 Solution: #{lights.flatten.sum}"
|
puts "Part 2 Solution: #{lights.flatten.sum}"
|
||||||
|
|
Loading…
Reference in New Issue