diff --git a/2020/08/example b/2020/08/example new file mode 100644 index 0000000..178df53 --- /dev/null +++ b/2020/08/example @@ -0,0 +1,9 @@ +nop +0 +acc +1 +jmp +4 +acc +3 +jmp -3 +acc -99 +acc +1 +jmp -4 +acc +6 diff --git a/2020/08/input b/2020/08/input new file mode 100644 index 0000000..947a37d --- /dev/null +++ b/2020/08/input @@ -0,0 +1,638 @@ +acc +8 +acc +37 +jmp +328 +jmp +574 +nop +321 +acc +17 +jmp +450 +acc +46 +acc -15 +nop -5 +acc +48 +jmp +358 +jmp +29 +acc +23 +jmp +11 +acc -14 +jmp +561 +acc +9 +acc +17 +jmp +136 +jmp +394 +acc +24 +acc +37 +acc +19 +jmp +241 +acc +38 +acc +44 +acc -5 +jmp -8 +acc +50 +acc -9 +acc +5 +jmp +424 +acc -15 +nop +93 +acc -1 +jmp +414 +jmp +548 +jmp +454 +acc +39 +jmp +490 +jmp +103 +jmp +214 +acc +37 +jmp +164 +acc +34 +jmp +362 +acc +24 +acc +32 +jmp +375 +jmp +500 +acc +23 +nop -1 +nop +463 +jmp +108 +acc +14 +jmp +106 +acc +20 +nop +298 +nop -39 +jmp +321 +jmp +1 +jmp +515 +nop +6 +acc +3 +acc +18 +acc -10 +jmp +353 +jmp -43 +jmp +1 +acc +0 +acc +7 +jmp +507 +nop +396 +jmp -62 +acc +30 +acc -13 +jmp +466 +jmp +137 +acc +6 +jmp +211 +acc +33 +acc +4 +jmp +269 +acc +50 +nop -65 +acc +18 +jmp -54 +jmp -68 +nop +38 +acc -6 +jmp +165 +nop +342 +acc +31 +acc +30 +nop +465 +jmp +273 +acc +35 +jmp +201 +acc +13 +acc +18 +acc +28 +acc +40 +jmp +244 +nop -63 +acc +25 +acc +16 +jmp -32 +acc -6 +acc +17 +jmp +298 +jmp +358 +acc +28 +jmp +1 +acc +27 +jmp +204 +jmp +4 +acc +17 +acc +47 +jmp +83 +acc -14 +jmp -42 +acc +0 +acc +14 +acc -9 +acc +13 +jmp +108 +acc +1 +acc -8 +acc +44 +jmp +420 +acc -1 +acc +24 +jmp +101 +acc -10 +nop +493 +nop +140 +acc -12 +jmp -134 +acc +21 +nop +385 +acc +38 +acc +4 +jmp +349 +jmp +225 +nop +432 +jmp +421 +acc +33 +acc +11 +jmp +462 +acc +21 +acc +11 +acc +5 +acc +15 +jmp +260 +nop +308 +acc -6 +acc -14 +acc -3 +jmp +178 +nop -33 +jmp +80 +acc +33 +acc -11 +acc +39 +jmp +145 +jmp +64 +acc +49 +acc +47 +acc +13 +jmp +331 +acc +1 +jmp -10 +acc +37 +nop +276 +jmp +259 +acc +16 +acc +38 +jmp +121 +acc +11 +nop +301 +acc +2 +jmp +94 +nop +186 +nop +255 +jmp -106 +nop -171 +acc +35 +acc -1 +acc +44 +jmp +129 +acc +27 +acc -6 +jmp -150 +acc +12 +acc +19 +acc +15 +jmp +247 +nop +309 +nop +429 +nop -131 +jmp +410 +jmp +187 +acc -4 +acc +45 +acc +3 +acc -16 +jmp -166 +acc +41 +jmp +276 +acc -2 +nop +23 +acc +11 +acc +19 +jmp +271 +acc +35 +jmp +136 +acc +46 +acc -9 +nop +189 +jmp +1 +jmp -201 +acc -11 +nop -190 +acc +9 +jmp +175 +acc +25 +acc +10 +acc -12 +jmp -50 +acc +44 +jmp +132 +acc -14 +jmp -71 +acc +47 +acc -9 +jmp -125 +jmp +1 +acc -5 +acc +47 +jmp +184 +nop -26 +jmp -48 +acc +24 +acc +33 +acc +38 +jmp +246 +acc +38 +nop -114 +nop +42 +nop +131 +jmp +256 +acc +48 +nop -126 +acc +20 +jmp +189 +acc +39 +nop +206 +acc +2 +acc +8 +jmp +279 +acc +31 +acc +8 +acc -14 +jmp +221 +acc -14 +acc +4 +jmp +161 +jmp +188 +acc +13 +acc +50 +acc -10 +acc +42 +jmp -169 +acc +25 +jmp +292 +acc +40 +jmp +53 +acc -1 +acc +29 +acc +20 +jmp -240 +jmp +4 +acc +28 +acc -9 +jmp -158 +jmp +305 +acc +47 +nop -250 +nop -155 +jmp +321 +acc +24 +acc +48 +acc +41 +acc -2 +jmp -61 +acc +40 +jmp +1 +jmp -209 +jmp +231 +acc +28 +acc +13 +jmp +45 +nop +147 +nop -35 +jmp -36 +acc +33 +acc +12 +acc +7 +jmp -62 +nop +1 +acc +3 +acc +18 +jmp +320 +acc +9 +acc -19 +acc -3 +acc +11 +jmp -151 +acc +11 +acc +31 +jmp -296 +acc -10 +acc +21 +jmp +104 +acc +46 +acc +22 +jmp +29 +jmp +1 +jmp +187 +acc -7 +acc +28 +acc +1 +acc +8 +jmp +74 +acc +45 +jmp +114 +acc +21 +nop -204 +jmp -327 +acc +5 +acc +36 +jmp -148 +jmp +285 +acc +2 +jmp +1 +jmp +197 +jmp +271 +nop +137 +nop +279 +acc +41 +jmp +1 +acc +43 +jmp +214 +nop -307 +jmp +245 +acc -13 +nop -210 +jmp +56 +acc -7 +acc +18 +acc +12 +jmp +88 +acc -18 +acc +32 +jmp +1 +jmp -199 +acc -9 +jmp -317 +acc -17 +acc +2 +nop +202 +acc +20 +jmp +227 +jmp -44 +jmp -28 +acc -9 +acc +12 +acc -10 +acc +3 +jmp -115 +acc +19 +acc +22 +jmp -340 +acc -7 +acc +7 +acc +32 +acc -11 +jmp -19 +acc +7 +jmp +1 +acc +14 +jmp -89 +acc +39 +jmp +75 +acc +32 +nop +215 +acc +40 +jmp +83 +jmp +204 +acc +1 +acc +29 +acc -2 +jmp +70 +acc -15 +acc -1 +nop -381 +jmp +27 +nop +65 +acc +40 +jmp -299 +acc +16 +acc +13 +jmp -24 +acc +26 +jmp -20 +acc +36 +acc +10 +nop -274 +jmp -394 +jmp +165 +acc +33 +acc -7 +jmp -419 +jmp -386 +nop -298 +nop -406 +jmp -108 +acc +10 +acc +46 +acc +0 +nop +50 +jmp -343 +jmp -5 +acc -8 +jmp -233 +acc +13 +acc +43 +jmp +87 +jmp +24 +acc +35 +nop -421 +acc +46 +jmp -35 +jmp -55 +acc +24 +acc +17 +acc -16 +acc +26 +jmp +128 +nop -11 +jmp +167 +acc +25 +acc +14 +nop -59 +jmp -108 +acc +50 +acc -18 +acc +45 +jmp -390 +acc -2 +acc +16 +jmp +123 +acc +41 +jmp -242 +nop -338 +acc -15 +acc +44 +jmp -227 +nop +159 +acc +10 +jmp -298 +jmp -338 +acc +10 +acc +9 +acc +24 +nop -173 +jmp -330 +nop -453 +acc +2 +jmp +1 +jmp -138 +acc +21 +acc +50 +jmp -451 +acc +19 +acc -7 +nop -454 +jmp +85 +acc -11 +acc +19 +jmp -394 +acc +27 +acc +4 +acc +42 +jmp -491 +acc +36 +acc +33 +acc -5 +acc +39 +jmp -425 +acc +46 +acc +10 +jmp -452 +acc -1 +acc +36 +jmp -339 +acc +26 +acc +24 +acc -8 +jmp -376 +acc +35 +jmp +1 +acc -4 +acc +24 +jmp -71 +acc +46 +acc -4 +acc -8 +jmp -289 +acc +11 +acc +32 +acc +32 +acc +26 +jmp -214 +acc +46 +nop -485 +acc +16 +jmp -287 +jmp -95 +acc +36 +nop -376 +acc -13 +jmp -406 +nop -278 +acc +22 +acc +21 +acc +33 +jmp -463 +jmp +11 +nop -346 +acc +33 +jmp -86 +acc -17 +nop -350 +nop +83 +jmp -299 +acc +31 +acc +28 +jmp -516 +acc -13 +acc +15 +acc -19 +jmp -338 +acc +21 +acc +10 +jmp -309 +jmp -473 +nop -150 +jmp +44 +acc +45 +acc +41 +acc +41 +nop -139 +jmp -448 +jmp +1 +jmp -103 +nop -433 +acc +1 +acc -1 +acc +0 +jmp -289 +jmp -531 +jmp -134 +acc +21 +acc +14 +jmp -51 +jmp -520 +jmp -275 +acc +6 +acc +42 +jmp -256 +acc +26 +acc +36 +jmp -17 +acc +11 +acc +32 +nop -244 +acc +42 +jmp -546 +jmp -565 +acc +31 +acc -12 +nop -496 +jmp -531 +acc +25 +nop -196 +acc -18 +acc +10 +jmp -22 +nop -231 +jmp -41 +jmp -555 +acc +37 +acc -14 +acc +43 +jmp -462 +acc -11 +acc +43 +acc +15 +jmp -229 +acc +0 +acc +20 +acc -18 +nop -3 +jmp -240 +acc +37 +jmp -520 +nop -424 +jmp +1 +jmp +1 +nop -158 +jmp -19 +acc +0 +nop -591 +acc +29 +nop -192 +jmp -24 +nop -55 +jmp -364 +acc +5 +acc +33 +jmp -176 +acc +25 +acc +6 +acc +21 +acc +16 +jmp +1 diff --git a/2020/08/solution.py b/2020/08/solution.py new file mode 100644 index 0000000..47f912a --- /dev/null +++ b/2020/08/solution.py @@ -0,0 +1,37 @@ +import time + +tag8 = open('input', 'r') + +tag8 = [x.strip() for x in tag8] + +print(tag8) + +acc = 0 +zeiger = 0 + +besucht = list() + +print('=' * 10, ' start loop', '=' * 10) +while True: + if zeiger in besucht: + break + + zeile = tag8[zeiger] + besucht.append(zeiger) + + instruction = zeile[0:3] + number = int(zeile[4:]) + if instruction == 'jmp': + zeiger += number + else: + zeiger += 1 + if instruction == 'acc': + acc += number + + print(zeile, '\tacc:', acc, '\tzeiger:', zeiger, '\tbesucht:', besucht) + print() + time.sleep(0.3) + +print('=' * 10, ' end loop', '=' * 10) + +print('acc:', acc, '\tzeiger:', zeiger, '\tbesucht:', besucht) diff --git a/2020/08/solution2.py b/2020/08/solution2.py new file mode 100644 index 0000000..06d6500 --- /dev/null +++ b/2020/08/solution2.py @@ -0,0 +1,54 @@ +tag8 = open('input', 'r') + +tag8 = [x.strip() for x in tag8] + + +def run_game(): + acc = 0 + zeiger = 0 + besucht = list() + print('=' * 10, 'LOOP START', '=' * 10) + while zeiger < len(tag8): + if zeiger in besucht: + print('=' * 10, 'LOOP END. loop detected', '=' * 10) + return False + + zeile = tag8[zeiger] + besucht.append(zeiger) + + instruction = zeile[0:3] + number = int(zeile[4:]) + if instruction == 'jmp': + zeiger += number + else: + zeiger += 1 + if instruction == 'acc': + acc += number + print(zeile, 'zeiger', zeiger) + print('=' * 10, 'LOOP END. Terminated', '=' * 10) + return acc + + +acc = False + +for zeilennummer, zeile in enumerate(tag8): + instruction = zeile[0:3] + rest = zeile[3:] + if instruction == 'nop': + tag8[zeilennummer] = 'jmp' + rest + acc = run_game() + if acc: + print(f'Success: Changed line {zeile} to jmp') + break + tag8[zeilennummer] = 'nop' + rest + elif instruction == 'jmp': + tag8[zeilennummer] = 'nop' + rest + acc = run_game() + if acc: + print(f'Success: Changed line {zeile} to nop') + break + tag8[zeilennummer] = 'jmp' + rest + print(f'Processed line {zeile}') + + +print('Acc nach der Schleife:', acc)