diff options
Diffstat (limited to '08/b.rb')
-rw-r--r-- | 08/b.rb | 46 |
1 files changed, 46 insertions, 0 deletions
@@ -0,0 +1,46 @@ +code = [] + +File.readlines('input.txt').each do |line| + instruction, number = line.split + code.push [instruction, number.to_i] +end + +visited = {} +current_line = 0 +acc = 0 + +code.size.times do |i| + code_copy = code.map {|e| e.slice(0, 2)} + case code_copy[i][0] + when 'jmp' + code_copy[i][0] = 'nop' + when 'nop' + code_copy[i][0] = 'jmp' + end + + + visited = {} + current_line = 0 + acc = 0 + + while !visited[current_line] + if current_line == code.size + puts acc + break + elsif current_line > code.size + puts 'incorrect run' + break + end + + visited[current_line] = true + case code_copy[current_line][0] + when 'nop' + current_line += 1 + when 'acc' + acc += code_copy[current_line][1] + current_line += 1 + when 'jmp' + current_line += code_copy[current_line][1] + end + end +end |