package Ġcom . github . d sv en sson . ad vent of code . tw enty 2 0 ĊĊ Ċ object ĠDay 5 Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġcalculate Id ( passport : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġtail rec Ġfun Ġgo ( dir : ĠChar Iterator , Ġr : ĠInt Range ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dir . hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġr . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir , Ġwhen Ġ( dir . next Char ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' F ', Ġ' L ' Ġ-> Ġr . first Ġuntil Ġr . first Ġ+ Ġ( r . last Ġ- Ġr . first Ġ+ Ġ 1 ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' B ', Ġ' R ' Ġ-> Ġ( r . first Ġ+ Ġ( r . last Ġ- Ġr . first Ġ+ Ġ 1 ) Ġ/ Ġ 2 ) .. r . last ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġgo ( passport . sub Sequence ( 0 , Ġ 7 ). iterator (), Ġ 0 .. 1 2 7 ) Ġ* Ġ 8 Ġ+ Ġgo ( passport . sub Sequence ( 7 , Ġ 1 0 ). iterator (), Ġ 0 .. 7 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpart One ( input : ĠString ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġinput . line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: calculate Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. max OrNull () Ġ?: Ġ 0 ĊĊĠĠĠ Ġfun Ġpart Two ( input : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreserved Ids Ġ= Ġinput . line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: calculate Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted () ĊĠĠĠĠĠĠĠ Ġreturn Ġreserved Ids . drop ( 1 ). zip ( reserved Ids ). filter Ġ{ Ġ( a , Ġb ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ- Ġb Ġ> Ġ 1 ĊĠĠĠĠĠĠĠ Ġ}. first (). first Ġ- Ġ 1 ĊĠĠĠ Ġ} Ċ }