library(tidyverse)
calculate_fuel <- function(mass) floor(mass / 3) - 2
input <- read_csv(file = "inputs/2019/01.txt", col_names = "mass") |>
mutate(fuel = map_dbl(mass, calculate_fuel))
input |>
summarise(total_fuel = sum(fuel)) |>
pull(total_fuel) |>
cat()
## 3457681Day 1: The Tyranny of the Rocket Equation
Part One
# look at the full table
input |> print(n = nrow(input))
## # A tibble: 100 × 2
## mass fuel
## <dbl> <dbl>
## 1 118868 39620
## 2 88841 29611
## 3 133680 44558
## 4 148066 49353
## 5 70887 23627
## 6 93213 31069
## 7 124243 41412
## 8 92767 30920
## 9 71322 23772
## 10 86793 28929
## 11 53650 17881
## 12 102703 34232
## 13 146958 48984
## 14 53031 17675
## 15 148282 49425
## 16 124989 41661
## 17 74375 24789
## 18 122044 40679
## 19 122693 40895
## 20 74204 24732
## 21 74869 24954
## 22 81803 27265
## 23 124436 41476
## 24 68495 22829
## 25 74865 24953
## 26 70765 23586
## 27 81537 27177
## 28 61376 20456
## 29 145342 48445
## 30 137159 45717
## 31 115230 38408
## 32 119293 39762
## 33 147126 49040
## 34 130191 43395
## 35 131330 43774
## 36 122891 40961
## 37 135407 45133
## 38 116334 38776
## 39 130325 43439
## 40 138521 46171
## 41 71955 23983
## 42 53806 17933
## 43 122260 40751
## 44 102573 34189
## 45 70032 23342
## 46 75981 25325
## 47 111555 37183
## 48 135654 45216
## 49 50805 16933
## 50 122186 40726
## 51 138172 46055
## 52 96422 32138
## 53 124781 41591
## 54 55894 18629
## 55 54337 18110
## 56 149926 49973
## 57 63809 21267
## 58 146163 48719
## 59 55131 18375
## 60 55796 18596
## 61 92771 30921
## 62 80288 26760
## 63 111619 37204
## 64 134602 44865
## 65 82245 27413
## 66 72505 24166
## 67 117209 39067
## 68 92383 30792
## 69 149101 49698
## 70 135399 45131
## 71 112166 37386
## 72 134000 44664
## 73 88771 29588
## 74 63963 21319
## 75 103731 34575
## 76 74915 24969
## 77 146347 48780
## 78 125390 41794
## 79 126249 42081
## 80 131534 43842
## 81 142038 47344
## 82 55327 18440
## 83 58784 19592
## 84 85003 28332
## 85 65909 21967
## 86 89879 29957
## 87 128715 42903
## 88 138559 46184
## 89 146209 48734
## 90 145040 48344
## 91 116032 38675
## 92 130046 43346
## 93 131664 43886
## 94 125899 41964
## 95 141918 47304
## 96 88426 29473
## 97 50488 16827
## 98 67943 22645
## 99 79677 26557
## 100 94858 31617Part Two
calculate_fuel_adj <- function(mass) {
total <- calculate_fuel(mass)
repeat{
new <- calculate_fuel(total[length(total)])
if (new > 0) total <- c(total, new) else break
}
return(sum(total))
}
input <- input |>
mutate(fuel_adj = map_dbl(mass, calculate_fuel_adj))
input |>
summarise(total_fuel_adj = sum(fuel_adj)) |>
pull(total_fuel_adj) |>
cat()
## 5183653# look at the full table
input |> print(n = nrow(input))
## # A tibble: 100 × 3
## mass fuel fuel_adj
## <dbl> <dbl> <dbl>
## 1 118868 39620 59402
## 2 88841 29611 44387
## 3 133680 44558 66808
## 4 148066 49353 74001
## 5 70887 23627 35412
## 6 93213 31069 46574
## 7 124243 41412 62088
## 8 92767 30920 46351
## 9 71322 23772 35629
## 10 86793 28929 43366
## 11 53650 17881 26795
## 12 102703 34232 51317
## 13 146958 48984 73447
## 14 53031 17675 26486
## 15 148282 49425 74108
## 16 124989 41661 62464
## 17 74375 24789 37157
## 18 122044 40679 60989
## 19 122693 40895 61313
## 20 74204 24732 37070
## 21 74869 24954 37404
## 22 81803 27265 40869
## 23 124436 41476 62184
## 24 68495 22829 34214
## 25 74865 24953 37401
## 26 70765 23586 35352
## 27 81537 27177 40738
## 28 61376 20456 30657
## 29 145342 48445 72639
## 30 137159 45717 68546
## 31 115230 38408 57582
## 32 119293 39762 59614
## 33 147126 49040 73530
## 34 130191 43395 65063
## 35 131330 43774 65633
## 36 122891 40961 61412
## 37 135407 45133 67669
## 38 116334 38776 58134
## 39 130325 43439 65127
## 40 138521 46171 69229
## 41 71955 23983 35946
## 42 53806 17933 26872
## 43 122260 40751 61097
## 44 102573 34189 51255
## 45 70032 23342 34985
## 46 75981 25325 37959
## 47 111555 37183 55747
## 48 135654 45216 67795
## 49 50805 16933 25373
## 50 122186 40726 61059
## 51 138172 46055 69053
## 52 96422 32138 48178
## 53 124781 41591 62358
## 54 55894 18629 27917
## 55 54337 18110 27137
## 56 149926 49973 74927
## 57 63809 21267 31873
## 58 146163 48719 73048
## 59 55131 18375 27536
## 60 55796 18596 27866
## 61 92771 30921 46354
## 62 80288 26760 40113
## 63 111619 37204 55779
## 64 134602 44865 67267
## 65 82245 27413 41091
## 66 72505 24166 36222
## 67 117209 39067 58571
## 68 92383 30792 46160
## 69 149101 49698 74517
## 70 135399 45131 67665
## 71 112166 37386 56050
## 72 134000 44664 66967
## 73 88771 29588 44352
## 74 63963 21319 31951
## 75 103731 34575 51834
## 76 74915 24969 37425
## 77 146347 48780 73140
## 78 125390 41794 62664
## 79 126249 42081 63093
## 80 131534 43842 65734
## 81 142038 47344 70985
## 82 55327 18440 27633
## 83 58784 19592 29359
## 84 85003 28332 42469
## 85 65909 21967 32924
## 86 89879 29957 44906
## 87 128715 42903 64325
## 88 138559 46184 69247
## 89 146209 48734 73071
## 90 145040 48344 72485
## 91 116032 38675 57983
## 92 130046 43346 64989
## 93 131664 43886 65799
## 94 125899 41964 62918
## 95 141918 47304 70927
## 96 88426 29473 44181
## 97 50488 16827 25215
## 98 67943 22645 33940
## 99 79677 26557 39808
## 100 94858 31617 47398