Day 8 Part 1
This commit is contained in:
parent
4e44365aff
commit
9a5568d1cf
2 changed files with 678 additions and 0 deletions
40
2020/day8/day8.ex
Normal file
40
2020/day8/day8.ex
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
defmodule Day8 do
|
||||||
|
defp read_input do
|
||||||
|
Path.expand('input', Path.dirname(__ENV__.file))
|
||||||
|
|> File.read!()
|
||||||
|
end
|
||||||
|
|
||||||
|
defp parse_program(text) do
|
||||||
|
String.split(String.trim(text), "\n")
|
||||||
|
|> Enum.map(fn line ->
|
||||||
|
[op, val] = String.split(line)
|
||||||
|
{op, String.to_integer(val)}
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp tick(program, pc, acc) do
|
||||||
|
case Enum.at(program, pc) do
|
||||||
|
{"nop", _} -> {pc + 1, acc}
|
||||||
|
{"acc", int} -> {pc + 1, acc + int}
|
||||||
|
{"jmp", int} -> {pc + int, acc}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp find_loop(program, pc, acc, history) do
|
||||||
|
{next_pc, next_acc} = tick(program, pc, acc)
|
||||||
|
count = Map.get(history, next_pc, 0)
|
||||||
|
|
||||||
|
if count > 0 do
|
||||||
|
acc
|
||||||
|
else
|
||||||
|
find_loop(program, next_pc, next_acc, Map.put(history, next_pc, count + 1))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def part1 do
|
||||||
|
program = parse_program(read_input())
|
||||||
|
find_loop(program, 0, 0, %{})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Day8.part1() |> IO.inspect()
|
||||||
638
2020/day8/input
Normal file
638
2020/day8/input
Normal file
|
|
@ -0,0 +1,638 @@
|
||||||
|
acc +48
|
||||||
|
acc -15
|
||||||
|
jmp +510
|
||||||
|
acc -16
|
||||||
|
acc -9
|
||||||
|
acc +10
|
||||||
|
acc +45
|
||||||
|
jmp +76
|
||||||
|
acc +43
|
||||||
|
acc -5
|
||||||
|
acc +1
|
||||||
|
jmp +306
|
||||||
|
jmp +265
|
||||||
|
jmp +506
|
||||||
|
nop +48
|
||||||
|
nop +596
|
||||||
|
jmp +212
|
||||||
|
acc +30
|
||||||
|
jmp +311
|
||||||
|
jmp +592
|
||||||
|
acc +10
|
||||||
|
jmp +1
|
||||||
|
jmp +153
|
||||||
|
acc +13
|
||||||
|
nop +282
|
||||||
|
jmp +482
|
||||||
|
acc -12
|
||||||
|
acc +22
|
||||||
|
jmp +294
|
||||||
|
acc -14
|
||||||
|
acc +13
|
||||||
|
nop +471
|
||||||
|
acc +26
|
||||||
|
jmp -13
|
||||||
|
acc +11
|
||||||
|
acc +23
|
||||||
|
acc +9
|
||||||
|
jmp +1
|
||||||
|
jmp +158
|
||||||
|
acc +20
|
||||||
|
acc -3
|
||||||
|
jmp +69
|
||||||
|
jmp +546
|
||||||
|
acc +14
|
||||||
|
acc +25
|
||||||
|
nop +488
|
||||||
|
jmp +502
|
||||||
|
acc +14
|
||||||
|
acc -11
|
||||||
|
acc +25
|
||||||
|
acc +0
|
||||||
|
jmp +527
|
||||||
|
acc +45
|
||||||
|
acc +35
|
||||||
|
acc +2
|
||||||
|
acc +33
|
||||||
|
jmp +522
|
||||||
|
acc +44
|
||||||
|
acc +18
|
||||||
|
acc +30
|
||||||
|
jmp +429
|
||||||
|
jmp +290
|
||||||
|
jmp +36
|
||||||
|
acc +36
|
||||||
|
jmp +366
|
||||||
|
acc +0
|
||||||
|
acc +39
|
||||||
|
acc -16
|
||||||
|
jmp +160
|
||||||
|
jmp -27
|
||||||
|
acc -4
|
||||||
|
acc -3
|
||||||
|
acc +24
|
||||||
|
acc +11
|
||||||
|
jmp +321
|
||||||
|
jmp +86
|
||||||
|
acc +24
|
||||||
|
jmp +113
|
||||||
|
acc +28
|
||||||
|
nop +73
|
||||||
|
jmp +47
|
||||||
|
jmp +165
|
||||||
|
jmp +198
|
||||||
|
acc -19
|
||||||
|
acc -13
|
||||||
|
jmp +297
|
||||||
|
nop +175
|
||||||
|
nop +328
|
||||||
|
jmp +16
|
||||||
|
acc -16
|
||||||
|
acc -17
|
||||||
|
acc -7
|
||||||
|
acc +38
|
||||||
|
jmp +409
|
||||||
|
acc +27
|
||||||
|
acc +38
|
||||||
|
acc +2
|
||||||
|
jmp -63
|
||||||
|
jmp +145
|
||||||
|
acc +18
|
||||||
|
nop -74
|
||||||
|
acc +39
|
||||||
|
acc -13
|
||||||
|
jmp -69
|
||||||
|
acc +40
|
||||||
|
acc +47
|
||||||
|
jmp +16
|
||||||
|
acc +9
|
||||||
|
acc +13
|
||||||
|
jmp +494
|
||||||
|
acc +34
|
||||||
|
acc +7
|
||||||
|
jmp +303
|
||||||
|
acc +0
|
||||||
|
jmp +474
|
||||||
|
acc +33
|
||||||
|
acc +41
|
||||||
|
acc +25
|
||||||
|
acc +31
|
||||||
|
jmp -49
|
||||||
|
acc -17
|
||||||
|
jmp +54
|
||||||
|
jmp +172
|
||||||
|
acc +30
|
||||||
|
acc -13
|
||||||
|
acc +13
|
||||||
|
jmp +236
|
||||||
|
acc +19
|
||||||
|
jmp +15
|
||||||
|
acc +24
|
||||||
|
acc -17
|
||||||
|
jmp +7
|
||||||
|
acc +40
|
||||||
|
acc -7
|
||||||
|
acc -13
|
||||||
|
jmp -59
|
||||||
|
acc -2
|
||||||
|
jmp +118
|
||||||
|
acc +50
|
||||||
|
acc +10
|
||||||
|
acc +43
|
||||||
|
jmp +41
|
||||||
|
jmp +406
|
||||||
|
nop +163
|
||||||
|
acc +26
|
||||||
|
acc +34
|
||||||
|
jmp +426
|
||||||
|
acc +0
|
||||||
|
acc +18
|
||||||
|
acc +0
|
||||||
|
acc +1
|
||||||
|
jmp -117
|
||||||
|
acc +42
|
||||||
|
jmp +51
|
||||||
|
acc +21
|
||||||
|
jmp +378
|
||||||
|
jmp -73
|
||||||
|
jmp +437
|
||||||
|
jmp +475
|
||||||
|
acc -10
|
||||||
|
jmp +418
|
||||||
|
jmp +211
|
||||||
|
acc +15
|
||||||
|
acc +27
|
||||||
|
acc +32
|
||||||
|
acc +9
|
||||||
|
jmp +151
|
||||||
|
acc -15
|
||||||
|
acc +6
|
||||||
|
jmp -88
|
||||||
|
acc +14
|
||||||
|
acc +15
|
||||||
|
jmp +1
|
||||||
|
acc +47
|
||||||
|
jmp -36
|
||||||
|
acc +42
|
||||||
|
acc +34
|
||||||
|
nop -39
|
||||||
|
jmp +329
|
||||||
|
acc +24
|
||||||
|
acc +3
|
||||||
|
jmp +418
|
||||||
|
acc +10
|
||||||
|
acc -19
|
||||||
|
acc +23
|
||||||
|
jmp +1
|
||||||
|
jmp +326
|
||||||
|
nop -49
|
||||||
|
acc +19
|
||||||
|
jmp +323
|
||||||
|
jmp -182
|
||||||
|
acc +14
|
||||||
|
nop +164
|
||||||
|
acc +47
|
||||||
|
acc -8
|
||||||
|
jmp +111
|
||||||
|
acc +10
|
||||||
|
nop +240
|
||||||
|
acc +21
|
||||||
|
jmp +100
|
||||||
|
acc +19
|
||||||
|
acc +32
|
||||||
|
acc -5
|
||||||
|
jmp +396
|
||||||
|
acc -14
|
||||||
|
acc -13
|
||||||
|
jmp +18
|
||||||
|
nop -11
|
||||||
|
acc +40
|
||||||
|
acc +27
|
||||||
|
jmp +1
|
||||||
|
jmp -7
|
||||||
|
acc -8
|
||||||
|
acc +14
|
||||||
|
acc +29
|
||||||
|
acc +22
|
||||||
|
jmp +146
|
||||||
|
nop +355
|
||||||
|
jmp +322
|
||||||
|
acc +3
|
||||||
|
acc +17
|
||||||
|
jmp +1
|
||||||
|
jmp +258
|
||||||
|
jmp +404
|
||||||
|
acc -3
|
||||||
|
acc +36
|
||||||
|
jmp +204
|
||||||
|
jmp -3
|
||||||
|
acc -11
|
||||||
|
acc +11
|
||||||
|
jmp +310
|
||||||
|
jmp +1
|
||||||
|
jmp +308
|
||||||
|
acc +11
|
||||||
|
jmp +1
|
||||||
|
acc +47
|
||||||
|
acc -14
|
||||||
|
jmp -81
|
||||||
|
acc -16
|
||||||
|
jmp +1
|
||||||
|
acc +28
|
||||||
|
acc +32
|
||||||
|
jmp +157
|
||||||
|
acc -13
|
||||||
|
jmp +21
|
||||||
|
jmp +312
|
||||||
|
jmp +121
|
||||||
|
jmp +135
|
||||||
|
nop -5
|
||||||
|
nop +6
|
||||||
|
acc +23
|
||||||
|
jmp -136
|
||||||
|
acc +10
|
||||||
|
acc +7
|
||||||
|
jmp +63
|
||||||
|
acc +25
|
||||||
|
nop -214
|
||||||
|
jmp +42
|
||||||
|
acc +12
|
||||||
|
acc +2
|
||||||
|
jmp +1
|
||||||
|
acc +16
|
||||||
|
acc +47
|
||||||
|
jmp -246
|
||||||
|
jmp +42
|
||||||
|
acc +10
|
||||||
|
acc +11
|
||||||
|
nop +344
|
||||||
|
nop +197
|
||||||
|
jmp +190
|
||||||
|
jmp +201
|
||||||
|
jmp -167
|
||||||
|
acc +38
|
||||||
|
nop -45
|
||||||
|
acc +37
|
||||||
|
acc +12
|
||||||
|
jmp +1
|
||||||
|
jmp -235
|
||||||
|
acc +9
|
||||||
|
jmp +254
|
||||||
|
acc +33
|
||||||
|
acc +11
|
||||||
|
nop -11
|
||||||
|
jmp -131
|
||||||
|
nop +22
|
||||||
|
acc +29
|
||||||
|
jmp +1
|
||||||
|
jmp +30
|
||||||
|
jmp -121
|
||||||
|
acc -8
|
||||||
|
nop -115
|
||||||
|
acc -16
|
||||||
|
acc +15
|
||||||
|
jmp +98
|
||||||
|
acc +39
|
||||||
|
jmp +53
|
||||||
|
acc +0
|
||||||
|
acc +5
|
||||||
|
jmp +139
|
||||||
|
acc -12
|
||||||
|
acc -13
|
||||||
|
jmp +50
|
||||||
|
acc +47
|
||||||
|
acc -18
|
||||||
|
acc +8
|
||||||
|
jmp -243
|
||||||
|
acc +22
|
||||||
|
jmp +188
|
||||||
|
acc +5
|
||||||
|
acc +46
|
||||||
|
acc +25
|
||||||
|
jmp +277
|
||||||
|
acc -12
|
||||||
|
jmp +250
|
||||||
|
nop +116
|
||||||
|
acc -19
|
||||||
|
jmp -178
|
||||||
|
acc -3
|
||||||
|
acc +21
|
||||||
|
nop -163
|
||||||
|
jmp -77
|
||||||
|
jmp -15
|
||||||
|
acc -8
|
||||||
|
acc -11
|
||||||
|
jmp +129
|
||||||
|
acc +32
|
||||||
|
acc +46
|
||||||
|
nop +88
|
||||||
|
jmp -51
|
||||||
|
jmp +27
|
||||||
|
acc -11
|
||||||
|
nop +116
|
||||||
|
acc +31
|
||||||
|
jmp -4
|
||||||
|
acc +41
|
||||||
|
jmp -315
|
||||||
|
acc +10
|
||||||
|
nop -76
|
||||||
|
acc +25
|
||||||
|
nop -127
|
||||||
|
jmp -298
|
||||||
|
acc +20
|
||||||
|
acc +1
|
||||||
|
acc -19
|
||||||
|
jmp -125
|
||||||
|
acc +9
|
||||||
|
acc +40
|
||||||
|
jmp +133
|
||||||
|
nop -250
|
||||||
|
jmp -116
|
||||||
|
jmp -189
|
||||||
|
acc +50
|
||||||
|
jmp +78
|
||||||
|
acc -3
|
||||||
|
acc +37
|
||||||
|
jmp -131
|
||||||
|
nop -336
|
||||||
|
acc +22
|
||||||
|
acc +37
|
||||||
|
jmp +94
|
||||||
|
acc +43
|
||||||
|
jmp -319
|
||||||
|
jmp -328
|
||||||
|
acc -18
|
||||||
|
acc +0
|
||||||
|
acc +33
|
||||||
|
jmp -4
|
||||||
|
acc +16
|
||||||
|
jmp +213
|
||||||
|
acc -12
|
||||||
|
acc +23
|
||||||
|
jmp -175
|
||||||
|
acc -17
|
||||||
|
acc -12
|
||||||
|
nop -141
|
||||||
|
nop +228
|
||||||
|
jmp -244
|
||||||
|
acc +11
|
||||||
|
acc +12
|
||||||
|
nop +220
|
||||||
|
nop -184
|
||||||
|
jmp +236
|
||||||
|
acc +42
|
||||||
|
acc +0
|
||||||
|
acc +45
|
||||||
|
acc +34
|
||||||
|
jmp +213
|
||||||
|
acc -18
|
||||||
|
acc +18
|
||||||
|
nop +26
|
||||||
|
jmp +150
|
||||||
|
nop -293
|
||||||
|
nop -277
|
||||||
|
jmp -380
|
||||||
|
jmp -133
|
||||||
|
acc -13
|
||||||
|
jmp -108
|
||||||
|
acc +39
|
||||||
|
jmp +223
|
||||||
|
acc +47
|
||||||
|
acc +14
|
||||||
|
acc +10
|
||||||
|
jmp -90
|
||||||
|
acc -19
|
||||||
|
nop -387
|
||||||
|
acc +24
|
||||||
|
acc -19
|
||||||
|
jmp -203
|
||||||
|
acc +4
|
||||||
|
jmp -132
|
||||||
|
acc +31
|
||||||
|
nop -255
|
||||||
|
nop +187
|
||||||
|
nop +40
|
||||||
|
jmp +126
|
||||||
|
acc -19
|
||||||
|
acc -1
|
||||||
|
acc -13
|
||||||
|
jmp -147
|
||||||
|
acc +0
|
||||||
|
jmp -363
|
||||||
|
acc -5
|
||||||
|
acc -11
|
||||||
|
acc +31
|
||||||
|
acc +44
|
||||||
|
jmp -177
|
||||||
|
nop -406
|
||||||
|
acc +29
|
||||||
|
acc +34
|
||||||
|
jmp -174
|
||||||
|
acc +8
|
||||||
|
acc -6
|
||||||
|
nop -367
|
||||||
|
acc -8
|
||||||
|
jmp +183
|
||||||
|
nop -147
|
||||||
|
jmp +104
|
||||||
|
acc -8
|
||||||
|
nop +69
|
||||||
|
acc -10
|
||||||
|
acc -8
|
||||||
|
jmp -384
|
||||||
|
acc +20
|
||||||
|
acc +39
|
||||||
|
acc -16
|
||||||
|
acc +2
|
||||||
|
jmp -303
|
||||||
|
acc -13
|
||||||
|
jmp +100
|
||||||
|
acc +14
|
||||||
|
acc +22
|
||||||
|
acc +27
|
||||||
|
jmp -354
|
||||||
|
acc +1
|
||||||
|
acc +39
|
||||||
|
acc -7
|
||||||
|
jmp -346
|
||||||
|
acc -10
|
||||||
|
jmp -450
|
||||||
|
nop -188
|
||||||
|
jmp +5
|
||||||
|
jmp +1
|
||||||
|
nop -381
|
||||||
|
acc +42
|
||||||
|
jmp -102
|
||||||
|
acc +13
|
||||||
|
acc +11
|
||||||
|
nop -224
|
||||||
|
jmp -213
|
||||||
|
acc +46
|
||||||
|
jmp +57
|
||||||
|
nop +140
|
||||||
|
jmp +131
|
||||||
|
acc +30
|
||||||
|
acc +25
|
||||||
|
acc -10
|
||||||
|
acc -13
|
||||||
|
jmp -78
|
||||||
|
jmp -144
|
||||||
|
jmp -185
|
||||||
|
acc -17
|
||||||
|
acc +36
|
||||||
|
acc +38
|
||||||
|
jmp +144
|
||||||
|
nop -4
|
||||||
|
acc +9
|
||||||
|
acc +17
|
||||||
|
acc +19
|
||||||
|
jmp +90
|
||||||
|
acc +11
|
||||||
|
nop -380
|
||||||
|
acc +17
|
||||||
|
jmp -403
|
||||||
|
acc -2
|
||||||
|
jmp +94
|
||||||
|
acc +32
|
||||||
|
acc +45
|
||||||
|
nop -249
|
||||||
|
jmp -27
|
||||||
|
acc +13
|
||||||
|
nop -5
|
||||||
|
jmp -439
|
||||||
|
acc +32
|
||||||
|
acc +5
|
||||||
|
jmp -478
|
||||||
|
acc +43
|
||||||
|
jmp -98
|
||||||
|
acc -18
|
||||||
|
jmp -100
|
||||||
|
acc +14
|
||||||
|
acc -14
|
||||||
|
jmp -329
|
||||||
|
acc +46
|
||||||
|
acc +5
|
||||||
|
jmp -353
|
||||||
|
acc -3
|
||||||
|
acc +29
|
||||||
|
acc +44
|
||||||
|
jmp -88
|
||||||
|
acc -11
|
||||||
|
acc -14
|
||||||
|
jmp -100
|
||||||
|
nop -441
|
||||||
|
acc +2
|
||||||
|
acc +25
|
||||||
|
acc +4
|
||||||
|
jmp +7
|
||||||
|
acc -17
|
||||||
|
jmp +1
|
||||||
|
nop -296
|
||||||
|
acc +4
|
||||||
|
jmp -132
|
||||||
|
jmp -417
|
||||||
|
nop -287
|
||||||
|
acc +48
|
||||||
|
nop -40
|
||||||
|
acc -4
|
||||||
|
jmp -146
|
||||||
|
nop -521
|
||||||
|
jmp -183
|
||||||
|
acc -13
|
||||||
|
acc +22
|
||||||
|
jmp +15
|
||||||
|
acc +21
|
||||||
|
acc +22
|
||||||
|
acc +27
|
||||||
|
acc +34
|
||||||
|
jmp -35
|
||||||
|
acc -13
|
||||||
|
nop -417
|
||||||
|
acc +40
|
||||||
|
jmp -114
|
||||||
|
acc +4
|
||||||
|
acc +20
|
||||||
|
acc -1
|
||||||
|
acc -9
|
||||||
|
jmp -514
|
||||||
|
acc +8
|
||||||
|
acc -17
|
||||||
|
acc +19
|
||||||
|
jmp -130
|
||||||
|
acc +11
|
||||||
|
jmp -250
|
||||||
|
nop +58
|
||||||
|
acc +36
|
||||||
|
acc -3
|
||||||
|
acc -5
|
||||||
|
jmp -120
|
||||||
|
acc +11
|
||||||
|
acc +50
|
||||||
|
acc -18
|
||||||
|
jmp -419
|
||||||
|
jmp +1
|
||||||
|
nop -446
|
||||||
|
acc +22
|
||||||
|
acc +28
|
||||||
|
jmp -43
|
||||||
|
jmp -289
|
||||||
|
acc +1
|
||||||
|
jmp -421
|
||||||
|
jmp +14
|
||||||
|
nop -62
|
||||||
|
jmp -55
|
||||||
|
jmp +1
|
||||||
|
acc +5
|
||||||
|
acc +26
|
||||||
|
acc +0
|
||||||
|
jmp -477
|
||||||
|
acc +35
|
||||||
|
acc -17
|
||||||
|
acc +21
|
||||||
|
jmp -200
|
||||||
|
acc -2
|
||||||
|
jmp -128
|
||||||
|
jmp -253
|
||||||
|
acc +28
|
||||||
|
acc +47
|
||||||
|
acc +27
|
||||||
|
jmp -118
|
||||||
|
acc +33
|
||||||
|
jmp -228
|
||||||
|
acc +41
|
||||||
|
jmp -45
|
||||||
|
acc +11
|
||||||
|
acc -14
|
||||||
|
jmp +1
|
||||||
|
acc +35
|
||||||
|
jmp -118
|
||||||
|
acc +13
|
||||||
|
acc +37
|
||||||
|
jmp -108
|
||||||
|
acc +44
|
||||||
|
nop -523
|
||||||
|
acc +45
|
||||||
|
acc +39
|
||||||
|
jmp +6
|
||||||
|
jmp -582
|
||||||
|
jmp -139
|
||||||
|
acc -3
|
||||||
|
jmp +1
|
||||||
|
jmp -9
|
||||||
|
acc +36
|
||||||
|
acc +3
|
||||||
|
acc +49
|
||||||
|
jmp -562
|
||||||
|
acc +14
|
||||||
|
jmp -422
|
||||||
|
acc +41
|
||||||
|
acc +35
|
||||||
|
jmp -582
|
||||||
|
acc -11
|
||||||
|
acc +0
|
||||||
|
jmp -291
|
||||||
|
acc -5
|
||||||
|
acc -6
|
||||||
|
acc +31
|
||||||
|
acc -11
|
||||||
|
jmp +1
|
||||||
Loading…
Reference in a new issue