54 lines
865 B
Go
54 lines
865 B
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
|
|
fmt.Println("Day 2")
|
|
start := time.Now()
|
|
|
|
dat, err := ioutil.ReadFile("day2.txt")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
lines := bytes.Split(dat, []byte("\n"))
|
|
total := 0
|
|
totalPart2 := 0
|
|
|
|
for _, value := range lines {
|
|
|
|
splitLine := bytes.Split(value, []byte("x"))
|
|
l, _ := strconv.Atoi(string(splitLine[0]))
|
|
w, _ := strconv.Atoi(string(splitLine[1]))
|
|
h, _ := strconv.Atoi(string(splitLine[2]))
|
|
|
|
total += 2*l*w + 2*l*h + 2*w*h + MinOf(l*w, w*h, h*l)
|
|
totalPart2 += MinOf(l*2+w*2, w*2+h*2, h*2+l*2) + l*w*h
|
|
|
|
}
|
|
|
|
elapsed := time.Since(start)
|
|
fmt.Printf("Part 1: %v %v \n", total, elapsed)
|
|
fmt.Printf("Part 2: %v %v", totalPart2, elapsed)
|
|
|
|
}
|
|
|
|
func MinOf(vars ...int) int {
|
|
min := vars[0]
|
|
|
|
for _, i := range vars {
|
|
if min > i {
|
|
min = i
|
|
}
|
|
}
|
|
|
|
return min
|
|
}
|