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:
@@ -23,7 +23,7 @@ The current plan, in no particular order:
|
|||||||
- [ ] PHP
|
- [ ] PHP
|
||||||
- [ ] Prolog
|
- [ ] Prolog
|
||||||
- [ ] Python
|
- [ ] Python
|
||||||
- [ ] Ruby
|
- [x] Ruby - [Day 08](./day-08/solution.rb)
|
||||||
- [ ] Rust
|
- [ ] Rust
|
||||||
- [ ] Scala
|
- [ ] Scala
|
||||||
- [ ] Scheme
|
- [ ] Scheme
|
||||||
|
|||||||
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