53 lines
992 B
Go
53 lines
992 B
Go
package day08
|
|
|
|
import (
|
|
"aoc2015/aoclib"
|
|
"encoding/hex"
|
|
)
|
|
|
|
func Part1(puzzle aoclib.Puzzle) interface{} {
|
|
answer := 0
|
|
|
|
for _, line := range puzzle.GetInputArray() {
|
|
line = line[1 : len(line)-1]
|
|
newline := ""
|
|
index := 0
|
|
for index < len(line) {
|
|
if line[index] == '\\' {
|
|
if line[index+1] == '\\' || line[index+1] == '"' {
|
|
newline += string(line[index+1])
|
|
index++
|
|
} else if line[index+1] == 'x' {
|
|
decoded, _ := hex.DecodeString(line[index+2 : index+4])
|
|
newline += string(decoded)
|
|
index += 3
|
|
}
|
|
} else {
|
|
newline += string(line[index])
|
|
}
|
|
index++
|
|
}
|
|
answer += len(line) - len(newline) + 2
|
|
}
|
|
|
|
return answer
|
|
}
|
|
|
|
func Part2(puzzle aoclib.Puzzle) interface{} {
|
|
answer := 0
|
|
|
|
for _, line := range puzzle.GetInputArray() {
|
|
newline := ""
|
|
for _, c := range line {
|
|
if c == '"' || c == '\\' {
|
|
newline += "\\" + string(c)
|
|
} else {
|
|
newline += string(c)
|
|
}
|
|
}
|
|
answer += len(newline) - len(line) + 2
|
|
}
|
|
|
|
return answer
|
|
}
|