Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

asfd

local lib = {};
-- lib.distance_method = Distance_method.great_circle;
-- 35km discount airports: CYBR,CYCG,CYCL,CYYG,CCH4,CYYQ,CZUM,CYXC,CYVZ,CYDF,CYEG,CYMM,CZFM,CYER,CYSM,CYXJ,CYFC,CYQX,CYQU,CYHM,CYOJ,CYGR,CYEV,CYFB,CYKA,CYLW,CYQK,CYGK,CYKF,CYVP,CYGW,CYGL,CYVC,CYQL,CYLL,CYXU,CYXH,CYQM,CYYY,CYVQ,CYQW,CYYB,CKQ3,CYPE,CYYF,CYZT,CYPD,CCP4,CYPA,CYXS,CYPR,CYRT,CYQF,CYUY,CYAM,CYZV,CYYD,CYS,CYXT,CYTH,CYTS,CYWK,CYZU,CYXY,CCA6,CYWL,CYZF
-- 65km discount airports: CYAV,CYXX,CYBW,CYYC,CYBL,CYRC,CYEG,CYND,CYHZ,CYNJ,CYMX,CYUL,CYHU,CYCD,CYOW,CYPK,CYQB,CYQR,CYXE,CYJN,CYQT,CYTZ,CYKZ,CYYZ,CZBB,CYVR,CYWH,CYYJ,CYWG

function findIcao(list, icao)
    for i, v in ipairs(list) do
        if (v == icao) then
            return true
        end
    end
    return false
end

function lib:calculate(flight_context, route_context, distance)
  return self:estimate(flight_context, distance);
end

function lib:estimate(flight_context, distance)
    local reducedDist = 0
    
    local airportsWith35Discount = {'CYBR', 'CYCG', 'CYCL', 'CYYG', 'CCH4', 'CYYQ', 'CZUM', 'CYXC', 'CYVZ', 'CYDF', 'CYEG', 'CYMM', 'CZFM', 'CYER', 'CYSM', 'CYXJ', 'CYFC', 'CYQX', 'CYQU', 'CYHM', 'CYOJ', 'CYGR', 'CYEV', 'CYFB', 'CYKA', 'CYLW', 'CYQK', 'CYGK', 'CYKF', 'CYVP', 'CYGW', 'CYGL', 'CYVC', 'CYQL', 'CYLL', 'CYXU', 'CYXH', 'CYQM', 'CYYY', 'CYVQ', 'CYQW', 'CYYB', 'CKQ3', 'CYPE', 'CYYF', 'CYZT', 'CYPD', 'CCP4', 'CYPA', 'CYXS', 'CYPR', 'CYRT', 'CYQF', 'CYUY', 'CYAM', 'CYZV', 'CYYD', 'CYS', 'CYXT', 'CYTH', 'CYTS', 'CYWK', 'CYZU', 'CYXY', 'CCA6', 'CYWL', 'CYZF'}
    local airportsWith65Discount = {'CYAV', 'CYXX', 'CYBW', 'CYYC', 'CYBL', 'CYRC', 'CYEG', 'CYND', 'CYHZ', 'CYNJ', 'CYMX', 'CYUL', 'CYHU', 'CYCD', 'CYOW', 'CYPK', 'CYQB', 'CYQR', 'CYXE', 'CYJN', 'CYQT', 'CYTZ', 'CYKZ', 'CYYZ', 'CZBB', 'CYVR', 'CYWH', 'CYYJ', 'CYWG'}
    
    if (findIcao(airportsWith35Discount, flight_context.origin_icao_code) and 
        findIcao(airportsWith35Discount, flight_context.destination_icao_code)) then
        reducedDist = 70000 -- departure and arrival discount 35km
    elseif (findIcao(airportsWith35Discount, flight_context.origin_icao_code) or 
        findIcao(airportsWith35Discount, flight_context.destination_icao_code)) then
        reducedDist = 35000 -- departure or arrival discount 35km
    elseif (findIcao(airportsWith65Discount, flight_context.origin_icao_code) and 
        findIcao(airportsWith65Discount, flight_context.destination_icao_code)) then
        reducedDist = 130000 -- departure and arrival discount 65km
    elseif (findIcao(airportsWith65Discount, flight_context.origin_icao_code) or 
        findIcao(airportsWith65Discount, flight_context.destination_icao_code)) then
        reducedDist = 65000 -- departure or arrival discount 65km
	elseif (findIcao(airportsWith35Discount, flight_context.origin_icao_code) and 
        findIcao(airportsWith65Discount, flight_context.destination_icao_code)) then
        reducedDist = 100000 -- departure or arrival discount 35km
	elseif (findIcao(airportsWith65Discount, flight_context.origin_icao_code) and 
        findIcao(airportsWith35Discount, flight_context.destination_icao_code)) then
        reducedDist = 100000 -- departure or arrival discount 35km
    end

    return math.max(distance-reducedDist,0)/1000 * self.unit_rate * math.sqrt(flight_context.mtom/1000)
end

return lib;

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.