Ċ /* Ċ * ĠĠ 0 : ĠĠĠĠĠĠ 1 : ĠĠĠĠĠĠ 2 : ĠĠĠĠĠĠ 3 : ĠĠĠĠĠĠ 4 : Ċ Ġa aaa ĠĠĠ Ġ.... ĠĠĠ Ġa aaa ĠĠĠ Ġa aaa ĠĠĠ Ġ.... Ċ b ĠĠĠ Ġc Ġ Ġ. ĠĠĠ Ġc Ġ Ġ. ĠĠĠ Ġc Ġ Ġ. ĠĠĠ Ġc Ġ Ġb ĠĠĠ Ġc Ċ b ĠĠĠ Ġc Ġ Ġ. ĠĠĠ Ġc Ġ Ġ. ĠĠĠ Ġc Ġ Ġ. ĠĠĠ Ġc Ġ Ġb ĠĠĠ Ġc Ċ Ġ.... ĠĠĠ Ġ.... ĠĠĠ Ġd ddd ĠĠĠ Ġd ddd ĠĠĠ Ġd ddd Ċ e ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ġ Ġe ĠĠĠ Ġ. Ġ Ġ. ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ċ e ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ġ Ġe ĠĠĠ Ġ. Ġ Ġ. ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ċ Ġg gg g ĠĠĠ Ġ.... ĠĠĠ Ġg gg g ĠĠĠ Ġg gg g ĠĠĠ Ġ.... ĊĊĠĠ 5 : ĠĠĠĠĠĠ 6 : ĠĠĠĠĠĠ 7 : ĠĠĠĠĠĠ 8 : ĠĠĠĠĠĠ 9 : Ċ Ġa aaa ĠĠĠ Ġa aaa ĠĠĠ Ġa aaa ĠĠĠ Ġa aaa ĠĠĠ Ġa aaa Ċ b ĠĠĠ Ġ. Ġ Ġb ĠĠĠ Ġ. Ġ Ġ. ĠĠĠ Ġc Ġ Ġb ĠĠĠ Ġc Ġ Ġb ĠĠĠ Ġc Ċ b ĠĠĠ Ġ. Ġ Ġb ĠĠĠ Ġ. Ġ Ġ. ĠĠĠ Ġc Ġ Ġb ĠĠĠ Ġc Ġ Ġb ĠĠĠ Ġc Ċ Ġd ddd ĠĠĠ Ġd ddd ĠĠĠ Ġ.... ĠĠĠ Ġd ddd ĠĠĠ Ġd ddd Ċ . ĠĠĠ Ġf Ġ Ġe ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ġ Ġe ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ċ . ĠĠĠ Ġf Ġ Ġe ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ġ Ġe ĠĠĠ Ġf Ġ Ġ. ĠĠĠ Ġf Ċ Ġg gg g ĠĠĠ Ġg gg g ĠĠĠ Ġ.... ĠĠĠ Ġg gg g ĠĠĠ Ġg gg g Ċ Ċ * Ċ * Ġ*/ ĊĊ Ċ fun Ġfirst Part 0 8 ( list Ġ: ĠList < Se ven Segment Data >) Ġ{ ĊĠĠĠ Ġval Ġunique Digits Ġ= Ġlist . flatMap Ġ{ Ġit . output Ġ}. count Ġ{ Ġit . length Ġin Ġset Of ( 2 , Ġ 3 , Ġ 4 , Ġ 7 ) Ġ} ĊĠĠĠ Ġprintln ( unique Digits ) Ċ } Ċ Ċ fun Ġsecond Part 0 8 ( list Ġ: ĠList < Se ven Segment Data >) Ġ{ ĊĠĠĠ Ġval Ġunique Digits Sum Ġ= Ġlist . sum Of Ġ{ Ġdecode Segment Data ( it ) Ġ} ĊĠĠĠ Ġprintln ( unique Digits Sum ) Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĊĠĠĠ Ġval Ġinput Ġ: ĠList < String > Ġ= Ġread Input (" Day 0 8 ") ĊĠĠĠ Ġval Ġlist Ġ= Ġinput . filter Ġ{ Ġit . isNotBlank () Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplits Ġ= Ġit . split (" Ġ| Ġ") ĊĠĠĠĠĠĠĠ ĠSe ven Segment Data ( splits [ 0 ]. split (" Ġ"), Ġsplits [ 1 ]. split (" Ġ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfirst Part 0 8 ( list ) ĊĠĠĠ Ġsecond Part 0 8 ( list ) Ċ } Ċ Ċ data Ġclass ĠSe ven Segment Data ( val Ġinput Ġ: ĠList < String >, Ġval Ġoutput Ġ: ĠList < String >) Ċ Ċ // ĠTODO Ġtranslate Ġin ĠEnglish , Ġsorry Ġbut Ġnow ĠI Ġneed Ġbreak fast Ċ fun Ġdecode Segment Data ( se ven Segment Data : ĠSe ven Segment Data ) Ġ: ĠInt Ġ{ ĊĠĠĠ Ġ/* ĊĠĠĠĠ 0 Ġ: Ġ 6 Ġ- Ġa Ġb Ġc ĠĠ Ġe Ġf Ġg ĊĠĠĠĠ 1 Ġ: Ġ 2 Ġ- ĠĠĠĠ Ġc ĠĠĠĠ Ġf ĊĠĠĠĠ 2 Ġ: Ġ 5 Ġ- Ġa ĠĠ Ġc Ġd Ġe ĠĠ Ġg ĊĠĠĠĠ 3 Ġ: Ġ 5 Ġ- Ġa ĠĠ Ġc Ġd ĠĠ Ġf Ġg ĊĠĠĠĠ 4 Ġ: Ġ 4 Ġ- ĠĠ Ġb Ġc Ġd ĠĠ Ġf ĊĠĠĠĠ 5 Ġ: Ġ 5 Ġ- Ġa Ġb ĠĠ Ġd ĠĠ Ġf Ġg ĊĠĠĠĠ 6 Ġ: Ġ 6 Ġ- Ġa Ġb ĠĠ Ġd Ġe Ġf Ġg ĊĠĠĠĠ 7 Ġ: Ġ 3 Ġ- Ġa ĠĠ Ġc ĠĠĠĠ Ġf ĊĠĠĠĠ 8 Ġ: Ġ 7 Ġ- Ġa Ġb Ġc Ġd Ġe Ġf Ġg ĊĠĠĠĠ 9 Ġ: Ġ 6 Ġ- Ġa Ġb Ġc Ġd ĠĠ Ġf Ġg ĊĊĠĠĠ Ġ# letters ĠĠĠ Ġ: Ġpossible Ġvalues ĊĠĠĠĠ 6 ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ( 0 , Ġ 6 , Ġ 9 ) ĊĠĠĠĠ 2 ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ( 1 ) ĊĠĠĠĠ 5 ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ( 2 , Ġ 3 , Ġ 5 ) ĊĠĠĠĠ 4 ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ( 4 ) ĊĠĠĠĠ 3 ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ( 7 ) ĊĠĠĠĠ 7 ĠĠĠĠĠĠĠĠĠĠ Ġ: Ġ( 8 ) ĊĊĠĠĠĠ 0 Ġ- Ġtro vo Ġ 1 , Ġ 4 , Ġ 7 , Ġ 8 Ġcont ando Ġle Ġletter e ĊĠĠĠĠ 1 Ġ- Ġper Ġtro vare Ġil Ġ 5 : Ġal Ġ 4 Ġs ot trag go Ġl ' 1 , Ġtro vo Ġquel li Ġcon Ġ 5 Ġletter e Ġe Ġl ' un ico Ġche Ġcont iene Ġla Ġs ot tr azione ĠÃ¨ Ġil Ġ 5 ĊĠĠĠ Ġcon os co Ġ 1 , Ġ 4 , Ġ 7 , Ġ 8 , Ġ 5 Ġ- Ġm anc ano Ġ 0 , Ġ 2 , Ġ 3 , Ġ 6 , Ġ 9 ĊĠĠĠĠ 2 Ġ- Ġper Ġtro vare Ġlo Ġ 0 : Ġtro vo Ġquel li Ġcon Ġ 6 Ġletter e , Ġs ot trag go Ġle Ġletter e Ġdel Ġ 5 Ġ( che Ġle Ġcont iene Ġs ia Ġil Ġ 6 Ġche Ġil Ġ 9 ) Ġe Ġtro vo Ġlo Ġ 0 ĊĠĠĠ Ġcon os co Ġ 1 , Ġ 4 , Ġ 7 , Ġ 8 , Ġ 5 , Ġ 0 Ġ- Ġm anc ano Ġ 2 , Ġ 3 , Ġ 6 , Ġ 9 ĊĠĠĠĠ 3 Ġ- Ġtro vo Ġla Ġa : Ġs ot trag go Ġal Ġ 7 Ġl ' 1 Ġe Ġcon os co Ġla Ġletter a Ġa Ġ( che ĠÃ¨ Ġcom une Ġa Ġmol ti ) ĊĠĠĠĠ 4 Ġ- Ġtro vo Ġla Ġletter a Ġe , Ġg Ġe Ġil Ġ 2 Ġe Ġil Ġ 3 : Ġtol ta Ġletter a Ġa Ġ( p unto Ġ 3 ) Ġa Ġnum eri ( 2 , 3 ), Ġtol to Ġ 1 Ġ( not o ), Ġtol go Ġ 4 Ġ( not o ), Ġri man e Ġil Ġ 3 Ġcon Ġ 1 Ġletter a Ġ( g ), Ġe Ġil Ġ 2 Ġcon Ġ 2 Ġletter e Ġ( e , Ġg ) ĊĠĠĠ Ġcon os co Ġ 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 7 , Ġ 8 Ġ- Ġm anc ano Ġ 6 , Ġ 9 Ġ( letter e Ġa , Ġe , Ġg ) ĊĠĠĠĠ 5 Ġ- Ġtro vo Ġ 6 Ġe Ġ 9 : Ġtol go Ġug uali Ġ- Ġtol go Ġ 1 Ġ- Ġri man e Ġ 6 Ġcon Ġ 1 Ġletter a Ġe Ġ 9 Ġcon Ġ 0 Ġletter e ĊĠĠĠ Ġcon os co Ġ 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġval Ġsignals Ġ= Ġmutable Map Of < Int , ĠSet < String >>() ĊĠĠĠ Ġval Ġinput Ġ= Ġseven Segment Data . input ĊĊĠĠĠ Ġ// ĠSTEP Ġ 0 ĊĠĠĠ Ġsignals [ 1 ] Ġ= Ġinput . first Ġ{ Ġit . length Ġ== Ġ 2 Ġ}. split (" "). filter Ġ{ Ġit . isNotEmpty () Ġ}. toSet () ĊĠĠĠ Ġsignals [ 4 ] Ġ= Ġinput . first Ġ{ Ġit . length Ġ== Ġ 4 Ġ}. split (" "). filter Ġ{ Ġit . isNotEmpty () Ġ}. toSet () ĊĠĠĠ Ġsignals [ 7 ] Ġ= Ġinput . first Ġ{ Ġit . length Ġ== Ġ 3 Ġ}. split (" "). filter Ġ{ Ġit . isNotEmpty () Ġ}. toSet () ĊĠĠĠ Ġsignals [ 8 ] Ġ= Ġinput . first Ġ{ Ġit . length Ġ== Ġ 7 Ġ}. split (" "). filter Ġ{ Ġit . isNotEmpty () Ġ}. toSet () ĊĊĠĠĠ Ġ// ĠSTEP Ġ 1 ĊĠĠĠ Ġval Ġfive Letters Ġ= Ġinput . filter Ġ{ Ġit . length Ġ== Ġ 5 Ġ}. map Ġ{ Ġit . split (" "). filter Ġ{ Ġit . isNotEmpty () Ġ}. toSet () Ġ} ĊĠĠĠ Ġsignals [ 5 ] Ġ= Ġfive Letters . first Ġ{ Ġit . contains All ( Ġ( signals [ 4 ] !! Ġ- Ġsignals [ 1 ] !! ) Ġ Ġ) Ġ} ĊĊĠĠĠ Ġ// ĠSTEP Ġ 2 ĊĠĠĠ Ġval Ġsix Letters Ġ= Ġinput . filter Ġ{ Ġit . length Ġ== Ġ 6 Ġ}. map Ġ{ Ġit . split (" "). filter Ġ{ Ġit . isNotEmpty () Ġ}. toSet () Ġ} ĊĠĠĠ Ġsignals [ 0 ] Ġ= Ġsix Letters . first Ġ{ Ġ! it . contains All ( signals [ 5 ] !! ) Ġ} ĊĊĠĠĠ Ġ// ĠSTEP Ġ 3 ĊĠĠĠ Ġval Ġwire A Ġ= Ġ( signals [ 7 ] !! Ġ- Ġsignals [ 1 ] !! ) ĊĊĠĠĠ Ġ// ĠSTEP Ġ 4 ĊĠĠĠ Ġ// Ġ 4 Ġ- Ġtro vo Ġla Ġletter a Ġe , Ġg Ġe Ġil Ġ 2 Ġe Ġil Ġ 3 : Ġtol ta Ġletter a Ġa Ġ( p unto Ġ 3 ) Ġa Ġnum eri ( 2 , 3 ), tol go Ġ 4 Ġ( not o ), Ġri man e Ġil Ġ 3 Ġcon Ġ 1 Ġletter a Ġ( g ), Ġe Ġil Ġ 2 Ġcon Ġ 2 Ġletter e Ġ( e , Ġg ) ĊĠĠĠ Ġ// ĠĠĠ Ġcon os co Ġ 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 7 , Ġ 8 Ġ- Ġm anc ano Ġ 6 , Ġ 9 Ġ( letter e Ġa , Ġe , Ġg ) ĊĠĠĠ Ġval Ġsignals Two And Three Ġ= Ġfive Letters . filter Not Ġ{ Ġit . contains All ( signals [ 5 ] !! ) Ġ} ĊĠĠĠ Ġsignals [ 3 ] Ġ= Ġsignals Two And Three . first Ġ{ Ġit . to Mutable Set (). apply Ġ{ Ġremove All ( signals [ 4 ] !! Ġ+ Ġwire A ) Ġ}. toSet (). size Ġ== Ġ 1 Ġ} ĊĠĠĠ Ġsignals [ 2 ] Ġ= Ġsignals Two And Three . first Ġ{ Ġit . to Mutable Set (). apply Ġ{ Ġremove All ( signals [ 4 ] !! Ġ+ Ġwire A ) Ġ}. toSet (). size Ġ== Ġ 2 Ġ} ĊĊĠĠĠ Ġ// ĠSTEP Ġ 5 ĊĠĠĠ Ġ// Ġ 5 Ġ- Ġtro vo Ġ 6 Ġe Ġ 9 : Ġtol go Ġug uali Ġ- Ġtol go Ġ 1 Ġ- Ġri man e Ġ 6 Ġcon Ġ 1 Ġletter a Ġe Ġ 9 Ġcon Ġ 0 Ġletter e ĊĠĠĠ Ġval Ġsignals Six And N ine Ġ= Ġsix Letters . filter Not Ġ{ Ġit . contains All ( signals [ 0 ] !! ) Ġ} ĊĠĠĠ Ġval Ġcommon Elements Ġ= Ġsignals Six And N ine [ 0 ]. intersect ( signals Six And N ine [ 1 ]) ĊĠĠĠ Ġsignals [ 9 ] Ġ= Ġsignals Six And N ine . first Ġ{ Ġit . to Mutable Set (). apply Ġ{ Ġremove All ( signals [ 1 ] !! Ġ+ Ġcommon Elements ) Ġ}. size Ġ== Ġ 0 Ġ} ĊĠĠĠ Ġsignals [ 6 ] Ġ= Ġsignals Six And N ine . first Ġ{ Ġit . to Mutable Set (). apply Ġ{ Ġremove All ( signals [ 1 ] !! Ġ+ Ġcommon Elements ) Ġ}. size Ġ== Ġ 1 Ġ} ĊĊĠĠĠ Ġ// Ġprintln ( signals . to Sorted Map ()) ĊĊĠĠĠ Ġval Ġinverted Signals Ġ= Ġsignals . map Ġ{ Ġit . value Ġto Ġit . key Ġ}. toMap () ĊĊĠĠĠ Ġ// Ġprintln ( inverted Signals ) ĊĊĠĠĠ Ġval Ġdigits Ġ= Ġseven Segment Data . output . map Ġ{ Ġit . split (" "). filter Ġ{ Ġit . isNotEmpty () Ġ}. toSet () Ġ}. map Ġ{ Ġinverted Signals [ it ] Ġ} ĊĊĠĠĠ Ġ// Ġprintln ( digits ) ĊĠĠĠ Ġreturn Ġdigits . join ToString ( separator Ġ= Ġ""). toInt () Ċ } Ċ