84 lines
1.4 KiB
Go

package main
import (
"bytes"
"fmt"
"io/ioutil"
"time"
)
type Square struct {
x int64
y int64
}
func main() {
fmt.Println("Day 8")
start := time.Now()
dat, err := ioutil.ReadFile("day8.txt")
if err != nil {
panic(err)
}
lines := bytes.Split(dat, []byte("\n"))
part2 := 0
totalCharacters := 0
realCharacters := 0
for _, value := range lines {
line := string(value)
totalCharacters += len(line)
newLine := line[1 : len(line)-1]
currentReal := 0
for i := 0; i < len(newLine); i++ {
char := string(newLine[i])
if char == `\` {
nextChar := string(newLine[i+1])
if nextChar == "x" {
i = i + 2
} else if nextChar == `"` || nextChar == `\` {
i++
currentReal++
}
} else {
currentReal++
}
}
realCharacters += currentReal
currentPart2 := 0
for i := 0; i < len(line); i++ {
char := string(line[i])
if char == `"` || char == `\` {
currentPart2 += 2
} else {
currentPart2++
}
}
//Double quotes around the string
currentPart2 += 2
part2 += currentPart2
}
elapsed := time.Since(start)
fmt.Printf("Part 1: %v %v \n", totalCharacters-realCharacters, elapsed)
fmt.Printf("Part 2: %v %v \n", part2-totalCharacters, elapsed)
}
func compare(slice1 []byte, slice2 []byte) bool {
for i := 0; i < len(slice1) && i < len(slice2); i++ {
if slice1[i] != slice2[i] {
return false
}
}
return true
}