diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-12-25 15:23:39 +0100 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-12-25 15:23:39 +0100 |
commit | 1362f76e60c32a7bf0e7240b01524d16734f8dd4 (patch) | |
tree | 134e5794c1784259e81cc383712dde4e0fd6afb9 /08/b.rb | |
parent | e2dd1e03066c593a1df19190c4c72f27ea9714dd (diff) |
Add day 8
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 |