Day 8: Part 1 and 2
Signed-off-by: James Griffin <james@unsupervised.ca>
This commit is contained in:
129
eight/day_eight.go
Normal file
129
eight/day_eight.go
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
package eight
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
type program struct {
|
||||||
|
instructions []instruction
|
||||||
|
accumulator int
|
||||||
|
preempted bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type instruction struct {
|
||||||
|
operation string
|
||||||
|
argument int
|
||||||
|
executed bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *program) load(filename string) error {
|
||||||
|
file, err := os.Open(filename)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
for scanner.Scan() {
|
||||||
|
var op string
|
||||||
|
var value int
|
||||||
|
|
||||||
|
count, err := fmt.Sscanf(scanner.Text(), "%s %d", &op, &value)
|
||||||
|
if count != 2 || err != nil {
|
||||||
|
return fmt.Errorf("Unable to parse %s: %w", scanner.Text(), err)
|
||||||
|
}
|
||||||
|
|
||||||
|
p.instructions = append(p.instructions, instruction{
|
||||||
|
operation: op,
|
||||||
|
argument: value,
|
||||||
|
executed: false,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *program) exec() int {
|
||||||
|
i := 0
|
||||||
|
for {
|
||||||
|
if i >= len(p.instructions) {
|
||||||
|
p.preempted = false
|
||||||
|
return p.accumulator
|
||||||
|
} else if i < 0 {
|
||||||
|
return p.accumulator
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.instructions[i].executed {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
p.instructions[i].executed = true
|
||||||
|
switch p.instructions[i].operation {
|
||||||
|
case "acc":
|
||||||
|
p.accumulator += p.instructions[i].argument
|
||||||
|
i++
|
||||||
|
case "jmp":
|
||||||
|
i += p.instructions[i].argument
|
||||||
|
default:
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return p.accumulator
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *program) reset() {
|
||||||
|
p.accumulator = 0
|
||||||
|
p.preempted = true
|
||||||
|
for i := 0; i < len(p.instructions); i++ {
|
||||||
|
p.instructions[i].executed = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *program) flipJmpNop(index int) {
|
||||||
|
if index < 0 || index > len(p.instructions) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch p.instructions[index].operation {
|
||||||
|
case "nop":
|
||||||
|
p.instructions[index].operation = "jmp"
|
||||||
|
case "jmp":
|
||||||
|
p.instructions[index].operation = "nop"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *program) heal() int {
|
||||||
|
for i := 0; i < len(p.instructions); i++ {
|
||||||
|
p.reset()
|
||||||
|
p.flipJmpNop(i)
|
||||||
|
p.exec()
|
||||||
|
|
||||||
|
if !p.preempted {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
p.flipJmpNop(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
// PartOne Find the value of the accumulator before any instruction is executed twice
|
||||||
|
func PartOne() string {
|
||||||
|
p := program{}
|
||||||
|
p.load("eight/handheld.code")
|
||||||
|
|
||||||
|
return fmt.Sprintf("The accumulator is at %d before the loop begins", p.exec())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PartTwo Find the corrupt instruction, flip it, and execute to termination
|
||||||
|
func PartTwo() string {
|
||||||
|
p := program{}
|
||||||
|
p.load("eight/handheld.code")
|
||||||
|
p.exec()
|
||||||
|
index := p.heal()
|
||||||
|
|
||||||
|
return fmt.Sprintf("The accumulator is at %d after termination by correcting instruction %d", p.accumulator, index+1)
|
||||||
|
}
|
97
eight/day_eight_test.go
Normal file
97
eight/day_eight_test.go
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
package eight
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func (p *program) visited() int {
|
||||||
|
highest := 0
|
||||||
|
for i, instruction := range p.instructions {
|
||||||
|
if instruction.executed {
|
||||||
|
if i > highest {
|
||||||
|
highest = i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return highest
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_program_load(t *testing.T) {
|
||||||
|
p := program{}
|
||||||
|
err := p.load("sample.code")
|
||||||
|
if err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(p.instructions) != 9 {
|
||||||
|
t.Logf("Expected 9 instructions, Got %d instructions", len(p.instructions))
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_program_execute(t *testing.T) {
|
||||||
|
p := program{}
|
||||||
|
p.load("sample.code")
|
||||||
|
|
||||||
|
result := p.exec()
|
||||||
|
if result != 5 {
|
||||||
|
t.Logf("Expected result of 5, Got %d", result)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_program_terminate(t *testing.T) {
|
||||||
|
p := program{}
|
||||||
|
p.load("sample.code")
|
||||||
|
|
||||||
|
p.exec()
|
||||||
|
highest := p.visited()
|
||||||
|
p.flipJmpNop(highest)
|
||||||
|
p.reset()
|
||||||
|
result := p.exec()
|
||||||
|
highest = p.visited()
|
||||||
|
|
||||||
|
if highest+1 != len(p.instructions) {
|
||||||
|
t.Logf("Made it to %d of %d instructions", highest+1, len(p.instructions))
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
|
||||||
|
if result != 8 || p.preempted {
|
||||||
|
t.Logf("Expected result of 8, Got %d and the program was preempted", result)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_program_heal(t *testing.T) {
|
||||||
|
p := program{}
|
||||||
|
p.load("sample.code")
|
||||||
|
|
||||||
|
p.exec()
|
||||||
|
index := p.heal()
|
||||||
|
highest := p.visited()
|
||||||
|
|
||||||
|
if highest+1 != len(p.instructions) {
|
||||||
|
t.Logf("Made it to %d of %d instructions by flipping instruction %d", highest+1, len(p.instructions), index+1)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.accumulator != 8 || p.preempted {
|
||||||
|
t.Logf("Expected result of 8, Got %d and the program was preempted", p.accumulator)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_handheld_terminate(t *testing.T) {
|
||||||
|
p := program{}
|
||||||
|
p.load("handheld.code")
|
||||||
|
|
||||||
|
p.exec()
|
||||||
|
highest := p.visited()
|
||||||
|
t.Logf("Made it to %d of %d instructions on the first run", highest+1, len(p.instructions))
|
||||||
|
p.heal()
|
||||||
|
highest = p.visited()
|
||||||
|
|
||||||
|
if highest+1 != len(p.instructions) || p.preempted {
|
||||||
|
t.Logf("Made it to %d of %d instructions", highest+1, len(p.instructions))
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
660
eight/handheld.code
Normal file
660
eight/handheld.code
Normal file
@@ -0,0 +1,660 @@
|
|||||||
|
jmp +11
|
||||||
|
nop +495
|
||||||
|
nop +402
|
||||||
|
jmp +570
|
||||||
|
jmp +569
|
||||||
|
jmp +451
|
||||||
|
acc -12
|
||||||
|
jmp +364
|
||||||
|
acc +30
|
||||||
|
acc +21
|
||||||
|
jmp +430
|
||||||
|
jmp +87
|
||||||
|
acc -12
|
||||||
|
acc -4
|
||||||
|
acc +11
|
||||||
|
jmp +50
|
||||||
|
jmp +149
|
||||||
|
jmp +341
|
||||||
|
nop +1
|
||||||
|
acc +33
|
||||||
|
jmp +461
|
||||||
|
acc +43
|
||||||
|
acc -15
|
||||||
|
jmp +440
|
||||||
|
acc +18
|
||||||
|
acc +22
|
||||||
|
acc -14
|
||||||
|
nop +576
|
||||||
|
jmp -22
|
||||||
|
acc +33
|
||||||
|
acc +0
|
||||||
|
acc +34
|
||||||
|
jmp +369
|
||||||
|
nop +497
|
||||||
|
nop +469
|
||||||
|
acc -12
|
||||||
|
jmp +93
|
||||||
|
acc -13
|
||||||
|
jmp +337
|
||||||
|
acc +5
|
||||||
|
acc +18
|
||||||
|
acc +26
|
||||||
|
nop +115
|
||||||
|
jmp +67
|
||||||
|
nop +282
|
||||||
|
nop -6
|
||||||
|
nop +289
|
||||||
|
jmp +303
|
||||||
|
acc +10
|
||||||
|
acc -15
|
||||||
|
jmp +153
|
||||||
|
nop +445
|
||||||
|
acc -8
|
||||||
|
acc +11
|
||||||
|
jmp +374
|
||||||
|
acc +35
|
||||||
|
acc -9
|
||||||
|
nop +199
|
||||||
|
jmp +1
|
||||||
|
jmp +369
|
||||||
|
jmp +1
|
||||||
|
acc +22
|
||||||
|
acc -18
|
||||||
|
acc +17
|
||||||
|
jmp +303
|
||||||
|
acc +37
|
||||||
|
acc +13
|
||||||
|
acc +22
|
||||||
|
nop +307
|
||||||
|
jmp +154
|
||||||
|
nop +381
|
||||||
|
acc -6
|
||||||
|
nop -54
|
||||||
|
acc +38
|
||||||
|
jmp +494
|
||||||
|
acc +37
|
||||||
|
acc +15
|
||||||
|
jmp +475
|
||||||
|
jmp +474
|
||||||
|
nop +534
|
||||||
|
acc +37
|
||||||
|
jmp +359
|
||||||
|
jmp +296
|
||||||
|
acc +40
|
||||||
|
jmp +157
|
||||||
|
acc +5
|
||||||
|
nop +139
|
||||||
|
acc +49
|
||||||
|
acc +45
|
||||||
|
jmp +237
|
||||||
|
acc +42
|
||||||
|
acc +8
|
||||||
|
acc +43
|
||||||
|
jmp +466
|
||||||
|
nop +362
|
||||||
|
acc +43
|
||||||
|
acc +44
|
||||||
|
jmp +233
|
||||||
|
acc +30
|
||||||
|
acc +42
|
||||||
|
acc -6
|
||||||
|
jmp -97
|
||||||
|
jmp +527
|
||||||
|
acc +2
|
||||||
|
acc +13
|
||||||
|
nop +425
|
||||||
|
jmp +113
|
||||||
|
nop +374
|
||||||
|
acc +31
|
||||||
|
jmp +48
|
||||||
|
acc +29
|
||||||
|
acc +15
|
||||||
|
acc +35
|
||||||
|
jmp +357
|
||||||
|
acc +19
|
||||||
|
acc -2
|
||||||
|
jmp +480
|
||||||
|
acc +1
|
||||||
|
jmp +385
|
||||||
|
acc +16
|
||||||
|
acc +47
|
||||||
|
jmp +397
|
||||||
|
jmp +1
|
||||||
|
jmp +1
|
||||||
|
acc +5
|
||||||
|
acc -5
|
||||||
|
jmp +529
|
||||||
|
acc +11
|
||||||
|
jmp +123
|
||||||
|
acc +44
|
||||||
|
acc +49
|
||||||
|
jmp +413
|
||||||
|
acc +13
|
||||||
|
acc +10
|
||||||
|
acc -6
|
||||||
|
acc +11
|
||||||
|
jmp -33
|
||||||
|
acc +25
|
||||||
|
acc +47
|
||||||
|
acc +40
|
||||||
|
acc +23
|
||||||
|
jmp +39
|
||||||
|
acc +50
|
||||||
|
acc +12
|
||||||
|
jmp +386
|
||||||
|
acc +23
|
||||||
|
jmp +464
|
||||||
|
acc +15
|
||||||
|
nop +361
|
||||||
|
acc +30
|
||||||
|
jmp +346
|
||||||
|
jmp +1
|
||||||
|
acc +19
|
||||||
|
acc +16
|
||||||
|
acc +23
|
||||||
|
jmp +441
|
||||||
|
jmp +69
|
||||||
|
acc +12
|
||||||
|
acc +46
|
||||||
|
acc -5
|
||||||
|
jmp +427
|
||||||
|
acc +49
|
||||||
|
nop +173
|
||||||
|
acc -12
|
||||||
|
jmp +249
|
||||||
|
acc +41
|
||||||
|
acc +29
|
||||||
|
nop +168
|
||||||
|
acc +31
|
||||||
|
jmp +349
|
||||||
|
acc +40
|
||||||
|
acc +8
|
||||||
|
acc +14
|
||||||
|
jmp +231
|
||||||
|
acc -17
|
||||||
|
jmp +215
|
||||||
|
nop +202
|
||||||
|
acc +0
|
||||||
|
nop +172
|
||||||
|
jmp +351
|
||||||
|
acc +21
|
||||||
|
acc +31
|
||||||
|
nop +405
|
||||||
|
acc +14
|
||||||
|
jmp +272
|
||||||
|
acc +5
|
||||||
|
acc +33
|
||||||
|
acc +31
|
||||||
|
acc +21
|
||||||
|
jmp -91
|
||||||
|
acc -18
|
||||||
|
acc +35
|
||||||
|
jmp +23
|
||||||
|
acc -10
|
||||||
|
nop +374
|
||||||
|
acc +27
|
||||||
|
jmp -157
|
||||||
|
acc +39
|
||||||
|
acc +8
|
||||||
|
acc +34
|
||||||
|
acc +34
|
||||||
|
jmp +333
|
||||||
|
jmp -51
|
||||||
|
acc -18
|
||||||
|
acc +26
|
||||||
|
jmp +377
|
||||||
|
acc -5
|
||||||
|
jmp +190
|
||||||
|
acc +45
|
||||||
|
jmp +1
|
||||||
|
acc +29
|
||||||
|
jmp +202
|
||||||
|
acc +25
|
||||||
|
acc +30
|
||||||
|
jmp +90
|
||||||
|
acc +49
|
||||||
|
nop +240
|
||||||
|
jmp +109
|
||||||
|
jmp +291
|
||||||
|
acc +9
|
||||||
|
jmp +348
|
||||||
|
acc +39
|
||||||
|
jmp +3
|
||||||
|
jmp +273
|
||||||
|
jmp -218
|
||||||
|
jmp +150
|
||||||
|
jmp +1
|
||||||
|
jmp +148
|
||||||
|
acc +9
|
||||||
|
acc +11
|
||||||
|
acc +20
|
||||||
|
acc +3
|
||||||
|
jmp -167
|
||||||
|
nop +223
|
||||||
|
jmp +275
|
||||||
|
nop +309
|
||||||
|
jmp +20
|
||||||
|
acc -18
|
||||||
|
acc -10
|
||||||
|
acc -2
|
||||||
|
jmp +173
|
||||||
|
acc +13
|
||||||
|
acc -17
|
||||||
|
nop +132
|
||||||
|
acc -6
|
||||||
|
jmp +240
|
||||||
|
acc +37
|
||||||
|
acc +4
|
||||||
|
acc +49
|
||||||
|
acc -16
|
||||||
|
jmp +171
|
||||||
|
jmp +239
|
||||||
|
nop +300
|
||||||
|
nop +311
|
||||||
|
acc -9
|
||||||
|
jmp -180
|
||||||
|
acc +32
|
||||||
|
acc +21
|
||||||
|
jmp +1
|
||||||
|
jmp -62
|
||||||
|
nop +141
|
||||||
|
acc +46
|
||||||
|
acc +25
|
||||||
|
nop -7
|
||||||
|
jmp +318
|
||||||
|
acc +3
|
||||||
|
jmp +185
|
||||||
|
nop +196
|
||||||
|
acc +16
|
||||||
|
acc +18
|
||||||
|
jmp -47
|
||||||
|
acc +39
|
||||||
|
acc +35
|
||||||
|
acc +21
|
||||||
|
acc +14
|
||||||
|
jmp +23
|
||||||
|
acc +20
|
||||||
|
acc +20
|
||||||
|
jmp +97
|
||||||
|
nop -71
|
||||||
|
acc +50
|
||||||
|
acc -11
|
||||||
|
jmp -145
|
||||||
|
nop -218
|
||||||
|
acc +42
|
||||||
|
acc +23
|
||||||
|
acc +35
|
||||||
|
jmp +183
|
||||||
|
nop +16
|
||||||
|
nop -206
|
||||||
|
acc +2
|
||||||
|
acc +11
|
||||||
|
jmp +129
|
||||||
|
acc +37
|
||||||
|
acc +41
|
||||||
|
acc +47
|
||||||
|
nop -280
|
||||||
|
jmp +93
|
||||||
|
acc -12
|
||||||
|
acc +31
|
||||||
|
jmp +10
|
||||||
|
acc +2
|
||||||
|
acc +29
|
||||||
|
jmp +64
|
||||||
|
acc -14
|
||||||
|
nop +308
|
||||||
|
jmp -251
|
||||||
|
acc +8
|
||||||
|
acc +10
|
||||||
|
jmp +259
|
||||||
|
acc +38
|
||||||
|
nop -131
|
||||||
|
acc +45
|
||||||
|
jmp +6
|
||||||
|
acc +18
|
||||||
|
acc +43
|
||||||
|
nop -218
|
||||||
|
nop -94
|
||||||
|
jmp +178
|
||||||
|
jmp +1
|
||||||
|
acc +27
|
||||||
|
acc +29
|
||||||
|
jmp +324
|
||||||
|
acc -12
|
||||||
|
acc +30
|
||||||
|
jmp +115
|
||||||
|
acc -1
|
||||||
|
jmp -224
|
||||||
|
jmp +1
|
||||||
|
jmp +205
|
||||||
|
acc +47
|
||||||
|
jmp -66
|
||||||
|
acc +21
|
||||||
|
acc +44
|
||||||
|
jmp +147
|
||||||
|
acc +2
|
||||||
|
acc +50
|
||||||
|
acc -14
|
||||||
|
acc +50
|
||||||
|
jmp -165
|
||||||
|
acc +33
|
||||||
|
acc +20
|
||||||
|
acc -5
|
||||||
|
acc +19
|
||||||
|
jmp -246
|
||||||
|
acc +26
|
||||||
|
acc +44
|
||||||
|
jmp -96
|
||||||
|
acc +22
|
||||||
|
jmp +127
|
||||||
|
nop +25
|
||||||
|
acc -14
|
||||||
|
acc -15
|
||||||
|
jmp -314
|
||||||
|
jmp +1
|
||||||
|
acc +11
|
||||||
|
acc +12
|
||||||
|
jmp +71
|
||||||
|
acc +0
|
||||||
|
acc +16
|
||||||
|
acc +26
|
||||||
|
nop +242
|
||||||
|
jmp -172
|
||||||
|
acc +8
|
||||||
|
acc +15
|
||||||
|
acc -4
|
||||||
|
jmp -78
|
||||||
|
acc +42
|
||||||
|
jmp +225
|
||||||
|
acc -7
|
||||||
|
jmp +243
|
||||||
|
jmp +242
|
||||||
|
acc +23
|
||||||
|
acc +21
|
||||||
|
jmp +54
|
||||||
|
acc +25
|
||||||
|
jmp -18
|
||||||
|
jmp -42
|
||||||
|
jmp +26
|
||||||
|
jmp -368
|
||||||
|
acc +29
|
||||||
|
acc +22
|
||||||
|
acc +1
|
||||||
|
acc +0
|
||||||
|
jmp +255
|
||||||
|
acc +39
|
||||||
|
jmp +1
|
||||||
|
nop -332
|
||||||
|
acc +22
|
||||||
|
jmp +92
|
||||||
|
acc +45
|
||||||
|
acc +29
|
||||||
|
jmp +12
|
||||||
|
jmp +1
|
||||||
|
acc +22
|
||||||
|
jmp +1
|
||||||
|
jmp -245
|
||||||
|
jmp -162
|
||||||
|
acc -4
|
||||||
|
acc -4
|
||||||
|
jmp +28
|
||||||
|
nop -4
|
||||||
|
jmp -386
|
||||||
|
jmp -28
|
||||||
|
acc -1
|
||||||
|
acc +25
|
||||||
|
nop -28
|
||||||
|
jmp -10
|
||||||
|
acc +9
|
||||||
|
acc +45
|
||||||
|
jmp +1
|
||||||
|
acc +13
|
||||||
|
jmp -171
|
||||||
|
acc +3
|
||||||
|
acc +19
|
||||||
|
acc -8
|
||||||
|
acc +11
|
||||||
|
jmp -266
|
||||||
|
acc -18
|
||||||
|
nop -380
|
||||||
|
jmp -155
|
||||||
|
acc +36
|
||||||
|
acc -13
|
||||||
|
acc +35
|
||||||
|
acc -16
|
||||||
|
jmp -414
|
||||||
|
nop -408
|
||||||
|
jmp +36
|
||||||
|
acc +5
|
||||||
|
jmp +101
|
||||||
|
acc -7
|
||||||
|
acc +17
|
||||||
|
jmp -204
|
||||||
|
acc -14
|
||||||
|
jmp -99
|
||||||
|
jmp +1
|
||||||
|
nop -165
|
||||||
|
acc +10
|
||||||
|
acc +13
|
||||||
|
jmp +46
|
||||||
|
acc -13
|
||||||
|
jmp -358
|
||||||
|
acc -7
|
||||||
|
acc -14
|
||||||
|
jmp -31
|
||||||
|
acc +21
|
||||||
|
acc -9
|
||||||
|
jmp -46
|
||||||
|
nop -220
|
||||||
|
acc -1
|
||||||
|
jmp -105
|
||||||
|
acc +42
|
||||||
|
acc -14
|
||||||
|
jmp -75
|
||||||
|
acc +6
|
||||||
|
jmp -34
|
||||||
|
nop -391
|
||||||
|
acc -11
|
||||||
|
jmp -123
|
||||||
|
nop -234
|
||||||
|
acc -9
|
||||||
|
acc +35
|
||||||
|
jmp -317
|
||||||
|
nop +150
|
||||||
|
acc +11
|
||||||
|
jmp +138
|
||||||
|
acc +30
|
||||||
|
acc -11
|
||||||
|
acc +31
|
||||||
|
jmp -134
|
||||||
|
acc +20
|
||||||
|
jmp -200
|
||||||
|
acc +13
|
||||||
|
acc +14
|
||||||
|
acc +25
|
||||||
|
jmp -310
|
||||||
|
acc +13
|
||||||
|
acc +18
|
||||||
|
acc -1
|
||||||
|
jmp +85
|
||||||
|
jmp +72
|
||||||
|
acc +1
|
||||||
|
jmp -78
|
||||||
|
acc -8
|
||||||
|
jmp -149
|
||||||
|
acc +13
|
||||||
|
jmp -438
|
||||||
|
acc +38
|
||||||
|
nop -25
|
||||||
|
jmp -264
|
||||||
|
acc +50
|
||||||
|
acc +47
|
||||||
|
nop -241
|
||||||
|
acc +31
|
||||||
|
jmp -419
|
||||||
|
jmp +57
|
||||||
|
nop -359
|
||||||
|
jmp -323
|
||||||
|
acc +48
|
||||||
|
acc +4
|
||||||
|
acc -12
|
||||||
|
acc +42
|
||||||
|
jmp -167
|
||||||
|
acc +50
|
||||||
|
acc -9
|
||||||
|
jmp -138
|
||||||
|
nop -171
|
||||||
|
acc +48
|
||||||
|
jmp -398
|
||||||
|
acc -8
|
||||||
|
acc +41
|
||||||
|
acc +21
|
||||||
|
jmp -508
|
||||||
|
acc +29
|
||||||
|
acc +41
|
||||||
|
acc +35
|
||||||
|
acc +25
|
||||||
|
jmp -388
|
||||||
|
jmp -439
|
||||||
|
acc +26
|
||||||
|
acc +19
|
||||||
|
acc +13
|
||||||
|
acc -16
|
||||||
|
jmp -165
|
||||||
|
nop -61
|
||||||
|
acc +16
|
||||||
|
acc +20
|
||||||
|
jmp -312
|
||||||
|
nop -19
|
||||||
|
jmp -101
|
||||||
|
acc +1
|
||||||
|
jmp -515
|
||||||
|
acc +19
|
||||||
|
jmp +96
|
||||||
|
jmp +1
|
||||||
|
acc +42
|
||||||
|
acc +34
|
||||||
|
acc +33
|
||||||
|
jmp +80
|
||||||
|
nop -314
|
||||||
|
acc +12
|
||||||
|
acc +36
|
||||||
|
nop -405
|
||||||
|
jmp -87
|
||||||
|
acc +16
|
||||||
|
nop -100
|
||||||
|
acc +11
|
||||||
|
acc +15
|
||||||
|
jmp -524
|
||||||
|
nop -369
|
||||||
|
acc +8
|
||||||
|
jmp -386
|
||||||
|
acc +32
|
||||||
|
jmp -77
|
||||||
|
acc -7
|
||||||
|
acc -16
|
||||||
|
acc +33
|
||||||
|
acc +30
|
||||||
|
jmp -213
|
||||||
|
acc -2
|
||||||
|
jmp -403
|
||||||
|
acc +35
|
||||||
|
nop -81
|
||||||
|
jmp -340
|
||||||
|
acc +7
|
||||||
|
acc +3
|
||||||
|
jmp -444
|
||||||
|
jmp -445
|
||||||
|
jmp -218
|
||||||
|
acc +39
|
||||||
|
acc -9
|
||||||
|
jmp +1
|
||||||
|
jmp -284
|
||||||
|
acc +43
|
||||||
|
acc +1
|
||||||
|
acc -12
|
||||||
|
nop -218
|
||||||
|
jmp -460
|
||||||
|
jmp -404
|
||||||
|
jmp +1
|
||||||
|
jmp -135
|
||||||
|
jmp -223
|
||||||
|
jmp +1
|
||||||
|
acc +30
|
||||||
|
acc +36
|
||||||
|
jmp -61
|
||||||
|
jmp -580
|
||||||
|
acc -8
|
||||||
|
jmp -79
|
||||||
|
acc +18
|
||||||
|
acc -1
|
||||||
|
acc +9
|
||||||
|
jmp -321
|
||||||
|
jmp -560
|
||||||
|
acc +2
|
||||||
|
jmp -182
|
||||||
|
acc +18
|
||||||
|
acc +29
|
||||||
|
acc +28
|
||||||
|
jmp -129
|
||||||
|
acc +10
|
||||||
|
nop -120
|
||||||
|
jmp +16
|
||||||
|
acc +23
|
||||||
|
acc +9
|
||||||
|
acc +36
|
||||||
|
acc +24
|
||||||
|
jmp -589
|
||||||
|
acc +21
|
||||||
|
jmp -419
|
||||||
|
nop -275
|
||||||
|
jmp -231
|
||||||
|
jmp -341
|
||||||
|
acc +33
|
||||||
|
acc +30
|
||||||
|
jmp -470
|
||||||
|
nop -337
|
||||||
|
jmp -389
|
||||||
|
jmp +5
|
||||||
|
acc -14
|
||||||
|
nop -27
|
||||||
|
acc +5
|
||||||
|
jmp -78
|
||||||
|
acc +40
|
||||||
|
acc +2
|
||||||
|
acc -5
|
||||||
|
nop -205
|
||||||
|
jmp -537
|
||||||
|
jmp -318
|
||||||
|
nop -404
|
||||||
|
acc +12
|
||||||
|
acc +0
|
||||||
|
acc -4
|
||||||
|
jmp -54
|
||||||
|
acc +8
|
||||||
|
acc +32
|
||||||
|
nop -357
|
||||||
|
acc +35
|
||||||
|
jmp -153
|
||||||
|
acc +42
|
||||||
|
acc +17
|
||||||
|
acc -9
|
||||||
|
jmp -13
|
||||||
|
nop -222
|
||||||
|
acc +27
|
||||||
|
jmp -63
|
||||||
|
acc +11
|
||||||
|
acc -17
|
||||||
|
nop -45
|
||||||
|
acc +4
|
||||||
|
jmp -217
|
||||||
|
acc +5
|
||||||
|
acc +26
|
||||||
|
nop -574
|
||||||
|
jmp -489
|
||||||
|
acc +29
|
||||||
|
acc +36
|
||||||
|
acc +31
|
||||||
|
nop -407
|
||||||
|
jmp +1
|
9
eight/sample.code
Normal file
9
eight/sample.code
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
nop +0
|
||||||
|
acc +1
|
||||||
|
jmp +4
|
||||||
|
acc +3
|
||||||
|
jmp -3
|
||||||
|
acc -99
|
||||||
|
acc +1
|
||||||
|
jmp -4
|
||||||
|
acc +6
|
10
main.go
10
main.go
@@ -3,7 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/thatguygriff/aoc2020/seven"
|
"github.com/thatguygriff/aoc2020/eight"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -32,6 +32,10 @@ func main() {
|
|||||||
// fmt.Println(six.PartTwo())
|
// fmt.Println(six.PartTwo())
|
||||||
|
|
||||||
// Day 7
|
// Day 7
|
||||||
fmt.Println(seven.PartOne())
|
// fmt.Println(seven.PartOne())
|
||||||
fmt.Println(seven.PartTwo())
|
// fmt.Println(seven.PartTwo())
|
||||||
|
|
||||||
|
// Day 8
|
||||||
|
fmt.Println(eight.PartOne())
|
||||||
|
fmt.Println(eight.PartTwo())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user