m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/08/b.rb
diff options
context:
space:
mode:
Diffstat (limited to '08/b.rb')
-rw-r--r--08/b.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/08/b.rb b/08/b.rb
new file mode 100644
index 0000000..ef4fce1
--- /dev/null
+++ b/08/b.rb
@@ -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