Day 10: 288

This commit is contained in:
Christoph Stahl 2022-12-10 16:15:08 +01:00
parent 461f2b5e15
commit af59b6d393
3 changed files with 292 additions and 0 deletions

10
day10.hs Normal file
View file

@ -0,0 +1,10 @@
c :: [(Int, Int)] -> [Int]
c((x,i):t)=(x*i):(c$drop 39 t);c _=[] -- This takes every 40th element of a list of tuples, and multiplies the parts
v :: (Int, Int) -> Char
v(p,c)|abs(p-(mod(c-1)40))<2='#'|let='.' -- This checks, if a cycle c 'sees' a position p.
n :: String -> String
n[]=[];n i|(f,b)<-splitAt 40 i=f++'\n':n b -- Inserts a \n every 40th position in a string
e :: [(Int, Int)] -> String -> [(Int, Int)]
e s@((x,c):t)i|(_,(_:i))<-span(/=' ')i=(x+(read i),c+2):(x,c+1):s|let=(x,c+1):s -- interprets one instruction i, evaluates it and adds the state (x,c) for each cycle c the instruction needed to the list of previous states
main :: IO()
main=interact$(\i->[n.map v,show.sum.c.drop 19]>>=($i)).reverse.foldl e[(1,1)].lines -- read from stdin, interpret (linewise) each instruction. Initial State is (1,1). On the evaluation both problems are executed, drawing (n.map v) and sum-/multiplying (show.sum.c.drop 19)

136
day10long Normal file
View file

@ -0,0 +1,136 @@
noop
noop
addx 5
addx 3
noop
addx 14
addx -12
noop
addx 5
addx 1
noop
addx 19
addx -15
noop
noop
noop
addx 7
addx -1
addx 4
noop
noop
addx 5
addx 1
addx -38
noop
addx 21
addx -18
addx 2
addx 2
noop
addx 3
addx 5
addx -6
addx 11
noop
addx 2
addx 19
addx -18
noop
addx 8
addx -3
addx 2
addx 5
addx 2
addx 3
addx -2
addx -38
noop
addx 3
addx 4
addx 5
noop
addx -2
addx 5
addx -8
addx 12
addx 3
addx -2
addx 5
addx 11
addx -31
addx 23
addx 4
noop
noop
addx 5
addx 3
addx -2
addx -37
addx 1
addx 5
addx 2
addx 12
addx -10
addx 3
addx 4
addx -2
noop
addx 6
addx 1
noop
noop
noop
addx -2
addx 7
addx 2
noop
addx 3
addx 3
addx 1
noop
addx -37
addx 2
addx 5
addx 2
addx 32
addx -31
addx 5
addx 2
addx 9
addx 9
addx -15
noop
addx 3
addx 2
addx 5
addx 2
addx 3
addx -2
addx 2
addx 2
addx -37
addx 5
addx -2
addx 2
addx 5
addx 2
addx 16
addx -15
addx 4
noop
addx 1
addx 2
noop
addx 3
addx 5
addx -1
addx 5
noop
noop
noop
noop
addx 3
addx 5
addx -16
noop

146
day10short Normal file
View file

@ -0,0 +1,146 @@
addx 15
addx -11
addx 6
addx -3
addx 5
addx -1
addx -8
addx 13
addx 4
noop
addx -1
addx 5
addx -1
addx 5
addx -1
addx 5
addx -1
addx 5
addx -1
addx -35
addx 1
addx 24
addx -19
addx 1
addx 16
addx -11
noop
noop
addx 21
addx -15
noop
noop
addx -3
addx 9
addx 1
addx -3
addx 8
addx 1
addx 5
noop
noop
noop
noop
noop
addx -36
noop
addx 1
addx 7
noop
noop
noop
addx 2
addx 6
noop
noop
noop
noop
noop
addx 1
noop
noop
addx 7
addx 1
noop
addx -13
addx 13
addx 7
noop
addx 1
addx -33
noop
noop
noop
addx 2
noop
noop
noop
addx 8
noop
addx -1
addx 2
addx 1
noop
addx 17
addx -9
addx 1
addx 1
addx -3
addx 11
noop
noop
addx 1
noop
addx 1
noop
noop
addx -13
addx -19
addx 1
addx 3
addx 26
addx -30
addx 12
addx -1
addx 3
addx 1
noop
noop
noop
addx -9
addx 18
addx 1
addx 2
noop
noop
addx 9
noop
noop
noop
addx -1
addx 2
addx -37
addx 1
addx 3
noop
addx 15
addx -21
addx 22
addx -6
addx 1
noop
addx 2
addx 1
noop
addx -10
noop
noop
addx 20
addx 1
addx 2
addx 2
addx -6
addx -11
noop
noop
noop