diff --git a/days/02.go b/days/02.go index f34098d..bf98b8b 100644 --- a/days/02.go +++ b/days/02.go @@ -7,19 +7,19 @@ import ( ) type Day02 struct { - program []int64 + program utilities.IntcodeProgram } func (d *Day02) Parse() { - d.program = utilities.ParseIntcodeProgram(utilities.GetStringContents("02p")) + d.program = utilities.LoadIntcodeProgram("02p") } func (d Day02) Num() int { return 2 } -func (d *Day02) getProgramWithParams(param1, param2 int64) []int64 { - program := make([]int64, len(d.program)) +func (d *Day02) getProgramWithParams(param1, param2 int64) utilities.IntcodeProgram { + program := make(utilities.IntcodeProgram, len(d.program)) copy(program, d.program) program[1] = param1 program[2] = param2 diff --git a/utilities/intcode.go b/utilities/intcode.go index 84610ae..f162a7f 100644 --- a/utilities/intcode.go +++ b/utilities/intcode.go @@ -11,9 +11,11 @@ const ( opEnd = 99 ) -func ParseIntcodeProgram(programStr string) []int64 { +type IntcodeProgram []int64 + +func ParseIntcodeProgram(programStr string) IntcodeProgram { nums := strings.Split(programStr, ",") - program := make([]int64, len(nums)) + program := make(IntcodeProgram, len(nums)) for idx, num := range nums { iNum, err := strconv.ParseInt(num, 10, 64) if err != nil { @@ -25,7 +27,7 @@ func ParseIntcodeProgram(programStr string) []int64 { return program } -func RunIntcodeProgram(program []int64) { +func RunIntcodeProgram(program IntcodeProgram) { for instructionPointer := 0; instructionPointer < len(program); { opcode := program[instructionPointer] switch opcode { diff --git a/utilities/parsing.go b/utilities/parsing.go index 03b452e..1c81540 100644 --- a/utilities/parsing.go +++ b/utilities/parsing.go @@ -24,6 +24,11 @@ func getData(filename string, lineHandler func(line string)) { } } +func LoadIntcodeProgram(filename string) IntcodeProgram { + programStr := GetStringContents(filename) + return ParseIntcodeProgram(programStr) +} + func GetStringContents(filename string) string { var retval string getData(filename, func(line string) {