package Ġcom . cur tis lb . ad vent of code . year 2 0 1 9 . day 0 8 . image Ċ Ċ import Ġcom . cur tis lb . ad vent of code . common . io . forEach Char Ċ import Ġcom . cur tis lb . ad vent of code . common . math . to Digit Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠPro cesses Ġdigits Ġfrom Ġa Ġ[ file ] Ġrepresenting Ġpixels Ġin Ġa Ġmulti - layer Ġimage Ġwith Ġa Ġgiven Ċ Ġ* Ġ[ image Area ] Ġ( width Ġ* Ġheight ). Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Digit ĠAn Ġoptional Ġcallback Ġto Ġbe Ġrun Ġeach Ġtime Ġa Ġdigit Ġis Ġencountered . Ċ Ġ* Ġ@ param Ġon Layer Finished ĠAn Ġoptional Ġcallback Ġto Ġrun Ġeach Ġtime Ġall Ġdigits Ġin Ġa Ġlayer Ġare Ġread . Ċ Ġ*/ Ċ fun Ġprocess Layers ( ĊĠĠĠ Ġfile : ĠFile , ĊĠĠĠ Ġimage Area : ĠInt , ĊĠĠĠ Ġon Digit : Ġ( index In Layer : ĠInt , Ġdigit : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ}, ĊĠĠĠ Ġon Layer Finished : Ġ() Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġindex In Layer Ġ= Ġ 0 ĊĠĠĠ Ġfile . forEach Char Ġ{ Ġchar Ġ-> ĊĠĠĠĠĠĠĠ Ġ// ĠProcess Ġthe Ġnext Ġdigit Ġfor Ġthis Ġlayer . ĊĠĠĠĠĠĠĠ Ġif Ġ( char Ġin Ġ' 0 ' .. ' 9 ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Digit ( index In Layer , Ġchar . to Digit ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex In Layer ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġwe 're Ġdone Ġwith Ġthe Ġcurrent Ġlayer . ĊĠĠĠĠĠĠĠ Ġif Ġ( index In Layer Ġ== Ġimage Area ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Layer Finished () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex In Layer Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ