🎄 2019 Day 1 Complete! :D 🎄
This commit is contained in:
59
2019/day01/main.go
Normal file
59
2019/day01/main.go
Normal 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
|
||||
}
|
Reference in New Issue
Block a user