🎄 2019 Day 1 Complete! :D 🎄

This commit is contained in:
2019-12-01 07:42:53 -06:00
parent 056ba2d484
commit abe0af5bb7
5 changed files with 286 additions and 0 deletions

59
2019/day01/main.go Normal file
View File

@@ -0,0 +1,59 @@
package main
import (
"bufio"
"fmt"
"log"
"math"
"os"
"strconv"
)
func main() {
inp := StdinToStringSlice()
fmt.Println("Fuel Required:", part1(inp))
}
func part1(inp []string) int {
var total int
for _, v := range inp {
total = total + part2(fuelRequired(float64(Atoi(v))))
}
return total
}
func part2(fuel int) int {
ret := fuel
for fuel > 0 {
fuel = fuelRequired(float64(fuel))
fmt.Println(fuel)
ret = ret + fuel
}
return ret
}
func fuelRequired(mass float64) int {
res, _ := math.Modf(mass / 3)
if int(res)-2 < 0 {
return 0
}
return int(res) - 2
}
func StdinToStringSlice() []string {
var input []string
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
input = append(input, scanner.Text())
}
return input
}
func Atoi(i string) int {
var ret int
var err error
if ret, err = strconv.Atoi(i); err != nil {
log.Fatal("Invalid Atoi")
}
return ret
}