solved part 2
parent
bee31dafb9
commit
b39d71d124
|
@ -0,0 +1,40 @@
|
|||
#!/bin/env ruby
|
||||
|
||||
def run_code (instructions)
|
||||
acc = 0
|
||||
tracker = Array.new(instructions.length, false)
|
||||
i = 0
|
||||
success = false
|
||||
while tracker[i] == false do
|
||||
tracker[i] = true
|
||||
case instructions[i][0..2]
|
||||
when 'acc'
|
||||
acc += instructions[i].split(' ')[1].to_i
|
||||
i += 1
|
||||
when 'jmp'
|
||||
i += instructions[i].split(' ')[1].to_i
|
||||
when 'nop'
|
||||
i += 1
|
||||
end
|
||||
success = true if i == instructions.length
|
||||
end
|
||||
return success, acc, tracker
|
||||
end
|
||||
|
||||
input = File.readlines('./input').to_ary.map(&:strip)
|
||||
succ, acc, tracker = false, 0, []
|
||||
|
||||
input.each.with_index do |instruction, i|
|
||||
mod = input.map(&:clone)
|
||||
if instruction[0..2] == 'jmp'
|
||||
mod[i][0..2] = 'nop'
|
||||
elsif instruction[0..2] == 'nop'
|
||||
mod[i][0..2] = 'jmp'
|
||||
else
|
||||
next
|
||||
end
|
||||
succ, acc, tracker = run_code(mod)
|
||||
break if succ == true
|
||||
end
|
||||
|
||||
p acc
|
Loading…
Reference in New Issue