Bootstrap and day 1 solution
This commit is contained in:
47
days/01.go
Normal file
47
days/01.go
Normal file
@ -0,0 +1,47 @@
|
||||
package days
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"time"
|
||||
|
||||
"parnic.com/aoc2019/utilities"
|
||||
)
|
||||
|
||||
type Day01 struct {
|
||||
nums []int64
|
||||
}
|
||||
|
||||
func (d *Day01) Parse() {
|
||||
d.nums = utilities.GetIntLines("01p")
|
||||
time.Sleep(time.Microsecond * 500)
|
||||
}
|
||||
|
||||
func (d *Day01) calcFuel(mass int64) int64 {
|
||||
return int64(math.Floor(float64(mass)/3)) - 2
|
||||
}
|
||||
|
||||
func (d *Day01) Part1() string {
|
||||
var totalFuel int64
|
||||
for _, mass := range d.nums {
|
||||
fuel := d.calcFuel(mass)
|
||||
totalFuel += fuel
|
||||
}
|
||||
|
||||
return fmt.Sprintf("Fuel required: %s%d%s", utilities.TextBold, totalFuel, utilities.TextReset)
|
||||
}
|
||||
|
||||
func (d *Day01) Part2() string {
|
||||
var totalFuel int64
|
||||
for _, mass := range d.nums {
|
||||
for mass > 0 {
|
||||
fuel := d.calcFuel(mass)
|
||||
if fuel > 0 {
|
||||
totalFuel += fuel
|
||||
}
|
||||
mass = fuel
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Sprintf("Fuel required: %s%d%s", utilities.TextBold, totalFuel, utilities.TextReset)
|
||||
}
|
Reference in New Issue
Block a user