import Ġjava . io . File Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . math . round ToInt ĊĊ Ċ // simple Ġclass Ġwith Ġteam Ġnumber , Ġname , Ġand Ġe lo Ġrating Ċ class ĠTeam Ġ( var Ġnumber : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrating : ĠDouble Ġ= Ġ 1 0 0 0 . 0 ) Ċ Ċ const Ġval Ġdefault FilePath Ġ= Ġ" C :\\ Users \\ E than ĠH ans en \\ Documents \\ GitHub \\ FR C - E lo \ \" Ċ Ċ val Ġempty Team Ġ= ĠTeam ( 0 , Ġ" 0 ") Ċ Ċ val Ġred Al liance Ġ= ĠArray ( 3 ){ empty Team } Ċ val Ġblue Al liance Ġ= ĠArray ( 3 ){ empty Team } Ċ val Ġteams By Rank Ġ= Ġmutable ListOf < Team >() Ċ Ċ val ĠlistOf Up sets Ġ= Ġmutable ListOf < String >() Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġload FromFile () ĊĠĠĠ Ġ// Constant ly Ġruns ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprint (" What Ġdo Ġyou Ġwant Ġto Ġdo ? Ġrun Ġ( m ) atch Ġ( d ) is play Ġratings \ n ( s ) ave Ġto Ġfile Ġ( u ) p sets Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġcommand Str Ġ= Ġread Line () ĊĠĠĠĠĠĠĠ Ġwhen Ġ( command Str ?. toLowerCase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" m " Ġ-> Ġrun Match () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d " Ġ-> Ġprint Rank ings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s " Ġ-> Ġsave ToFile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" u " Ġ-> Ġlist Up sets () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġrun Match () Ġ{ ĊĠĠĠ Ġ// in Ġa Ġmatch Ġthere Ġare Ġsix Ġteams ĊĠĠĠ Ġfor Ġ( i : ĠInt Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// finding Ġwhich Ġal liance Ġcolor Ġand Ġstation ĊĠĠĠĠĠĠĠ Ġval Ġdriver Station Int Ġ= Ġi Ġ% Ġ 3 Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġal liance Int Ġ= Ġi Ġ/ Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġ// PR S ĊĠĠĠĠĠĠĠ Ġprint (" Enter Ġthe Ġteam Ġnumber Ġin Ġ${ if ( al liance Int Ġ== Ġ 0 ) Ġ" RED " Ġelse Ġ" BLUE "} Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" al liance Ġstation Ġ$ driver Station Int Ġ: Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġinput Str Ġ= Ġread Line () ĊĠĠĠĠĠĠĠ Ġif Ġ( input Str Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" H ey Ġthat 's Ġnull Ġid iot ") ĠĠĠ Ġ// Not Ġnice Ġbut Ġid c ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Number Ġ= Ġinput Str . toInt () ĊĊĠĠĠĠĠĠĠ Ġ// try Ġto Ġfind Ġteam , Ġotherwise Ġadd Ġto Ġlist ĊĠĠĠĠĠĠĠ Ġif Ġ( teams By Rank . find Ġ{ it . number Ġ== Ġinput Number } Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Name Ġ= Ġteams By Rank . find Ġ{ it . number Ġ== Ġinput Number } !!. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Rating Ġ= Ġteams By Rank . find Ġ{ it . number Ġ== Ġinput Number } !!. rating ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" We Ġhave Ġteam Ġ$ input Number , Ġteam Ġ$ found Name Ġwith Ġan Ġe lo Ġrating Ġof Ġ${ found Rating . round ToInt () }") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Enter Ġthe Ġteam Ġname : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Name : ĠString Ġ= Ġread Line () !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Team Ġ= ĠTeam ( input Number , Ġinput Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġteams By Rank . add ( 0 , Ġnew Team ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Keep Ġtrack Ġof Ġwho Ġis Ġon Ġwhich Ġal liance ĊĠĠĠĠĠĠĠ Ġif Ġ( al liance Int Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġred Al liance [ driver Station Int Ġ- Ġ 1 ] Ġ= Ġteams By Rank . find Ġ{ it . number Ġ== Ġinput Number } !! ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblue Al liance [ driver Station Int Ġ- Ġ 1 ] Ġ= Ġteams By Rank . find Ġ{ it . number Ġ== Ġinput Number } !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Find Ġred Ġand Ġblue Ġal liance Ġaverage Ġe lo Ġratings ĊĠĠĠ Ġvar Ġred Al liance Average Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġblue Al liance Average Ġ= Ġ 0 . 0 ĊĠĠĠ Ġred Al liance . forEach Ġ{ Ġred Al liance Average Ġ+= Ġit . rating Ġ} ĊĠĠĠ Ġblue Al liance . forEach Ġ{ Ġblue Al liance Average Ġ+= Ġit . rating Ġ} ĊĠĠĠ Ġred Al liance Average Ġ/= Ġ 3 ĊĠĠĠ Ġblue Al liance Average Ġ/= Ġ 3 ĊĊĠĠĠ Ġ// Find Ġch ances Ġof Ġwin ning ĊĠĠĠ Ġval Ġred Chance Ġ= Ġ 1 . 0 Ġ/ Ġ( 1 Ġ+ Ġ 1 0 . 0 . pow (( blue Al liance Average Ġ- Ġred Al liance Average ) Ġ/ Ġ 4 0 0 . 0 )) ĊĠĠĠ Ġval Ġblue Chance Ġ= Ġ 1 Ġ- Ġred Chance ĊĠĠĠ Ġprintln (" Red Ġal liance Ġhas Ġa Ġ${ ( red Chance Ġ* Ġ 1 0 0 ). round ToInt ()} % Ġchance Ġof Ġwin ning , Ġgiving Ġblue Ġal liance Ġa Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ ( blue Chance Ġ* Ġ 1 0 0 ). round ToInt ()} % Ġchance Ġof Ġwin ning ") ĊĊĠĠĠ Ġ// get Ġactual Ġmatch Ġinfo ĊĠĠĠ Ġprintln (" Enter ĠR Ġfor Ġred Ġal liance Ġwin ning Ġor ĠB Ġfor Ġblue Ġal liance Ġwin ning ") ĊĠĠĠ Ġval Ġwin ning Str Ġ= Ġread Line ()?. toUpperCase () ĊĠĠĠ Ġval Ġred Score Ġ= Ġif ( win ning Str Ġ== Ġ" R ") Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġval Ġblue Score Ġ= Ġif ( win ning Str Ġ== Ġ" B ") Ġ 1 Ġelse Ġ 0 ĊĊĠĠĠ Ġ// update Ġe lo Ġratings ĊĠĠĠ Ġval Ġnew Red Rating Delta Ġ= Ġ 6 4 Ġ* Ġ( red Score Ġ- Ġred Chance ) ĊĠĠĠ Ġval Ġnew Blue Rating Delta Ġ= Ġ 6 4 Ġ* Ġ( blue Score Ġ- Ġblue Chance ) ĊĠĠĠ Ġred Al liance . forEach Ġ{ Ġit . rating Ġ+= Ġnew Red Rating Delta Ġ} ĊĠĠĠ Ġblue Al liance . forEach Ġ{ Ġit . rating Ġ+= Ġnew Blue Rating Delta Ġ} ĊĊĠĠĠ Ġif Ġ( red Score Ġ== Ġ 1 Ġ&& Ġred Chance Ġ< Ġ. 4 9 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Up set ( red Chance , Ġ" RED ") ĊĠĠĠ Ġ} Ġelse Ġif Ġ( blue Score Ġ== Ġ 1 Ġ&& Ġblue Chance Ġ< Ġ. 4 9 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Up set ( blue Chance , Ġ" BLUE ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġprint Rank ings () Ġ{ ĊĠĠĠ Ġ// Sort Ġteams Ġby Ġrating ĊĠĠĠ Ġteams By Rank . sortBy Descending Ġ{ Ġit . rating Ġ} ĊĊĠĠĠ Ġteams By Rank . forEach Ġ{ Ġprintln ( it . rating . round ToInt (). toString (). pad End ( 5 , Ġ'-') Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . pad End ( 2 0 , Ġ'-') Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . number . toString ()) Ġ} ĊĊĠĠĠ Ġsave ToFile () Ċ } Ċ Ċ fun Ġload FromFile () Ġ{ ĊĠĠĠ Ġvar Ġread Inputs : ĠList < String > Ġ= ĠFile ( default FilePath Ġ+ Ġ" e lo . txt "). read Lines () ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġread Inputs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Read DataList Ġ= Ġi . split ('\ t ') ĊĊĠĠĠĠĠĠĠ Ġval Ġread Team Ġ= ĠTeam ( m Read DataList [ 0 ]. toInt (), Ġm Read DataList [ 1 ], Ġm Read DataList [ 2 ]. toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġteams By Rank . add ( 0 , Ġread Team ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġread Inputs Ġ= ĠFile ( default FilePath Ġ+ Ġ" up sets . txt "). read Lines () ĊĠĠĠ Ġfor Ġ( j Ġin Ġread Inputs ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf Up sets . add ( 0 , Ġj ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsave ToFile () Ġ{ ĊĠĠĠ ĠFile ( default FilePath Ġ+ Ġ" e lo . txt "). print Writer (). use Ġ{ Ġout Ġ-> Ġteams By Rank . forEach Ġ{ Ġout . println ( ĊĠĠĠĠĠĠĠ Ġ"${ it . number }\ t ${ it . name }\ t ${ it . rating }") Ġ}} Ċ } Ċ Ċ fun Ġlist Up sets () Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin ĠlistOf Up sets ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( i ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġadd Up set ( percent : ĠDouble , Ġunder dog : ĠString ) Ġ{ ĊĠĠĠ Ġprint (" W HO A Ġthat Ġwas Ġcr azy . ĠWhat Ġmatch Ġwas Ġthat ? Ġ") ĊĠĠĠ Ġval Ġmatch Str Ġ= Ġread Line () ĊĠĠĠ ĠlistOf Up sets . add ( 0 , Ġmatch Str !! ) ĊĊĠĠĠ ĠFile ( default FilePath Ġ+ Ġ" up sets . txt "). print Writer (). use Ġ{ Ġout Ġ-> ĠlistOf Up sets . forEach Ġ{ Ġout . println ("$ it \ t $ percent \ t $ under dog ") Ġ}} Ċ } Ċ