21 lines
515 B
Haskell
Executable file
21 lines
515 B
Haskell
Executable file
#!/usr/bin/env runghc
|
|
module Day8.Part2 where
|
|
|
|
import Data.Array
|
|
import Data.List (find)
|
|
import Data.Maybe (fromJust)
|
|
import Day8
|
|
|
|
main = interact (show . acc . fromJust . find (not . looped) . map run . flips . parse program)
|
|
|
|
flips :: Program -> [Program]
|
|
flips pgrm = (pgrm:(flips' pgrm 0))
|
|
|
|
flips' pgrm ix
|
|
| outOfBounds pgrm ix = []
|
|
| otherwise = (pgrm // [(ix, flipped)]):(flips' pgrm (ix + 1))
|
|
where
|
|
flipped = case (pgrm ! ix) of
|
|
(Nop a) -> Jmp a
|
|
(Jmp a) -> Nop a
|
|
x -> x
|