Day 8
This commit is contained in:
parent
1770abe872
commit
65a847f1d6
|
@ -0,0 +1,601 @@
|
|||
acc +22
|
||||
acc +34
|
||||
jmp +167
|
||||
acc +46
|
||||
acc +25
|
||||
acc -10
|
||||
acc +11
|
||||
jmp +540
|
||||
acc +0
|
||||
jmp +242
|
||||
acc +26
|
||||
acc +46
|
||||
jmp +242
|
||||
jmp +287
|
||||
acc -8
|
||||
acc +30
|
||||
acc +3
|
||||
nop +350
|
||||
jmp +471
|
||||
acc +2
|
||||
acc +0
|
||||
acc +14
|
||||
jmp +207
|
||||
jmp +1
|
||||
acc -10
|
||||
acc +12
|
||||
jmp +281
|
||||
acc +18
|
||||
jmp +515
|
||||
acc -18
|
||||
acc +33
|
||||
jmp +379
|
||||
acc +48
|
||||
acc +38
|
||||
jmp +220
|
||||
acc +44
|
||||
nop +546
|
||||
acc +21
|
||||
jmp +537
|
||||
acc +33
|
||||
nop +224
|
||||
nop +379
|
||||
jmp +2
|
||||
jmp -30
|
||||
jmp +246
|
||||
acc -14
|
||||
acc -3
|
||||
jmp +410
|
||||
acc +50
|
||||
nop +323
|
||||
acc +2
|
||||
acc +24
|
||||
jmp +25
|
||||
jmp +372
|
||||
acc +29
|
||||
acc +15
|
||||
nop +34
|
||||
jmp +531
|
||||
acc +48
|
||||
acc -3
|
||||
acc -18
|
||||
acc -13
|
||||
jmp -30
|
||||
acc +7
|
||||
jmp +444
|
||||
acc +47
|
||||
jmp -3
|
||||
jmp +1
|
||||
nop +514
|
||||
jmp +39
|
||||
jmp +434
|
||||
acc +0
|
||||
acc +11
|
||||
acc +12
|
||||
acc -17
|
||||
jmp +142
|
||||
jmp +367
|
||||
acc -18
|
||||
nop +69
|
||||
acc -12
|
||||
jmp +16
|
||||
jmp +39
|
||||
nop +486
|
||||
acc +16
|
||||
jmp +1
|
||||
jmp -72
|
||||
jmp +1
|
||||
jmp +1
|
||||
nop +355
|
||||
jmp -7
|
||||
acc +1
|
||||
acc -12
|
||||
acc +12
|
||||
jmp +131
|
||||
acc +35
|
||||
jmp +74
|
||||
acc +9
|
||||
acc +26
|
||||
acc -14
|
||||
jmp -60
|
||||
acc +20
|
||||
acc +40
|
||||
acc +22
|
||||
acc +24
|
||||
jmp +209
|
||||
acc +43
|
||||
jmp +347
|
||||
jmp +346
|
||||
acc +0
|
||||
jmp +348
|
||||
acc +18
|
||||
jmp -79
|
||||
acc -11
|
||||
acc -16
|
||||
acc +7
|
||||
jmp +192
|
||||
acc +40
|
||||
acc +20
|
||||
nop -6
|
||||
jmp -7
|
||||
acc -18
|
||||
jmp +395
|
||||
nop +219
|
||||
acc -18
|
||||
jmp -53
|
||||
acc +22
|
||||
nop -1
|
||||
nop +29
|
||||
jmp +468
|
||||
acc +42
|
||||
acc +7
|
||||
acc +3
|
||||
acc +46
|
||||
jmp -8
|
||||
acc +29
|
||||
acc -18
|
||||
acc +17
|
||||
acc +41
|
||||
jmp +272
|
||||
jmp +222
|
||||
acc -10
|
||||
acc +32
|
||||
acc -14
|
||||
jmp -38
|
||||
acc +49
|
||||
acc +40
|
||||
jmp +97
|
||||
nop +375
|
||||
acc +19
|
||||
acc +45
|
||||
jmp -45
|
||||
jmp +195
|
||||
acc +19
|
||||
jmp +330
|
||||
acc +38
|
||||
jmp +7
|
||||
acc +40
|
||||
nop +150
|
||||
acc +19
|
||||
jmp +406
|
||||
acc +9
|
||||
jmp -49
|
||||
acc -3
|
||||
jmp +176
|
||||
acc +2
|
||||
nop +20
|
||||
acc +25
|
||||
nop +349
|
||||
jmp -129
|
||||
acc +27
|
||||
nop +301
|
||||
acc +37
|
||||
jmp +271
|
||||
acc +3
|
||||
acc +10
|
||||
acc +26
|
||||
acc +49
|
||||
jmp +58
|
||||
nop +151
|
||||
jmp +72
|
||||
acc -1
|
||||
acc +32
|
||||
acc -11
|
||||
acc -7
|
||||
jmp +155
|
||||
jmp +1
|
||||
acc +44
|
||||
acc +2
|
||||
jmp -140
|
||||
acc +13
|
||||
acc +46
|
||||
acc -3
|
||||
jmp -58
|
||||
jmp +174
|
||||
acc +0
|
||||
acc -18
|
||||
acc +25
|
||||
jmp -178
|
||||
acc -19
|
||||
acc +37
|
||||
acc +0
|
||||
acc +49
|
||||
jmp +366
|
||||
acc +17
|
||||
acc +9
|
||||
acc +25
|
||||
jmp -37
|
||||
jmp +328
|
||||
acc +50
|
||||
jmp +81
|
||||
acc +1
|
||||
acc +43
|
||||
acc +30
|
||||
jmp +80
|
||||
acc +17
|
||||
acc +43
|
||||
jmp +234
|
||||
acc +43
|
||||
nop +271
|
||||
acc -11
|
||||
jmp +331
|
||||
nop +335
|
||||
acc +43
|
||||
jmp -160
|
||||
acc +27
|
||||
acc +34
|
||||
jmp -74
|
||||
nop +73
|
||||
jmp -11
|
||||
acc -18
|
||||
jmp -118
|
||||
acc +23
|
||||
acc +19
|
||||
nop -108
|
||||
jmp +73
|
||||
acc +25
|
||||
acc -19
|
||||
acc +23
|
||||
acc -7
|
||||
jmp -77
|
||||
acc +0
|
||||
acc +1
|
||||
jmp +233
|
||||
jmp +1
|
||||
jmp +1
|
||||
acc +7
|
||||
jmp +248
|
||||
acc +0
|
||||
acc -17
|
||||
acc +19
|
||||
jmp -15
|
||||
acc +10
|
||||
jmp +273
|
||||
jmp +88
|
||||
acc +40
|
||||
acc +35
|
||||
jmp +1
|
||||
acc +38
|
||||
jmp +241
|
||||
acc -2
|
||||
acc +36
|
||||
acc -1
|
||||
acc +18
|
||||
jmp +78
|
||||
nop +58
|
||||
acc -9
|
||||
acc +38
|
||||
acc +44
|
||||
jmp +307
|
||||
acc +10
|
||||
acc +30
|
||||
jmp -163
|
||||
acc -16
|
||||
acc +29
|
||||
acc -19
|
||||
jmp -185
|
||||
jmp +167
|
||||
nop +52
|
||||
jmp -251
|
||||
acc +31
|
||||
acc -14
|
||||
jmp +186
|
||||
nop +1
|
||||
acc +42
|
||||
acc +9
|
||||
jmp -160
|
||||
acc +10
|
||||
acc +43
|
||||
acc +14
|
||||
jmp -177
|
||||
acc -16
|
||||
jmp +265
|
||||
jmp -158
|
||||
acc -15
|
||||
jmp +152
|
||||
acc +22
|
||||
acc +1
|
||||
acc +40
|
||||
jmp +1
|
||||
jmp +252
|
||||
acc -19
|
||||
acc -1
|
||||
jmp -109
|
||||
acc +11
|
||||
acc -3
|
||||
acc +8
|
||||
jmp +16
|
||||
acc +39
|
||||
acc +12
|
||||
acc +24
|
||||
jmp -154
|
||||
acc +6
|
||||
jmp -156
|
||||
jmp +119
|
||||
acc +18
|
||||
jmp +1
|
||||
jmp -44
|
||||
acc -13
|
||||
jmp +79
|
||||
acc +9
|
||||
nop +262
|
||||
jmp +56
|
||||
nop +50
|
||||
acc -4
|
||||
acc +36
|
||||
acc +12
|
||||
jmp -54
|
||||
acc -2
|
||||
jmp -77
|
||||
acc +11
|
||||
acc +3
|
||||
acc +38
|
||||
jmp -185
|
||||
acc +28
|
||||
jmp -44
|
||||
jmp +54
|
||||
acc +39
|
||||
nop +18
|
||||
jmp -84
|
||||
jmp +132
|
||||
jmp -301
|
||||
acc +12
|
||||
jmp -334
|
||||
acc -19
|
||||
acc -10
|
||||
jmp -55
|
||||
acc +24
|
||||
acc +40
|
||||
acc -18
|
||||
jmp +212
|
||||
jmp +70
|
||||
acc -4
|
||||
nop +173
|
||||
jmp +67
|
||||
jmp +66
|
||||
acc +44
|
||||
acc +8
|
||||
jmp +236
|
||||
acc +47
|
||||
acc +29
|
||||
jmp -21
|
||||
jmp +143
|
||||
acc +22
|
||||
acc +37
|
||||
acc +37
|
||||
acc +25
|
||||
jmp -339
|
||||
jmp +1
|
||||
nop +200
|
||||
acc +25
|
||||
jmp +208
|
||||
jmp +93
|
||||
acc -1
|
||||
acc -13
|
||||
acc +30
|
||||
jmp -321
|
||||
jmp -268
|
||||
acc +14
|
||||
jmp -311
|
||||
acc +1
|
||||
acc +20
|
||||
acc +41
|
||||
jmp -128
|
||||
jmp -173
|
||||
acc -10
|
||||
acc +41
|
||||
acc +25
|
||||
acc +38
|
||||
jmp +137
|
||||
nop -99
|
||||
acc +47
|
||||
acc -3
|
||||
acc -9
|
||||
jmp -259
|
||||
acc +0
|
||||
acc +40
|
||||
jmp +126
|
||||
acc +48
|
||||
acc -4
|
||||
acc +23
|
||||
jmp -136
|
||||
nop +103
|
||||
acc +27
|
||||
jmp -149
|
||||
acc +39
|
||||
jmp -323
|
||||
acc -13
|
||||
jmp +1
|
||||
nop -79
|
||||
jmp -342
|
||||
acc +36
|
||||
nop +9
|
||||
acc -15
|
||||
acc -19
|
||||
jmp -216
|
||||
acc +27
|
||||
acc -17
|
||||
nop +72
|
||||
acc +3
|
||||
jmp -142
|
||||
jmp -357
|
||||
acc +39
|
||||
acc -18
|
||||
acc -2
|
||||
jmp -361
|
||||
acc +26
|
||||
acc -15
|
||||
acc +21
|
||||
jmp +1
|
||||
jmp +21
|
||||
nop +20
|
||||
jmp +77
|
||||
acc +36
|
||||
acc +6
|
||||
acc +32
|
||||
jmp -295
|
||||
jmp +63
|
||||
acc -15
|
||||
nop -371
|
||||
jmp -196
|
||||
acc +27
|
||||
acc +36
|
||||
jmp -152
|
||||
acc +43
|
||||
jmp +149
|
||||
jmp +85
|
||||
nop -57
|
||||
acc +8
|
||||
jmp -241
|
||||
jmp -206
|
||||
acc +5
|
||||
jmp -282
|
||||
jmp -344
|
||||
acc +24
|
||||
acc +12
|
||||
jmp -138
|
||||
jmp -31
|
||||
acc +4
|
||||
acc +27
|
||||
jmp -224
|
||||
acc +16
|
||||
acc +42
|
||||
acc +24
|
||||
jmp -316
|
||||
acc +41
|
||||
jmp +10
|
||||
jmp -403
|
||||
jmp -90
|
||||
nop -79
|
||||
acc +2
|
||||
jmp +19
|
||||
acc +42
|
||||
acc +12
|
||||
jmp -9
|
||||
jmp +104
|
||||
acc -9
|
||||
acc -11
|
||||
jmp -299
|
||||
acc +19
|
||||
acc +7
|
||||
acc -11
|
||||
acc -7
|
||||
jmp -335
|
||||
acc +24
|
||||
jmp -80
|
||||
acc +45
|
||||
acc +39
|
||||
acc +18
|
||||
jmp -348
|
||||
acc +5
|
||||
acc -5
|
||||
jmp -94
|
||||
acc +35
|
||||
jmp -221
|
||||
acc -3
|
||||
jmp -112
|
||||
acc +10
|
||||
acc +23
|
||||
jmp +18
|
||||
nop -53
|
||||
jmp -315
|
||||
acc +12
|
||||
acc +19
|
||||
jmp -426
|
||||
jmp -175
|
||||
acc +40
|
||||
acc +25
|
||||
jmp +23
|
||||
nop -14
|
||||
nop +79
|
||||
acc +21
|
||||
jmp -301
|
||||
acc +22
|
||||
acc -10
|
||||
jmp +1
|
||||
jmp +15
|
||||
acc +27
|
||||
jmp -409
|
||||
acc +45
|
||||
nop -341
|
||||
acc +22
|
||||
jmp -89
|
||||
jmp +60
|
||||
acc +11
|
||||
jmp -461
|
||||
acc +39
|
||||
acc -11
|
||||
acc +10
|
||||
jmp -173
|
||||
jmp -447
|
||||
nop +38
|
||||
acc +5
|
||||
jmp -65
|
||||
acc +45
|
||||
jmp -217
|
||||
acc +1
|
||||
acc -7
|
||||
nop -460
|
||||
acc +45
|
||||
jmp -468
|
||||
nop -477
|
||||
acc +0
|
||||
jmp -270
|
||||
jmp -230
|
||||
acc +36
|
||||
acc +21
|
||||
jmp -21
|
||||
jmp -225
|
||||
acc -11
|
||||
jmp +1
|
||||
jmp -511
|
||||
jmp -4
|
||||
acc -5
|
||||
acc -4
|
||||
acc -15
|
||||
jmp -204
|
||||
jmp -62
|
||||
acc +50
|
||||
acc +34
|
||||
acc +32
|
||||
jmp -489
|
||||
nop -108
|
||||
jmp -125
|
||||
acc -2
|
||||
jmp -187
|
||||
nop +1
|
||||
jmp -284
|
||||
jmp -285
|
||||
acc +43
|
||||
acc -1
|
||||
jmp -293
|
||||
nop -49
|
||||
acc -14
|
||||
acc +25
|
||||
jmp -233
|
||||
nop -53
|
||||
jmp -456
|
||||
jmp -226
|
||||
acc +39
|
||||
jmp -244
|
||||
acc +16
|
||||
jmp -82
|
||||
acc +17
|
||||
acc +47
|
||||
acc +16
|
||||
jmp -244
|
||||
nop -87
|
||||
jmp -150
|
||||
jmp -99
|
||||
jmp +1
|
||||
acc -9
|
||||
acc +48
|
||||
jmp -515
|
||||
acc -1
|
||||
jmp -546
|
||||
jmp -191
|
||||
acc -16
|
||||
acc +27
|
||||
nop -369
|
||||
acc -7
|
||||
jmp +1
|
|
@ -0,0 +1,90 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type instruction struct {
|
||||
op string
|
||||
arg int
|
||||
executed bool
|
||||
}
|
||||
|
||||
func main() {
|
||||
instructionRe := regexp.MustCompile(`^(?P<op>\w+) (?P<arg>[\+\-]\d+)$`)
|
||||
parsedInstructions := []instruction{}
|
||||
|
||||
file, _ := os.Open("input.txt")
|
||||
defer file.Close()
|
||||
for scanner := bufio.NewScanner(file); scanner.Scan(); {
|
||||
text := scanner.Text()
|
||||
arg, _ := strconv.Atoi(instructionRe.ReplaceAllString(text, "$arg"))
|
||||
parsedInstructions = append(parsedInstructions, instruction{instructionRe.ReplaceAllString(text, "$op"), arg, false})
|
||||
}
|
||||
|
||||
makeInstructions := func() []instruction {
|
||||
instructions := make([]instruction, len(parsedInstructions))
|
||||
copy(instructions, parsedInstructions)
|
||||
return instructions
|
||||
}
|
||||
|
||||
var accumulator, pos int
|
||||
|
||||
for newInstructions := makeInstructions(); true; {
|
||||
instr := &newInstructions[pos]
|
||||
if instr.executed {
|
||||
break
|
||||
}
|
||||
switch instr.op {
|
||||
case "acc":
|
||||
accumulator += instr.arg
|
||||
pos++
|
||||
case "nop":
|
||||
pos++
|
||||
case "jmp":
|
||||
pos += instr.arg
|
||||
}
|
||||
instr.executed = true
|
||||
}
|
||||
|
||||
fmt.Println("Part 1:", accumulator)
|
||||
|
||||
modifyOpLoop:
|
||||
for lastModifiedOp := 0; true; lastModifiedOp++ {
|
||||
newInstructions := makeInstructions()
|
||||
if instr := &newInstructions[lastModifiedOp]; instr.op == "jmp" {
|
||||
instr.op = "nop"
|
||||
} else if instr.op == "nop" {
|
||||
instr.op = "jmp"
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
accumulator = 0
|
||||
pos = 0
|
||||
for {
|
||||
if pos >= len(newInstructions) {
|
||||
break modifyOpLoop
|
||||
}
|
||||
instr := &newInstructions[pos]
|
||||
if instr.executed {
|
||||
break
|
||||
}
|
||||
switch instr.op {
|
||||
case "acc":
|
||||
accumulator += instr.arg
|
||||
pos++
|
||||
case "nop":
|
||||
pos++
|
||||
case "jmp":
|
||||
pos += instr.arg
|
||||
}
|
||||
instr.executed = true
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Part 2:", accumulator)
|
||||
}
|
Reference in New Issue