aoc19/01/Fuel.fs

115 lines
1,003 B
Forth
Raw Normal View History

2020-10-10 12:53:23 +03:00
let moduleMasses = """79620
58052
119910
138477
139102
78373
51937
63751
100937
56664
128939
115929
136981
68215
90317
97455
130858
94009
123221
81390
61726
78271
73354
103061
131261
140510
120555
117319
91154
96009
75491
90245
141689
118783
104601
121969
98547
108924
117114
65916
120037
66166
93973
105777
63501
89199
117551
126021
93466
107901
82323
104471
98794
57270
59457
120558
128142
137648
127375
103353
116578
97950
110725
96438
128425
75503
132178
138363
67009
127873
135747
108109
118818
75396
92822
63886
82973
116243
129066
74185
145298
83483
83417
54682
55648
142206
121420
149890
56561
107108
111376
139885
147373
131657
140634
79704
90263
139892
103841
50730"""
let totalFuel (masses: string) =
let calcFuel (mass: float) =
(System.Math.Floor (mass / 3.)) - 2.
masses.Split [|'\n'|]
|> List.ofArray
|> List.map (float >> calcFuel)
|> List.reduce (+)
[<EntryPoint>]
let main (_: string[]) =
printf "total fuel: %f" (totalFuel "100756")
0