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