class Fuelator::Calc
Calculate fuel for a flight
Example:
>> Fuelator.Calc.new(28801, [[:launch, 9.807], [:land, 1.62], [:launch, 1.62], [:land, 9.807]]).run => 51898
Constants
- FLIGHT_CONSTANTS
Attributes
parameters[R]
Public Class Methods
new(mass, pairs)
click to toggle source
# File lib/fuelator/calc.rb, line 27 def initialize(mass, pairs) @parameters = Parameters.new(mass, pairs) end
run(mass, pairs)
click to toggle source
# File lib/fuelator/calc.rb, line 23 def self.run(mass, pairs) new(mass, pairs).run end
Public Instance Methods
run()
click to toggle source
# File lib/fuelator/calc.rb, line 31 def run parameters.validate! full_mass = parameters.mass parameters.reversed.map do |val| full_mass += recursive_calculate(full_mass, val) end.last - parameters.mass end
Private Instance Methods
recursive_calculate(mass, pair)
click to toggle source
# File lib/fuelator/calc.rb, line 42 def recursive_calculate(mass, pair) constants = FLIGHT_CONSTANTS[pair.directive] fuel_mass = (mass * pair.gravity * constants[:theta] - constants[:bias]).to_i # rounded down return 0 if fuel_mass <= 0 result = recursive_calculate(fuel_mass, pair) fuel_mass + result end