package Ġde . mb development . ad vent of code . year 2 0 2 1 . sol vers . day 4 Ċ Ċ class ĠB ingo Board ( private Ġval Ġentries : ĠList < List < Board Entry >>) Ġ{ ĊĊĠĠĠ Ġfun Ġmark ( draw n Number : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġentries . forEach Ġ{ Ġrow Ġ-> Ġrow . forEach Ġ{ Ġif Ġ( it . number Ġ== Ġdrawn Number ) Ġit . draw n Ġ= Ġtrue Ġ} Ġ} ĊĊĠĠĠ Ġfun Ġwin ning Sum (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhas Win ning Row Ġ= Ġentries . map Ġ{ Ġrow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow . map Ġ{ Ġit . draw n Ġ}. reduce Ġ{ Ġa , Ġb Ġ-> Ġa Ġ&& Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ}. any Ġ{ Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġhas Win ning Column Ġ= Ġ( 0 .. 4 ). map Ġ{ ĠcolumnIndex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolumn W ins Ġ= Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ ĠrowIndex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn W ins Ġ= Ġentries [ rowIndex ][ column Index ]. draw n Ġ&& Ġcolumn W ins ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn W ins ĊĠĠĠĠĠĠĠ Ġ}. any Ġ{ Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( has Win ning Row Ġ|| Ġhas Win ning Column ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries . map Ġ{ Ġrow Ġ-> Ġrow . map Ġ{ Ġif Ġ(! it . draw n ) Ġit . number Ġelse Ġ 0 Ġ}. reduce ( Int :: plus ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce ( Int :: plus ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠBoard Entry ( val Ġnumber : ĠInt , Ġvar Ġdrawn : ĠBoolean Ġ= Ġfalse )