forked from thib8956/advent-of-code-2k20
day 8 challenge
This commit is contained in:
parent
181029fcdc
commit
1cbe411264
49
day8/day8.py
Normal file
49
day8/day8.py
Normal file
@ -0,0 +1,49 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
|
||||
def part1(instructions):
|
||||
instruction_pointer = 0
|
||||
accumulator = 0
|
||||
visited_instructions = set()
|
||||
while instruction_pointer not in visited_instructions: # return before executing any instruction a second time
|
||||
if instruction_pointer >= len(instructions): # stop the program when ip is out of bounds
|
||||
break
|
||||
visited_instructions.add(instruction_pointer)
|
||||
instruction, argument = instructions[instruction_pointer].split(" ")
|
||||
if instruction == "acc":
|
||||
accumulator += int(argument)
|
||||
instruction_pointer += 1
|
||||
elif instruction == "jmp":
|
||||
value = int(argument)
|
||||
instruction_pointer += value
|
||||
else:
|
||||
instruction_pointer += 1
|
||||
return instruction_pointer, accumulator
|
||||
|
||||
|
||||
def part2(instructions):
|
||||
for index, line in enumerate(instructions):
|
||||
permutation = generate_permutation(instructions, line, index)
|
||||
if permutation is None:
|
||||
continue
|
||||
instruction_pointer, accumulator = part1(permutation)
|
||||
if instruction_pointer == len(permutation):
|
||||
return accumulator
|
||||
|
||||
|
||||
def generate_permutation(instructions, line, index):
|
||||
permutation = instructions[:]
|
||||
instruction, arg = line.split(" ")
|
||||
if instruction == "acc": # don't replace acc operations
|
||||
return
|
||||
elif instruction == "nop":
|
||||
permutation[index] = f"jmp {arg}"
|
||||
elif instruction == "jmp":
|
||||
permutation[index] = f"nop {arg}"
|
||||
return permutation
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
instructions = [line.rstrip() for line in open("input.txt")]
|
||||
print("Part 1 : (ip, acc) ", part1(instructions)[1])
|
||||
print("Part 2 : (ip, acc) ", part2(instructions))
|
608
day8/input.txt
Normal file
608
day8/input.txt
Normal file
@ -0,0 +1,608 @@
|
||||
jmp +232
|
||||
acc +21
|
||||
nop +120
|
||||
jmp +239
|
||||
acc +18
|
||||
acc +41
|
||||
jmp +72
|
||||
acc +47
|
||||
jmp +314
|
||||
jmp +1
|
||||
acc +47
|
||||
nop +175
|
||||
acc +33
|
||||
jmp +115
|
||||
nop -5
|
||||
acc +37
|
||||
acc +25
|
||||
acc +18
|
||||
jmp +304
|
||||
acc +0
|
||||
acc +16
|
||||
jmp +77
|
||||
acc +9
|
||||
acc -3
|
||||
jmp +93
|
||||
acc +16
|
||||
acc -15
|
||||
jmp +110
|
||||
jmp +76
|
||||
acc +36
|
||||
acc +11
|
||||
acc -3
|
||||
jmp +258
|
||||
jmp +241
|
||||
acc +42
|
||||
jmp +514
|
||||
nop +103
|
||||
acc +36
|
||||
acc -18
|
||||
jmp +47
|
||||
acc +5
|
||||
acc +37
|
||||
jmp +480
|
||||
acc -16
|
||||
jmp +1
|
||||
nop +498
|
||||
jmp +1
|
||||
jmp +12
|
||||
acc +0
|
||||
acc +35
|
||||
jmp +437
|
||||
jmp +326
|
||||
acc -15
|
||||
acc -7
|
||||
nop -2
|
||||
jmp +548
|
||||
jmp -4
|
||||
jmp +395
|
||||
jmp +258
|
||||
acc +37
|
||||
acc +17
|
||||
acc -18
|
||||
jmp +345
|
||||
acc -18
|
||||
acc +37
|
||||
acc +36
|
||||
jmp +217
|
||||
acc -4
|
||||
acc +39
|
||||
jmp -35
|
||||
jmp +252
|
||||
jmp +1
|
||||
nop +91
|
||||
jmp +402
|
||||
nop -40
|
||||
jmp +371
|
||||
jmp -72
|
||||
jmp +9
|
||||
acc +41
|
||||
jmp +95
|
||||
nop +252
|
||||
nop +30
|
||||
jmp +240
|
||||
nop +266
|
||||
jmp +462
|
||||
jmp +137
|
||||
acc -14
|
||||
jmp +203
|
||||
jmp +1
|
||||
acc +45
|
||||
acc -14
|
||||
acc -6
|
||||
jmp -9
|
||||
acc -15
|
||||
acc +6
|
||||
nop +298
|
||||
jmp -56
|
||||
jmp +14
|
||||
acc +32
|
||||
jmp +40
|
||||
acc +17
|
||||
nop +62
|
||||
acc +14
|
||||
jmp +119
|
||||
acc +49
|
||||
jmp -29
|
||||
acc +27
|
||||
acc -12
|
||||
acc +14
|
||||
acc +19
|
||||
jmp +253
|
||||
acc +19
|
||||
jmp +345
|
||||
acc -17
|
||||
acc +39
|
||||
jmp +1
|
||||
jmp +133
|
||||
jmp +268
|
||||
acc -14
|
||||
acc -16
|
||||
acc +45
|
||||
jmp +373
|
||||
jmp +116
|
||||
jmp +245
|
||||
acc -19
|
||||
acc +32
|
||||
jmp -22
|
||||
jmp +105
|
||||
acc -9
|
||||
acc +27
|
||||
acc +16
|
||||
nop +397
|
||||
jmp +110
|
||||
acc +13
|
||||
acc -10
|
||||
acc +10
|
||||
jmp -69
|
||||
jmp +29
|
||||
jmp +94
|
||||
acc +38
|
||||
acc +49
|
||||
acc +40
|
||||
jmp +261
|
||||
acc +43
|
||||
acc -13
|
||||
jmp +214
|
||||
acc -10
|
||||
nop -80
|
||||
acc +15
|
||||
jmp +228
|
||||
acc +0
|
||||
jmp +275
|
||||
jmp -69
|
||||
acc +46
|
||||
acc +4
|
||||
acc +24
|
||||
acc +6
|
||||
jmp +279
|
||||
acc -9
|
||||
nop +281
|
||||
jmp +286
|
||||
acc -4
|
||||
jmp +306
|
||||
jmp +342
|
||||
acc -14
|
||||
jmp +357
|
||||
acc -10
|
||||
nop -9
|
||||
acc +10
|
||||
acc +40
|
||||
jmp +427
|
||||
acc +0
|
||||
acc +32
|
||||
jmp +405
|
||||
acc +45
|
||||
acc +34
|
||||
nop +281
|
||||
acc +34
|
||||
jmp +394
|
||||
acc +41
|
||||
acc +20
|
||||
jmp -98
|
||||
jmp -60
|
||||
acc -3
|
||||
acc +17
|
||||
jmp +19
|
||||
acc +6
|
||||
nop +168
|
||||
acc +35
|
||||
jmp -141
|
||||
nop -62
|
||||
acc +8
|
||||
acc +16
|
||||
jmp +117
|
||||
acc +34
|
||||
acc -8
|
||||
acc +35
|
||||
acc -15
|
||||
jmp +85
|
||||
acc +2
|
||||
acc -9
|
||||
acc -4
|
||||
acc +49
|
||||
jmp +394
|
||||
nop -145
|
||||
acc +47
|
||||
jmp +16
|
||||
acc +10
|
||||
acc +0
|
||||
jmp +87
|
||||
nop -88
|
||||
acc -9
|
||||
acc -16
|
||||
acc +45
|
||||
jmp +374
|
||||
acc +28
|
||||
acc +38
|
||||
jmp -139
|
||||
acc -13
|
||||
acc +13
|
||||
jmp +143
|
||||
jmp -135
|
||||
jmp -4
|
||||
jmp -130
|
||||
acc +5
|
||||
nop -196
|
||||
jmp +48
|
||||
acc -10
|
||||
jmp +149
|
||||
acc -14
|
||||
jmp +210
|
||||
jmp +325
|
||||
acc +45
|
||||
acc +11
|
||||
acc -15
|
||||
jmp +97
|
||||
nop +107
|
||||
jmp -98
|
||||
acc -7
|
||||
acc -18
|
||||
jmp -181
|
||||
jmp +122
|
||||
acc -15
|
||||
jmp -49
|
||||
jmp +1
|
||||
acc +36
|
||||
acc -10
|
||||
jmp +1
|
||||
jmp +62
|
||||
acc +39
|
||||
jmp +105
|
||||
acc +19
|
||||
nop +253
|
||||
acc -11
|
||||
acc -9
|
||||
jmp +77
|
||||
acc +50
|
||||
acc +3
|
||||
acc -18
|
||||
acc +17
|
||||
jmp +56
|
||||
nop -209
|
||||
nop +272
|
||||
acc -13
|
||||
jmp +270
|
||||
nop +229
|
||||
acc +12
|
||||
jmp +1
|
||||
jmp -44
|
||||
acc -13
|
||||
jmp +1
|
||||
nop +275
|
||||
acc +45
|
||||
jmp -254
|
||||
acc -2
|
||||
acc -2
|
||||
nop -148
|
||||
jmp -91
|
||||
acc +2
|
||||
nop -30
|
||||
acc -8
|
||||
acc +0
|
||||
jmp -96
|
||||
nop +1
|
||||
jmp -74
|
||||
acc -19
|
||||
acc +10
|
||||
acc +26
|
||||
acc +30
|
||||
jmp -280
|
||||
acc +46
|
||||
acc -2
|
||||
acc -8
|
||||
jmp +277
|
||||
acc -9
|
||||
jmp +205
|
||||
acc -13
|
||||
acc +10
|
||||
jmp +1
|
||||
jmp +219
|
||||
acc +38
|
||||
acc +24
|
||||
acc +11
|
||||
jmp -129
|
||||
jmp -86
|
||||
jmp +1
|
||||
acc +0
|
||||
jmp +1
|
||||
acc +46
|
||||
jmp -135
|
||||
nop +218
|
||||
acc -14
|
||||
acc +0
|
||||
jmp +55
|
||||
acc +24
|
||||
jmp +213
|
||||
acc +19
|
||||
acc +16
|
||||
jmp -266
|
||||
acc +24
|
||||
acc +15
|
||||
jmp +158
|
||||
acc +3
|
||||
jmp -94
|
||||
acc +16
|
||||
acc +24
|
||||
acc +42
|
||||
jmp +201
|
||||
jmp -32
|
||||
acc +34
|
||||
nop -321
|
||||
jmp +212
|
||||
acc +12
|
||||
acc +41
|
||||
jmp -212
|
||||
acc +32
|
||||
jmp +236
|
||||
acc +45
|
||||
nop +253
|
||||
jmp +129
|
||||
nop -3
|
||||
acc +38
|
||||
jmp +35
|
||||
acc -15
|
||||
acc +21
|
||||
acc -7
|
||||
acc -6
|
||||
jmp +46
|
||||
jmp -5
|
||||
acc +5
|
||||
acc +4
|
||||
acc +42
|
||||
jmp +142
|
||||
acc +36
|
||||
jmp -180
|
||||
acc +23
|
||||
jmp -46
|
||||
acc +12
|
||||
jmp +5
|
||||
jmp +201
|
||||
acc +36
|
||||
acc -14
|
||||
jmp -30
|
||||
jmp -338
|
||||
acc +12
|
||||
acc +34
|
||||
acc +2
|
||||
jmp -310
|
||||
acc -15
|
||||
jmp -104
|
||||
jmp -148
|
||||
jmp +108
|
||||
acc +37
|
||||
acc -6
|
||||
acc +0
|
||||
acc +13
|
||||
jmp -324
|
||||
acc +49
|
||||
acc +37
|
||||
acc +37
|
||||
jmp +131
|
||||
acc +2
|
||||
acc +30
|
||||
acc +12
|
||||
jmp -238
|
||||
acc -12
|
||||
acc +4
|
||||
jmp -155
|
||||
acc +45
|
||||
acc -10
|
||||
nop -168
|
||||
nop +114
|
||||
jmp +113
|
||||
acc +15
|
||||
acc +41
|
||||
acc +6
|
||||
acc +34
|
||||
jmp +25
|
||||
acc +46
|
||||
acc +28
|
||||
acc +44
|
||||
acc -3
|
||||
jmp -70
|
||||
acc +2
|
||||
acc +37
|
||||
jmp -101
|
||||
jmp +51
|
||||
acc +45
|
||||
nop -399
|
||||
nop -60
|
||||
jmp -391
|
||||
acc +41
|
||||
jmp -57
|
||||
jmp -54
|
||||
acc +46
|
||||
jmp +90
|
||||
acc +6
|
||||
jmp +83
|
||||
acc +37
|
||||
jmp +1
|
||||
acc -6
|
||||
jmp -189
|
||||
acc +0
|
||||
jmp -241
|
||||
acc +35
|
||||
jmp -396
|
||||
acc +35
|
||||
acc +42
|
||||
acc +37
|
||||
acc +20
|
||||
jmp -81
|
||||
nop +74
|
||||
acc +41
|
||||
acc +23
|
||||
jmp +1
|
||||
jmp -349
|
||||
jmp -232
|
||||
acc +37
|
||||
acc +24
|
||||
jmp +121
|
||||
jmp -144
|
||||
acc +35
|
||||
acc +39
|
||||
acc -12
|
||||
acc +14
|
||||
jmp -113
|
||||
acc +2
|
||||
acc +29
|
||||
acc -6
|
||||
acc +0
|
||||
jmp -326
|
||||
jmp -426
|
||||
acc +18
|
||||
acc +39
|
||||
acc +22
|
||||
jmp +79
|
||||
jmp +23
|
||||
acc -17
|
||||
nop +42
|
||||
acc -8
|
||||
jmp -47
|
||||
acc -12
|
||||
jmp -276
|
||||
jmp -126
|
||||
acc +20
|
||||
acc +3
|
||||
acc +41
|
||||
jmp -31
|
||||
acc -1
|
||||
jmp +1
|
||||
jmp -241
|
||||
acc +9
|
||||
acc +12
|
||||
acc +0
|
||||
jmp +26
|
||||
acc +30
|
||||
nop +46
|
||||
jmp -134
|
||||
jmp -361
|
||||
acc +50
|
||||
nop -1
|
||||
nop -225
|
||||
jmp -226
|
||||
acc +42
|
||||
acc +0
|
||||
jmp +1
|
||||
jmp -170
|
||||
acc +14
|
||||
acc +19
|
||||
jmp -199
|
||||
nop +15
|
||||
acc -11
|
||||
acc +20
|
||||
jmp -161
|
||||
nop -348
|
||||
acc -6
|
||||
acc +49
|
||||
jmp -468
|
||||
acc +11
|
||||
jmp -413
|
||||
acc -11
|
||||
acc -1
|
||||
acc +45
|
||||
jmp -181
|
||||
jmp -380
|
||||
nop -128
|
||||
acc +40
|
||||
jmp -179
|
||||
acc -9
|
||||
acc +24
|
||||
jmp -358
|
||||
acc +50
|
||||
acc +13
|
||||
acc -15
|
||||
jmp +14
|
||||
acc +4
|
||||
acc +12
|
||||
jmp -365
|
||||
nop -269
|
||||
jmp -443
|
||||
nop -224
|
||||
jmp -108
|
||||
acc +46
|
||||
acc -11
|
||||
jmp -515
|
||||
acc -8
|
||||
nop -284
|
||||
jmp -444
|
||||
acc +15
|
||||
nop -11
|
||||
jmp -288
|
||||
acc +28
|
||||
acc +35
|
||||
jmp -416
|
||||
acc +27
|
||||
acc -8
|
||||
acc -10
|
||||
acc +0
|
||||
jmp -167
|
||||
acc -9
|
||||
acc +42
|
||||
acc +20
|
||||
jmp -63
|
||||
jmp -107
|
||||
acc -6
|
||||
jmp -335
|
||||
jmp -460
|
||||
acc -2
|
||||
jmp -420
|
||||
acc +27
|
||||
acc +6
|
||||
jmp -458
|
||||
acc +31
|
||||
nop +19
|
||||
nop -396
|
||||
jmp -479
|
||||
nop -234
|
||||
acc +42
|
||||
jmp -142
|
||||
jmp -511
|
||||
nop +28
|
||||
acc -9
|
||||
acc +36
|
||||
acc +38
|
||||
jmp +27
|
||||
acc -3
|
||||
acc +9
|
||||
acc -19
|
||||
acc +3
|
||||
jmp -133
|
||||
jmp -503
|
||||
jmp -267
|
||||
acc +40
|
||||
acc +41
|
||||
acc +13
|
||||
nop -492
|
||||
jmp -327
|
||||
jmp -339
|
||||
acc +17
|
||||
acc +4
|
||||
acc +45
|
||||
acc +13
|
||||
jmp -419
|
||||
acc +31
|
||||
acc +0
|
||||
acc +37
|
||||
acc -13
|
||||
jmp -210
|
||||
jmp -517
|
||||
acc -15
|
||||
jmp -47
|
||||
acc -16
|
||||
jmp -129
|
||||
acc +16
|
||||
nop -455
|
||||
nop -263
|
||||
jmp -74
|
||||
acc +5
|
||||
acc +20
|
||||
acc +45
|
||||
acc +23
|
||||
jmp -490
|
||||
jmp -53
|
||||
acc +40
|
||||
jmp +1
|
||||
acc -14
|
||||
acc -1
|
||||
jmp +1
|
Loading…
Reference in New Issue
Block a user