mirror of
https://github.com/mx42/adventofcode.git
synced 2026-01-14 05:49:52 +01:00
Add 2020 day 8
This commit is contained in:
637
haskellAoC/inputs/2020/08
Normal file
637
haskellAoC/inputs/2020/08
Normal file
@@ -0,0 +1,637 @@
|
||||
jmp +248
|
||||
acc +11
|
||||
acc +50
|
||||
acc +44
|
||||
jmp +531
|
||||
acc -17
|
||||
jmp +572
|
||||
acc +19
|
||||
acc +9
|
||||
jmp +221
|
||||
nop +373
|
||||
acc +7
|
||||
jmp +502
|
||||
acc +39
|
||||
jmp +12
|
||||
acc +7
|
||||
nop +482
|
||||
jmp +144
|
||||
acc -4
|
||||
jmp +85
|
||||
acc +12
|
||||
nop +446
|
||||
nop +162
|
||||
jmp +270
|
||||
acc -19
|
||||
jmp +402
|
||||
acc +8
|
||||
acc +28
|
||||
acc -13
|
||||
acc +30
|
||||
jmp +81
|
||||
acc -15
|
||||
jmp +20
|
||||
acc +28
|
||||
jmp -19
|
||||
nop +190
|
||||
acc +2
|
||||
jmp +61
|
||||
nop +237
|
||||
jmp +421
|
||||
acc +24
|
||||
jmp +221
|
||||
acc +1
|
||||
jmp +1
|
||||
jmp +265
|
||||
nop +94
|
||||
jmp +1
|
||||
jmp +370
|
||||
acc +19
|
||||
nop +39
|
||||
jmp +454
|
||||
jmp +162
|
||||
jmp +196
|
||||
jmp +7
|
||||
acc +37
|
||||
acc +14
|
||||
jmp +542
|
||||
acc -10
|
||||
acc +1
|
||||
jmp +324
|
||||
nop -45
|
||||
acc -5
|
||||
jmp +303
|
||||
acc +25
|
||||
acc +17
|
||||
nop +74
|
||||
nop +330
|
||||
jmp -7
|
||||
acc +45
|
||||
jmp +483
|
||||
acc -4
|
||||
jmp +230
|
||||
jmp +61
|
||||
jmp +1
|
||||
nop +440
|
||||
jmp +104
|
||||
acc +33
|
||||
jmp +140
|
||||
acc -8
|
||||
jmp +19
|
||||
acc -10
|
||||
acc +0
|
||||
acc +8
|
||||
acc +30
|
||||
jmp +37
|
||||
jmp +457
|
||||
jmp +108
|
||||
jmp +182
|
||||
acc +23
|
||||
acc +38
|
||||
acc -1
|
||||
acc +8
|
||||
jmp +330
|
||||
acc +2
|
||||
acc -2
|
||||
nop +483
|
||||
acc +31
|
||||
jmp +426
|
||||
acc +25
|
||||
acc +1
|
||||
jmp +296
|
||||
acc +10
|
||||
acc +32
|
||||
jmp +223
|
||||
acc +3
|
||||
nop +350
|
||||
acc +29
|
||||
acc +4
|
||||
jmp +427
|
||||
acc +42
|
||||
jmp +312
|
||||
acc +7
|
||||
acc -6
|
||||
nop +366
|
||||
nop +409
|
||||
jmp +364
|
||||
jmp -78
|
||||
acc +42
|
||||
jmp +159
|
||||
acc +33
|
||||
jmp +128
|
||||
nop +86
|
||||
acc +5
|
||||
jmp +1
|
||||
acc +47
|
||||
jmp +150
|
||||
acc -8
|
||||
jmp -101
|
||||
acc +31
|
||||
nop +55
|
||||
acc +2
|
||||
jmp +39
|
||||
jmp +12
|
||||
acc +5
|
||||
jmp +1
|
||||
jmp -115
|
||||
nop +141
|
||||
nop +418
|
||||
jmp +75
|
||||
nop +430
|
||||
acc -19
|
||||
acc -12
|
||||
jmp +83
|
||||
jmp +82
|
||||
acc +27
|
||||
jmp -65
|
||||
acc -5
|
||||
jmp +422
|
||||
acc +16
|
||||
acc +20
|
||||
jmp +336
|
||||
acc +29
|
||||
jmp -110
|
||||
acc +1
|
||||
acc +13
|
||||
acc +37
|
||||
jmp +38
|
||||
acc +45
|
||||
acc +2
|
||||
acc +45
|
||||
jmp -12
|
||||
acc +36
|
||||
acc +26
|
||||
acc +50
|
||||
jmp +343
|
||||
acc -17
|
||||
acc -18
|
||||
acc +34
|
||||
acc +23
|
||||
jmp +274
|
||||
acc +20
|
||||
acc +12
|
||||
nop +129
|
||||
acc -1
|
||||
jmp +5
|
||||
acc +39
|
||||
acc +40
|
||||
acc +28
|
||||
jmp +272
|
||||
jmp +147
|
||||
acc +50
|
||||
jmp +1
|
||||
acc +17
|
||||
jmp -131
|
||||
acc +8
|
||||
acc -17
|
||||
acc -16
|
||||
acc +7
|
||||
jmp +25
|
||||
acc +47
|
||||
acc +14
|
||||
acc +27
|
||||
acc -2
|
||||
jmp +224
|
||||
acc -6
|
||||
acc -10
|
||||
acc +23
|
||||
jmp -109
|
||||
acc -1
|
||||
jmp -145
|
||||
acc +40
|
||||
nop +275
|
||||
jmp +420
|
||||
nop -92
|
||||
nop -43
|
||||
jmp +1
|
||||
jmp -134
|
||||
nop +297
|
||||
acc +14
|
||||
jmp +60
|
||||
nop +412
|
||||
nop +14
|
||||
jmp -79
|
||||
jmp +1
|
||||
acc +25
|
||||
jmp +176
|
||||
jmp -206
|
||||
acc +50
|
||||
acc +17
|
||||
jmp +271
|
||||
acc +9
|
||||
nop -82
|
||||
acc +6
|
||||
acc +19
|
||||
jmp +184
|
||||
acc +34
|
||||
acc +32
|
||||
acc -6
|
||||
jmp -21
|
||||
jmp -4
|
||||
nop -154
|
||||
acc +38
|
||||
jmp +10
|
||||
acc +25
|
||||
acc +46
|
||||
acc +32
|
||||
jmp +65
|
||||
acc -3
|
||||
acc +44
|
||||
jmp -153
|
||||
acc +31
|
||||
jmp +21
|
||||
acc +31
|
||||
acc +40
|
||||
jmp +137
|
||||
nop +307
|
||||
acc -10
|
||||
jmp -193
|
||||
acc +5
|
||||
acc +0
|
||||
acc +42
|
||||
acc -7
|
||||
jmp -104
|
||||
jmp +233
|
||||
acc +41
|
||||
acc +42
|
||||
acc +43
|
||||
jmp +358
|
||||
acc +13
|
||||
nop +140
|
||||
acc +20
|
||||
jmp +337
|
||||
acc +18
|
||||
acc -7
|
||||
acc -14
|
||||
jmp -213
|
||||
nop +142
|
||||
acc +13
|
||||
jmp +115
|
||||
acc +48
|
||||
acc +30
|
||||
acc +15
|
||||
jmp +283
|
||||
acc -14
|
||||
jmp -153
|
||||
jmp -75
|
||||
jmp -178
|
||||
acc +36
|
||||
acc +9
|
||||
jmp +32
|
||||
acc +28
|
||||
jmp -229
|
||||
jmp +93
|
||||
acc +41
|
||||
jmp +91
|
||||
acc -17
|
||||
acc +3
|
||||
jmp +163
|
||||
nop +129
|
||||
acc +0
|
||||
nop -169
|
||||
acc -11
|
||||
jmp -23
|
||||
acc +8
|
||||
acc -8
|
||||
jmp +106
|
||||
acc +8
|
||||
acc +43
|
||||
acc -3
|
||||
acc +25
|
||||
jmp -15
|
||||
nop -296
|
||||
acc -4
|
||||
jmp +220
|
||||
nop -244
|
||||
acc +38
|
||||
acc -3
|
||||
nop -163
|
||||
jmp -169
|
||||
jmp -304
|
||||
jmp +169
|
||||
acc +22
|
||||
acc -5
|
||||
acc +21
|
||||
acc +7
|
||||
jmp -162
|
||||
acc +17
|
||||
jmp -229
|
||||
nop +35
|
||||
acc +42
|
||||
acc +12
|
||||
acc +12
|
||||
jmp +95
|
||||
acc -7
|
||||
nop +136
|
||||
jmp +130
|
||||
acc +0
|
||||
acc +0
|
||||
acc +16
|
||||
acc +50
|
||||
jmp -297
|
||||
nop +183
|
||||
nop +104
|
||||
acc +18
|
||||
jmp -65
|
||||
acc -4
|
||||
jmp +1
|
||||
jmp +227
|
||||
nop -76
|
||||
jmp -109
|
||||
acc +27
|
||||
acc -2
|
||||
acc -9
|
||||
jmp +16
|
||||
nop +99
|
||||
acc +46
|
||||
acc -7
|
||||
nop +2
|
||||
jmp +258
|
||||
acc -10
|
||||
jmp +122
|
||||
acc -19
|
||||
jmp +23
|
||||
nop -205
|
||||
acc -16
|
||||
jmp +81
|
||||
nop +235
|
||||
acc -16
|
||||
jmp +69
|
||||
acc -11
|
||||
acc +4
|
||||
jmp +1
|
||||
jmp -80
|
||||
acc -19
|
||||
jmp +108
|
||||
acc +31
|
||||
acc -7
|
||||
nop -137
|
||||
acc +26
|
||||
jmp -185
|
||||
acc -3
|
||||
acc +44
|
||||
acc -2
|
||||
acc +43
|
||||
jmp -137
|
||||
acc +14
|
||||
nop +96
|
||||
jmp -28
|
||||
acc +5
|
||||
acc +19
|
||||
jmp -31
|
||||
jmp +18
|
||||
jmp -356
|
||||
acc +34
|
||||
acc +45
|
||||
jmp +170
|
||||
acc +39
|
||||
acc +3
|
||||
acc +22
|
||||
acc +23
|
||||
jmp -370
|
||||
jmp -73
|
||||
acc +23
|
||||
acc +46
|
||||
acc +8
|
||||
jmp -297
|
||||
acc +46
|
||||
jmp -387
|
||||
jmp -312
|
||||
jmp -345
|
||||
jmp +229
|
||||
acc -6
|
||||
jmp +74
|
||||
nop -209
|
||||
acc +43
|
||||
nop -151
|
||||
acc +41
|
||||
jmp -182
|
||||
acc -12
|
||||
acc -5
|
||||
acc -13
|
||||
acc +3
|
||||
jmp -386
|
||||
acc +45
|
||||
acc +9
|
||||
nop -97
|
||||
jmp -411
|
||||
acc +0
|
||||
jmp +151
|
||||
nop +150
|
||||
acc +17
|
||||
jmp -144
|
||||
acc +3
|
||||
acc +12
|
||||
nop +55
|
||||
jmp -377
|
||||
jmp -421
|
||||
nop +52
|
||||
acc -18
|
||||
acc -9
|
||||
jmp -77
|
||||
acc -14
|
||||
acc +33
|
||||
nop -316
|
||||
acc +44
|
||||
jmp -193
|
||||
nop +150
|
||||
acc -16
|
||||
jmp -294
|
||||
acc +26
|
||||
acc -14
|
||||
acc -7
|
||||
jmp -61
|
||||
nop -84
|
||||
acc +0
|
||||
jmp -105
|
||||
acc +48
|
||||
jmp +1
|
||||
acc -6
|
||||
jmp -109
|
||||
acc -12
|
||||
acc +37
|
||||
acc +24
|
||||
jmp +73
|
||||
jmp -275
|
||||
acc +14
|
||||
acc -19
|
||||
jmp -156
|
||||
nop -147
|
||||
jmp -94
|
||||
acc -4
|
||||
acc +50
|
||||
acc +26
|
||||
acc -1
|
||||
jmp -392
|
||||
nop +58
|
||||
jmp -440
|
||||
acc -1
|
||||
jmp -85
|
||||
acc +39
|
||||
acc +8
|
||||
jmp -318
|
||||
nop -123
|
||||
jmp +133
|
||||
acc -18
|
||||
jmp +131
|
||||
acc +50
|
||||
jmp -401
|
||||
jmp -458
|
||||
acc -9
|
||||
acc +23
|
||||
jmp +26
|
||||
acc +15
|
||||
acc -5
|
||||
nop -236
|
||||
jmp -89
|
||||
acc -3
|
||||
acc +28
|
||||
jmp +98
|
||||
jmp -413
|
||||
acc -19
|
||||
acc +41
|
||||
acc +21
|
||||
jmp -365
|
||||
nop +97
|
||||
acc +18
|
||||
acc +44
|
||||
jmp -186
|
||||
acc -3
|
||||
acc +31
|
||||
nop -356
|
||||
acc +26
|
||||
jmp -217
|
||||
jmp -13
|
||||
acc +42
|
||||
jmp -437
|
||||
jmp -322
|
||||
jmp +1
|
||||
jmp -81
|
||||
acc +28
|
||||
acc +0
|
||||
acc +45
|
||||
acc +36
|
||||
jmp -441
|
||||
acc +50
|
||||
acc +23
|
||||
acc +1
|
||||
acc +45
|
||||
jmp -11
|
||||
acc +16
|
||||
acc -13
|
||||
acc +16
|
||||
jmp +13
|
||||
jmp -419
|
||||
jmp +1
|
||||
jmp +66
|
||||
acc +40
|
||||
acc -5
|
||||
acc -8
|
||||
acc +39
|
||||
jmp +61
|
||||
acc +8
|
||||
acc +25
|
||||
acc +41
|
||||
jmp -395
|
||||
acc +5
|
||||
acc +28
|
||||
jmp -70
|
||||
jmp +1
|
||||
acc +15
|
||||
acc -11
|
||||
jmp -437
|
||||
acc +17
|
||||
acc +30
|
||||
acc -15
|
||||
acc +22
|
||||
jmp -91
|
||||
acc +44
|
||||
acc +47
|
||||
acc +0
|
||||
acc +39
|
||||
jmp -258
|
||||
jmp -514
|
||||
acc +46
|
||||
jmp -478
|
||||
acc +38
|
||||
acc +12
|
||||
acc +44
|
||||
jmp -167
|
||||
acc +41
|
||||
jmp +1
|
||||
acc +30
|
||||
nop -337
|
||||
jmp -521
|
||||
acc -11
|
||||
nop -426
|
||||
jmp -68
|
||||
acc -11
|
||||
jmp -331
|
||||
acc +44
|
||||
acc +6
|
||||
acc +13
|
||||
jmp +1
|
||||
jmp -519
|
||||
acc +48
|
||||
acc +13
|
||||
acc +34
|
||||
jmp -51
|
||||
acc +19
|
||||
acc +46
|
||||
acc +26
|
||||
acc +35
|
||||
jmp -345
|
||||
acc +20
|
||||
jmp +1
|
||||
jmp -220
|
||||
acc +18
|
||||
acc +43
|
||||
nop -65
|
||||
jmp -335
|
||||
jmp -305
|
||||
acc +19
|
||||
acc -1
|
||||
jmp -551
|
||||
acc +40
|
||||
acc +11
|
||||
acc -13
|
||||
jmp -196
|
||||
acc +18
|
||||
nop -460
|
||||
acc +28
|
||||
jmp -266
|
||||
acc +41
|
||||
nop -450
|
||||
acc +20
|
||||
jmp -380
|
||||
acc +24
|
||||
acc +44
|
||||
acc +2
|
||||
acc +0
|
||||
jmp +22
|
||||
acc -10
|
||||
acc +0
|
||||
acc -8
|
||||
jmp -255
|
||||
nop -80
|
||||
acc +24
|
||||
jmp -513
|
||||
acc +23
|
||||
nop -238
|
||||
acc +31
|
||||
jmp -504
|
||||
nop -461
|
||||
acc +40
|
||||
acc +39
|
||||
jmp +4
|
||||
acc +2
|
||||
acc +18
|
||||
jmp -359
|
||||
jmp -143
|
||||
acc -5
|
||||
jmp -117
|
||||
acc -12
|
||||
acc +40
|
||||
jmp +1
|
||||
acc +15
|
||||
jmp +1
|
||||
49
haskellAoC/src/Y2020/Day08.hs
Normal file
49
haskellAoC/src/Y2020/Day08.hs
Normal file
@@ -0,0 +1,49 @@
|
||||
module Y2020.Day08 (y20day08) where
|
||||
|
||||
import Data.List
|
||||
import Data.List.Split
|
||||
import qualified Data.Map as M
|
||||
|
||||
data Instr = Acc Int | Jmp Int | Nop Int deriving (Show)
|
||||
|
||||
-- current offset, current acc, visited offsets
|
||||
type State = (Int, Int, [Int])
|
||||
|
||||
runInstructions :: M.Map Int Instr -> State -> (Bool, Int)
|
||||
runInstructions instr (cur, acc, visited)
|
||||
| cur `elem` visited = (False, acc) -- looping
|
||||
| cur `M.notMember` instr = (True, acc) -- terminated
|
||||
| otherwise = runInstructions instr (newCur, newAcc, newVisited)
|
||||
where newVisited = cur:visited
|
||||
(newCur, newAcc) = case (instr M.! cur) of
|
||||
Nop _ -> (cur + 1, acc)
|
||||
Acc qty -> (cur + 1, acc + qty)
|
||||
Jmp ofs -> (cur + ofs, acc)
|
||||
|
||||
parseInput :: String -> Instr
|
||||
parseInput input
|
||||
| "nop" `isPrefixOf` input = Nop nb
|
||||
| "acc" `isPrefixOf` input = Acc nb
|
||||
| "jmp" `isPrefixOf` input = Jmp nb
|
||||
where nb = (sign raw_sign) 0 number :: Int
|
||||
(raw_sign:raw_number) = (splitOn " " input) !! 1
|
||||
sign '+' = (+)
|
||||
sign '-' = (-)
|
||||
number = read raw_number :: Int
|
||||
|
||||
testSwappedNopJmp :: M.Map Int Instr -> Int -> Int
|
||||
testSwappedNopJmp original offset = case original M.! offset of
|
||||
Acc _ -> next
|
||||
Jmp qty -> resWithSwap (Nop qty)
|
||||
Nop qty -> resWithSwap (Jmp qty)
|
||||
where next = testSwappedNopJmp original (offset + 1)
|
||||
resWithSwap swapped = case (runInstructions (swappedInput swapped) (0, 0, [])) of
|
||||
(True, acc) -> acc
|
||||
(False, _) -> next
|
||||
swappedInput new = M.insert offset new original
|
||||
|
||||
y20day08 :: [String] -> (String, String)
|
||||
y20day08 input = (part1, part2)
|
||||
where part1 = show $ snd $ runInstructions ops (0, 0, [])
|
||||
part2 = show $ testSwappedNopJmp ops 0
|
||||
ops = M.fromList $ zip (iterate (+ 1) 0) $ map parseInput input
|
||||
@@ -7,6 +7,7 @@ import Y2020.Day04
|
||||
import Y2020.Day05
|
||||
import Y2020.Day06
|
||||
import Y2020.Day07
|
||||
import Y2020.Day08
|
||||
|
||||
year2020 :: String -> [String] -> (String, String)
|
||||
year2020 "01" = y20day01
|
||||
@@ -16,3 +17,4 @@ year2020 "04" = y20day04
|
||||
year2020 "05" = y20day05
|
||||
year2020 "06" = y20day06
|
||||
year2020 "07" = y20day07
|
||||
year2020 "08" = y20day08
|
||||
|
||||
Reference in New Issue
Block a user