fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġprintln (" Hello ĠWorld !") ĊĊĠĠĠ Ġval Ġvalues Ġ= Ġgenerate Sequence (:: readLine ) ĊĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġline Ġ-> Ġline . trim (). take Unless Ġ{ Ġtrimmed Ġ-> Ġtrimmed . isBlank () Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġvalues . forEach Ġ{ Ġprintln ( it ) Ġ} ĊĊĠĠĠ Ġval Ġbits Ġ= Ġvalues . max Of Ġ{ Ġit . length Ġ} ĊĊĠĠĠ Ġval Ġgamma Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbits ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmost Common Ġ= Ġif Ġ( values . count On es ( i ) Ġ>= Ġ( values . size Ġ+ Ġ 1 ) Ġ/ Ġ 2 ) Ġ" 1 " Ġelse Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( most Common ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprintln (" gamma =$ gamma ") ĊĊĠĠĠ Ġval Ġepsilon Ġ= Ġgamma . map Ġ{ Ġif Ġ( it Ġ== Ġ' 0 ') Ġ' 1 ' Ġelse Ġ' 0 ' Ġ}. join ToString ( separator Ġ= Ġ"") ĊĠĠĠ Ġprintln (" epsilon =$ epsilon ") ĊĊĠĠĠ Ġprintln (" power =${ gamma . toInt ( 2 ) Ġ* Ġepsilon . toInt ( 2 )} ") ĊĊĠĠĠ Ġ// Ġo xygen Ġgenerator Ġrating ĊĠĠĠ Ġval Ġlist 1 Ġ= Ġvalues . to Mutable List () ĊĠĠĠ Ġvar Ġo xygen Gen : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbits ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmost Common Ġ= Ġif Ġ( list 1 . count On es ( i ) Ġ>= Ġ( list 1 . size Ġ+ Ġ 1 ) Ġ/ Ġ 2 ) Ġ" 1 " Ġelse Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġprintln (" most Common [$ i ] =$ most Common Ġ( ones =${ list 1 . count On es ( i )} Ġlist Ġsize =${ list 1 . size }} ") ĊĠĠĠĠĠĠĠ Ġlist 1 . remove If Ġ{ Ġit [ i ] Ġ!= Ġmost Common [ 0 ] Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( list 1 . size Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" oxy gen Ġgenerator : Ġ${ list 1 . first OrNull () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo xygen Gen Ġ= Ġlist 1 . first OrNull ()?. toInt ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCO 2 Ġscr ub ber Ġrating ĊĠĠĠ Ġval Ġlist 2 Ġ= Ġvalues . to Mutable List () ĊĠĠĠ Ġvar Ġscr ub ber : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbits ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleast Common Ġ= Ġif Ġ( list 2 . count On es ( i ) Ġ< Ġ( list 2 . size Ġ+ Ġ 1 ) Ġ/ Ġ 2 ) Ġ" 1 " Ġelse Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġlist 2 . remove If Ġ{ Ġit [ i ] Ġ!= Ġleast Common [ 0 ] Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( list 2 . size Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" scr ub ber Ġfirst : Ġ${ list 2 . first OrNull () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscr ub ber Ġ= Ġlist 2 . first OrNull ()?. toInt ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprintln (" oxy gen Gen =$ oxy gen Gen Ġco 2 scr ub ber =$ scr ub ber Ġmulti =${ oxy gen Gen ?. times ( scr ub ber Ġ?: Ġ 0 )} ") Ċ } Ċ Ċ fun ĠList < String >. count On es ( index : ĠInt ): ĠInt Ġ= Ġcount Ġ{ Ġit [ index ] Ġ== Ġ" 1 "[ 0 ] Ġ} Ċ