advent-of-code/2019/1/day1.go
2019-12-01 19:25:14 +01:00

47 lines
713 B
Go

package main
import (
"fmt"
"io/ioutil"
"strconv"
"strings"
)
func main() {
inFile, _ := ioutil.ReadFile("input")
lines := strings.Split(string(inFile), "\n")
fmt.Printf("Part 1: %d\n", part1(lines))
fmt.Printf("Part 2: %d\n", part2(lines))
}
func part1(lines []string) int {
fuel := 0
for _, line := range lines {
mass, _ := strconv.Atoi(line)
fuel += cost(mass)
}
return fuel
}
func part2(lines []string) int {
fuel := 0
for _, line := range lines {
mass, _ := strconv.Atoi(line)
fuel += costRec(mass, 0)
}
return fuel
}
func cost(mass int) int {
return mass/3 - 2
}
func costRec(mass int, acc int) int {
c := cost(mass)
if c <= 0 {
return acc
}
return costRec(c, acc+c)
}