diff options
-rw-r--r-- | one.go | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -0,0 +1,40 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" + "strconv" +) + +func main() { + start, sum, fuelsum := 0, 0, 0 + if len(os.Args) < 2 { + panic("runtime error: missing operand") + } + file, err := ioutil.ReadFile(os.Args[1]) + if err != nil { + panic(err) + } + for i := 0; i < len(file); i++ { + if file[i] == '\n' { + arg, err := strconv.Atoi(string(file[start:i])) // i-1?? + if err != nil { + panic(err) + } + start = i + 1 + sum += (arg / 3) - 2 + fuelsum += tyranny(arg) + } + } + fmt.Println(sum) + fmt.Println(fuelsum) +} + +func tyranny(mass int) int { + subtotal := 0 + for fuel := (mass / 3) - 2; fuel >= 0; fuel = (fuel / 3) - 2 { + subtotal += fuel + } + return subtotal +} |