56 lines
850 B
Go
56 lines
850 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
data, err := ioutil.ReadFile("numbers")
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
return
|
|
}
|
|
numberStrings := strings.Split(string(data), "\n")
|
|
var numbers []int
|
|
for _, i := range numberStrings {
|
|
if i == "" {
|
|
break
|
|
}
|
|
num, err := strconv.Atoi(i)
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
return
|
|
}
|
|
numbers = append(numbers, num)
|
|
}
|
|
fmt.Println(part1(numbers))
|
|
fmt.Println(part2(numbers))
|
|
}
|
|
|
|
func part1(numbers []int) int {
|
|
for _, i := range numbers {
|
|
for _, j := range numbers {
|
|
if i+j == 2020 {
|
|
return i * j
|
|
}
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func part2(numbers []int) int {
|
|
for _, i := range numbers {
|
|
for _, j := range numbers {
|
|
for _, k := range numbers {
|
|
if i+j+k == 2020 {
|
|
return i * j * k
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 0
|
|
}
|