feat: add p2 solution

This commit is contained in:
2025-11-28 15:33:23 +01:00
parent db685a1290
commit 98fb052039

View File

@@ -16,11 +16,6 @@ func init() {
registry.Register("2020D8", ParseInput, PartOne, PartTwo) registry.Register("2020D8", ParseInput, PartOne, PartTwo)
} }
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func parseInstructions(data []string) []instruction { func parseInstructions(data []string) []instruction {
instructions := make([]instruction, 0, len(data)) instructions := make([]instruction, 0, len(data))
for _, line := range data { for _, line := range data {
@@ -61,6 +56,11 @@ func execute(instructions []instruction) (accumulator int, terminatedNormally bo
return accumulator, true return accumulator, true
} }
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int { func PartOne(data []string) int {
instructions := parseInstructions(data) instructions := parseInstructions(data)
accumulator, _ := execute(instructions) accumulator, _ := execute(instructions)
@@ -68,5 +68,27 @@ func PartOne(data []string) int {
} }
func PartTwo(data []string) int { func PartTwo(data []string) int {
instructions := parseInstructions(data)
for idx := range instructions {
if instructions[idx].operation != "jmp" && instructions[idx].operation != "nop" {
continue
}
originalOperation := instructions[idx].operation
if originalOperation == "jmp" {
instructions[idx].operation = "nop"
} else {
instructions[idx].operation = "jmp"
}
accumulator, terminatedNormally := execute(instructions)
instructions[idx].operation = originalOperation
if terminatedNormally {
return accumulator
}
}
return 0 return 0
} }