package Ġdesign . simulation . simulation Ċ import Ġdesign . Item Ċ import Ġdesign . U 1 Ċ import Ġdesign . U 2 Ċ import Ġjava . net . URL Ċ Ċ class ĠSimulation ( private Ġval Ġurl : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġload Items (): ĠArrayList < Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitems Collection : ĠArrayList < Item > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġval Ġelements Ġ= ĠURL ( url ). read Text () ĊĠĠĠĠĠĠĠ Ġelements . reader (). forEach Line Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarr Ġ= Ġit . split (" =") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Collection . add ( Item ( arr [ 0 ], Ġarr [ 1 ]. toInt ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġitems Collection ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġload U 1 (): ĠArrayList < U 1 > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġitems : ĠArrayList < Item > Ġ= Ġload Items () ĊĠĠĠĠĠĠĠ Ġval Ġrocket s : ĠArrayList < U 1 > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġfun Ġfill Rocket () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( items . size Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot Loaded Items : ĠArrayList < Item > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrocket Ġ= ĠU 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( elm Ġin Ġitems ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! rocket . carry ( elm )) Ġnot Loaded Items . add ( elm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrocket s . add ( rocket ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġnot Loaded Items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Rocket () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfill Rocket () ĊĠĠĠĠĠĠĠ Ġreturn Ġrocket s ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġload U 2 (): ĠArrayList < U 2 > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġitems : ĠArrayList < Item > Ġ= Ġload Items () ĊĠĠĠĠĠĠĠ Ġval Ġrocket s : ĠArrayList < U 2 > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġfun Ġfill Rocket () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( items . size Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot Loaded Items : ĠArrayList < Item > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrocket Ġ= ĠU 2 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( elm Ġin Ġitems ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! rocket . carry ( elm )) Ġnot Loaded Items . add ( elm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrocket s . add ( rocket ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġnot Loaded Items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Rocket () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfill Rocket () ĊĠĠĠĠĠĠĠ Ġreturn Ġrocket s ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġrun Simulation (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġu 1 Rocket s Ġ= Ġload U 1 () ĊĠĠĠĠĠĠĠ Ġval Ġu 2 Rocket s Ġ= Ġload U 2 () ĊĠĠĠĠĠĠĠ Ġvar Ġu 1 Budget Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġu 2 Budget Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor ( elm Ġin Ġu 1 Rocket s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġlaunch Rocket ( r kt : ĠU 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu 1 Budget Ġ+= Ġr kt . rocket Cost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r kt . launch ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! r kt . land ()) launch Rocket ( r kt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Rocket ( elm ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor ( elm Ġin Ġu 2 Rocket s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġlaunch Rocket ( r kt : ĠU 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu 2 Budget Ġ+= Ġr kt . rocket Cost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r kt . launch ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! r kt . land ()) launch Rocket ( r kt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Rocket ( elm ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" U 1 ĠMis sion Ġtotal Ġbudget : Ġ$ Ġ$ u 1 Budget . 0 0 ") ĊĠĠĠĠĠĠĠ Ġprintln (" U 2 ĠMis sion Ġtotal Ġbudget : Ġ$ Ġ$ u 2 Budget . 0 0 ") ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }