package Ġcom . mar cd en ning . ad vent of code . day 0 5 Ċ Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Match Result Ċ import Ġjava . util . stream . Stream Ċ Ċ private Ġconst Ġval ĠNUMBER _ OF _ ROWS Ġ= Ġ 1 2 8 Ċ private Ġconst Ġval ĠNUMBER _ OF _ COLUMNS Ġ= Ġ 8 Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠScanner ( File ( args [ 0 ])). use Ġ{ Ġscanner Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġmax Seat Id Ġ= Ġscanner . findAll ("[ BF ]{ 7 }[ LR ]{ 3 }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: get Seat Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. max Ġ{ Ġo 1 , Ġo 2 Ġ-> Ġo 1 Ġ- Ġo 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orElse Throw () ĊĊĠĠĠĠĠĠĠ Ġprintln (" Max Ġseat ĠID : Ġ$ max Seat Id ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġextract Row ( seat : ĠString ) Ġ= Ġseat . substring ( 0 .. 6 ) Ċ Ċ fun Ġextract Column ( seat : ĠString ) Ġ= Ġseat . substring ( 7 .. 9 ) Ċ Ċ fun Ġdetermine Row ( specifier : ĠString , Ġindex : ĠInt , Ġlower : ĠInt , Ġupper : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( index Ġ== Ġspec ifier . length Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( specifier [ index ] Ġ== Ġ' F ') Ġlower Ġelse Ġupper ĊĠĠĠ Ġ} Ġelse Ġif Ġ( specifier [ index ] Ġ== Ġ' F ') Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdetermine Row ( specifier , Ġindex Ġ+ Ġ 1 , Ġlower , Ġlower Ġ+ Ġ(( upper Ġ- Ġlower ) Ġ/ Ġ 2 )) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdetermine Row ( specifier , Ġindex Ġ+ Ġ 1 , Ġupper Ġ- Ġ(( upper Ġ- Ġlower ) Ġ/ Ġ 2 ), Ġupper ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdetermine Column ( specifier : ĠString , Ġindex : ĠInt , Ġlower : ĠInt , Ġupper : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( index Ġ== Ġspec ifier . length Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( specifier [ index ] Ġ== Ġ' L ') Ġlower Ġelse Ġupper ĊĠĠĠ Ġ} Ġelse Ġif Ġ( specifier [ index ] Ġ== Ġ' L ') Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdetermine Column ( specifier , Ġindex Ġ+ Ġ 1 , Ġlower , Ġlower Ġ+ Ġ(( upper Ġ- Ġlower ) Ġ/ Ġ 2 )) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdetermine Column ( specifier , Ġindex Ġ+ Ġ 1 , Ġupper Ġ- Ġ(( upper Ġ- Ġlower ) Ġ/ Ġ 2 ), Ġupper ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget Seat Id ( match Result : ĠMatch Result ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġrow Id Ġ= Ġextract Row ( match Result . group ()) ĊĠĠĠ Ġval Ġcolumn Id Ġ= Ġextract Column ( match Result . group ()) ĊĊĠĠĠ Ġreturn Ġ 8 Ġ* Ġdetermine Row ( row Id , Ġ 0 , Ġ 0 , ĠNUMBER _ OF _ ROWS Ġ- Ġ 1 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetermine Column ( column Id , Ġ 0 , Ġ 0 , ĠNUMBER _ OF _ COLUMNS Ġ- Ġ 1 ) Ċ } Ċ