mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 21:00:31 +01:00
Add solution to day 8, in ruby.
This commit is contained in:
1000
2017/day-08/input.txt
Normal file
1000
2017/day-08/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
52
2017/day-08/solution.rb
Executable file
52
2017/day-08/solution.rb
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
|
||||
$registers = Hash.new(0)
|
||||
|
||||
def check_oper(a, oper, b)
|
||||
a = $registers[a]
|
||||
b = b.to_i
|
||||
|
||||
case oper
|
||||
when ">"
|
||||
return a > b
|
||||
when "<"
|
||||
return a < b
|
||||
when ">="
|
||||
return a >= b
|
||||
when "<="
|
||||
return a <= b
|
||||
when "!="
|
||||
return a != b
|
||||
when "=="
|
||||
return a == b
|
||||
end
|
||||
print oper
|
||||
end
|
||||
|
||||
def do_oper(register, oper, val)
|
||||
if oper == "inc"
|
||||
$registers[register] += val.to_i
|
||||
else
|
||||
$registers[register] -= val.to_i
|
||||
end
|
||||
end
|
||||
|
||||
def cur_max
|
||||
return $registers.max_by {|k,v| v}[1]
|
||||
end
|
||||
|
||||
overall_max = 0
|
||||
|
||||
while line = gets
|
||||
parts = line.chomp.split " "
|
||||
|
||||
if check_oper parts[4], parts[5], parts[6]
|
||||
do_oper parts[0], parts[1], parts[2]
|
||||
overall_max = [overall_max, cur_max].max
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
print cur_max, "\n"
|
||||
print overall_max, "\n"
|
||||
Reference in New Issue
Block a user