import Ġcent ile . Cent ile Ċ import Ġcent ile . model . Standard Ċ import Ġcent ile . model . Gender Ċ import Ġcent ile . model . Type Ċ import Ġjava . io . File Ċ import Ġkotlin . math . pow Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġprintln (" Yo ung ster Ġgender ? Ġ( Girl Ġ/ ĠBo y ): ") ĊĠĠĠ Ġ// ĠTodo : Ġadd Ġinputs Ġcheck Ġ;) ĊĠĠĠ Ġval Ġpicked Gender Ġ= Ġread Line (). toString () ĊĠĠĠ Ġval Ġgender Ġ= ĠGender . valueOf ( pick ed Gender . toUpperCase ()) ĊĠĠĠ Ġprintln (" Age ( months ) ?: ") ĊĠĠĠ Ġval Ġage Ġ= Ġread Line () !!. toInt () ĊĠĠĠ Ġprintln (" Weight ( kg ) ?: ") ĊĠĠĠ Ġval Ġweight Ġ= Ġread Line () !!. toDouble () ĊĠĠĠ Ġprintln (" Height ( cm ) ?: ") ĊĠĠĠ Ġval Ġheight Ġ= Ġread Line () !!. toDouble () ĊĠĠĠ Ġfind Cent ile ( gender , Ġage , Ġweight , Ġheight ) Ċ } Ċ Ċ fun Ġfind Cent ile ( gender : ĠGender , Ġage : ĠInt , Ġweight : ĠDouble , Ġheight : ĠDouble ) Ġ{ ĊĠĠĠ Ġval Ġstandards Ġ= Ġget Cent iles () ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . gender Ġ== Ġgender Ġ&& Ġit . age Ġ== Ġage Ġ} ĊĊĠĠĠ Ġif Ġ( standard s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb mi Ġ= Ġweight Ġ/ Ġ( height Ġ/ Ġ 1 0 0 ). pow ( 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtype To Value Ġ= Ġmap Of ( Type . WEIGHT Ġto Ġweight , ĠType . HEIGHT Ġto Ġheight , ĠType . B MI Ġto Ġb mi ) ĊĊĠĠĠĠĠĠĠ Ġtype To Value . forEach Ġ{ Ġprint Cent ile ( it . key , Ġit . value , Ġstandards ) Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" No Ġdata Ġfor Ġthis Ġage ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġprint Cent ile ( type : ĠType , Ġvalue : ĠDouble , Ġstandards : ĠList < Standard >) Ġ{ ĊĠĠĠ Ġval Ġcent iles Ġ= Ġstandards . first OrNull Ġ{ Ġit . type Ġ== Ġtype Ġ} Ġ? . cent iles ĊĠĠĠ Ġval Ġresult Ġ= Ġcent iles ?. let Ġ{ Ġget Percent ile ( it , Ġvalue ) Ġ} Ġ?: Ġ" no Ġdata Ġfor Ġthis Ġage " ĊĠĠĠ Ġprintln (" Cent ile Ġ$ type : Ġ$ result ") Ċ } Ċ Ċ fun Ġget Percent ile ( cent iles : ĠList < Cent ile >, Ġvalue : ĠDouble ) Ġ: ĠInt Ġ{ ĊĠĠĠ Ġval Ġcent ile Ġ= Ġcent iles ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . value Ġ<= Ġvalue Ġ} ĊĠĠĠĠĠĠĠ Ġ. last OrNull () ĊĊĠĠĠ Ġreturn Ġcent ile ?. percentile Ġ?: Ġ 1 Ċ } Ċ Ċ fun Ġget Cent iles (): ĠList < Standard > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv File Ġ= Ġ"./ src / cent ile / cent iles . csv " ĊĠĠĠĠĠĠĠ Ġval Ġcent iles Ġ= Ġmutable ListOf < Standard >() ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠFile ( csv File ). read Lines () ĊĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġreader ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Field Ġ= Ġline . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcent iles . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . valueOf ( data Field [ 0 ]), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType . valueOf ( data Field [ 1 ]), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Field [ 2 ]. toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 1 , Ġdata Field [ 3 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 3 , Ġdata Field [ 4 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 5 , Ġdata Field [ 5 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 1 0 , Ġdata Field [ 6 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 1 5 , Ġdata Field [ 7 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 2 5 , Ġdata Field [ 8 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 5 0 , Ġdata Field [ 9 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 7 5 , Ġdata Field [ 1 0 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 8 5 , Ġdata Field [ 1 1 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 9 0 , Ġdata Field [ 1 2 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 9 5 , Ġdata Field [ 1 3 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 9 7 , Ġdata Field [ 1 4 ]. toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCent ile ( 9 9 , Ġdata Field [ 1 5 ]. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcent iles ĊĠĠĠ Ġ} Ċ