package ĠDay 3 Ċ Ċ import Ġread Input Ċ Ċ fun ĠList < String >. to Cols (): ĠList < Mutable List < Char >> Ġ{ ĊĠĠĠ Ġval Ġline Size Ġ= Ġthis [ 0 ]. length ĊĠĠĠ Ġval Ġcols Ġ: ĠMutable List < Mutable List < Char >> Ġ= Ġmutable ListOf () ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġline Size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcols . add ( mutable ListOf ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ( line Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġline Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġcols [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol . add ( line [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcols Ċ } Ċ Ċ fun Ġbinary Diagnostics ( lines : ĠList < String >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġcols Ġ= Ġlines . to Cols () ĊĠĠĠ Ġvar Ġgamma Ġ= Ġ""; Ġvar Ġepsilon Ġ= Ġ"" ĊĠĠĠ Ġfor Ġ( col Ġin Ġcols ){ ĊĠĠĠĠĠĠĠ Ġgamma Ġ+= Ġcol . grouping By Ġ{ Ġit Ġ}. each Count (). max By OrNull Ġ{ Ġit . value Ġ} ?. key ĊĠĠĠĠĠĠĠ Ġepsilon Ġ+= Ġcol . grouping By Ġ{ Ġit Ġ}. each Count (). min By OrNull Ġ{ Ġit . value Ġ} ?. key ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġgamma . pad Start ( 1 6 , Ġ' 0 '). toInt ( 2 ) Ġ* Ġepsilon . pad Start ( 1 6 , Ġ' 0 '). toInt ( 2 ) Ċ } Ċ Ċ fun Ġo xygen Gen Rating ( lines : ĠList < String >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġworking Ġ= Ġlines . to Mutable List () ĊĠĠĠ Ġfor Ġ( i Ġin Ġworking . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( working . size Ġ== Ġ 1 ) Ġbreak ĊĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġknow Ġwhat Ġthis Ġdoes Ġon Ġequal Ġvalues . ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġworking . to Cols ()[ i ]. grouping By Ġ{ Ġit Ġ}. each Count () ĊĠĠĠĠĠĠĠ Ġval Ġc : ĠChar ? Ġ= Ġif Ġ( d [' 0 '] Ġ== Ġd [' 1 ']) Ġ' 1 ' ĊĠĠĠĠĠĠĠ Ġelse Ġd . max By OrNull Ġ{ Ġit . value Ġ} ?. key ĊĠĠĠĠĠĠĠ Ġworking . retain All Ġ{ Ġit [ i ] Ġ== Ġc Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġworking [ 0 ]. pad Start ( 1 6 , Ġ' 0 '). toInt ( 2 ) Ċ } Ċ Ċ fun Ġco 2 Sc rub Rating ( lines : ĠList < String >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġworking Ġ= Ġlines . to Mutable List () ĊĠĠĠ Ġfor Ġ( i Ġin Ġworking . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( working . size Ġ== Ġ 1 ) Ġbreak ĊĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġknow Ġwhat Ġthis Ġdoes Ġon Ġequal Ġvalues . ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġworking . to Cols ()[ i ]. grouping By Ġ{ Ġit Ġ}. each Count () ĊĠĠĠĠĠĠĠ Ġval Ġc : ĠChar ? Ġ= Ġif Ġ( d [' 0 '] Ġ== Ġd [' 1 ']) Ġ' 0 ' ĊĠĠĠĠĠĠĠ Ġelse Ġd . min By OrNull Ġ{ Ġit . value Ġ} ?. key ĊĠĠĠĠĠĠĠ Ġworking . retain All Ġ{ Ġit [ i ] Ġ== Ġc Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġworking [ 0 ]. pad Start ( 1 6 , Ġ' 0 '). toInt ( 2 ) Ċ } Ċ Ċ fun Ġlife Support Rating ( lines : ĠList < String >): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġo xygen Gen Rating ( lines ) Ġ* Ġco 2 Sc rub Rating ( lines ) Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġlines Ġ= Ġread Input (" Day 3 ", Ġ" Day 0 3 Input ") ĊĠĠĠ Ġprintln (" Power ĠCons umption : Ġ${ binary Diagnostics ( lines )} ") ĊĠĠĠ Ġprintln (" Life Ġsupport Ġrating : Ġ${ life Support Rating ( lines )} ") Ċ }