val Ġdigits Ġ= Ġmap Of ( ĊĠĠĠĠ 0 Ġto Ġ" ab ce fg ", Ġ Ġ// Ġ 6 ĊĠĠĠĠ 1 Ġto Ġ" cf ", ĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠ 2 Ġto Ġ" ac deg ", ĠĠ Ġ// Ġ 5 ĊĠĠĠĠ 3 Ġto Ġ" ac df g ", ĠĠ Ġ// Ġ 5 ĊĠĠĠĠ 4 Ġto Ġ" bc df ", ĠĠĠ Ġ// Ġ 4 ĊĠĠĠĠ 5 Ġto Ġ" ab df g ", ĠĠ Ġ// Ġ 5 ĊĠĠĠĠ 6 Ġto Ġ" ab def g ", Ġ Ġ// Ġ 6 ĊĠĠĠĠ 7 Ġto Ġ" acf ", ĠĠĠĠ Ġ// Ġ 3 ĊĠĠĠĠ 8 Ġto Ġ" abcdef g ", Ġ// Ġ 7 ĊĠĠĠĠ 9 Ġto Ġ" abc df g " ĠĠ Ġ// Ġ 6 Ċ ) Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġvalues Ġ= Ġgenerate Sequence (:: readLine ) ĊĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġline Ġ-> Ġline . trim (). take Unless Ġ{ Ġtrimmed Ġ-> Ġtrimmed . isBlank () Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠ Ġvar Ġuniq Count Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġtotal Sum Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( line Ġin Ġvalues ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplit Ġ= Ġline . split (" Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġpossible Signals Ġ= Ġsplit . take ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Shown Ġ= Ġsplit . take Last ( 4 ) ĊĊĠĠĠĠĠĠĠ Ġuniq Count Ġ+= Ġvalue Shown . count Ġ{ Ġit . length Ġ== Ġ 2 Ġ|| Ġit . length Ġ== Ġ 7 Ġ|| Ġit . length Ġ== Ġ 3 Ġ|| Ġit . length Ġ== Ġ 4 Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmapping Ġ= Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" a " Ġto Ġmutable ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ", Ġ" g "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" b " Ġto Ġmutable ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ", Ġ" g "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" c " Ġto Ġmutable ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ", Ġ" g "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d " Ġto Ġmutable ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ", Ġ" g "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" e " Ġto Ġmutable ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ", Ġ" g "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" f " Ġto Ġmutable ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ", Ġ" g "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" g " Ġto Ġmutable ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ", Ġ" g ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdigit Mapping Ġ= Ġmutable Map Of < String , ĠInt >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġmust Be Digit ( sig : ĠString , Ġdigit : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġsig ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapping [ c . toString ()] !!. remove If Ġ{ Ġit Ġ! in Ġdigits [ digit ] !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigit Mapping [ sig ] Ġ= Ġdigit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( sig Ġin Ġpossible Signals ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sig . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġmust Be Digit ( sig , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġmust Be Digit ( sig , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġmust Be Digit ( sig , Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġmust Be Digit ( sig , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġseven Ġ= Ġpossible Signals . first Ġ{ Ġit . length Ġ== Ġ 3 Ġ}. toList (). map Ġ{ Ġit . toString () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfour Ġ= Ġpossible Signals . first Ġ{ Ġit . length Ġ== Ġ 4 Ġ}. toList (). map Ġ{ Ġit . toString () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġone Ġ= Ġpossible Signals . first Ġ{ Ġit . length Ġ== Ġ 2 Ġ}. toList (). map Ġ{ Ġit . toString () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġseven Ġhas Ġ' aaaa ' Ġin Ġaddition Ġto Ġone Ċ // ĠĠĠĠĠĠĠ Ġmapping [" a "] Ġ= Ġ( se ven Ġ- Ġone ). to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġ// Ġfour Ġhas Ġ' bb ' Ġand Ġ' dddd ' Ġin Ġaddition Ġto Ġone Ċ // ĠĠĠĠĠĠĠ Ġval Ġb Or D Ġ= Ġfour Ġ- Ġone Ċ // ĠĠĠĠĠĠĠ Ġmapping [" b "] !!. remove If Ġ{ Ġit Ġ! in Ġb Or D Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmust Be Segment ( input : ĠString , Ġreal : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmapping [ input ] !!. removeAll Ġ{ Ġit Ġ!= Ġreal Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmapping . keys . forEach Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġinput ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapping [ key ] !!. removeAll Ġ{ Ġit Ġ== Ġreal Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcount Ġinstances Ġin Ġdigits ĊĠĠĠĠĠĠĠ Ġfor Ġ( segment Ġin Ġ" abcdef g ". toList (). map Ġ{ Ġit . toString () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġpossible Signals . count Ġ{ Ġsegment Ġin Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġmust Be Segment ( segment , Ġ" b ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> Ġmust Be Segment ( segment , Ġ" c ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġ" d " Ġt ai Ġ" g " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġmust Be Segment ( segment , Ġ" e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġmust Be Segment ( segment , Ġ" f ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( k , Ġv ) Ġin Ġmapping . toMap ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( k 2 , Ġv 2 ) Ġin Ġmapping . toMap ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k 2 Ġ!= Ġk ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapping [ k 2 ] !!. removeAll Ġ{ Ġit Ġ== Ġv . first () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmapped Digits Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġvalue Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmapped Ġ= Ġv . toList (). map NotNull Ġ{ Ġmapping [ it . toString ()] ?. first () Ġ}. sorted (). join ToString ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdigit Ġ= Ġdigits . filter Ġ{ Ġ( k , Ġv ) Ġ-> Ġv Ġ== Ġmapped Ġ}. keys . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( digit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtotal Sum Ġ+= Ġmapped Digits . toInt () ĊĊĠĠĠĠĠĠĠ Ġprintln ("$ line Ġ--> Ġ$ mapped Digits ") ĊĠĠĠĠĠĠĠ Ġfor Ġ(( k , Ġv ) Ġin Ġmapping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ k Ġ${ v . join ToString ("") }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" uniq Count Ġ= Ġ$ uniq Count , Ġtotal Sum =$ total Sum ") Ċ } Ċ Ċ // Ġ 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 Ċ // ĊĊ Ċ // println (" a Ġ 8 : Ġ${ digits . values . count Ġ{ Ġit . contains (" a ") Ġ}} ") Ċ // println (" b Ġ 6 : Ġ${ digits . values . count Ġ{ Ġit . contains (" b ") Ġ}} ") Ċ // println (" c Ġ 8 : Ġ${ digits . values . count Ġ{ Ġit . contains (" c ") Ġ}} ") Ċ // println (" d Ġ 7 : Ġ${ digits . values . count Ġ{ Ġit . contains (" d ") Ġ}} ") Ċ // println (" e Ġ 4 : Ġ${ digits . values . count Ġ{ Ġit . contains (" e ") Ġ}} ") Ċ // println (" f Ġ 9 : Ġ${ digits . values . count Ġ{ Ġit . contains (" f ") Ġ}} ") Ċ // println (" g Ġ 7 : Ġ${ digits . values . count Ġ{ Ġit . contains (" g ") Ġ}} ") Ċ // Ċ