package Ġsolutions . day 0 4 Ċ Ċ import Ġsolutions . Solver Ċ import Ġutils . split At Whitespace Ċ Ċ class ĠDay 4 : ĠSolver Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsolve ( input : ĠList < String >, Ġpart Two : ĠBoolean ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġvalidator Ġ= Ġif (! part Two ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis :: isValid Pass phrase ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis :: has No An agrams ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( String :: split At Whitespace ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( validator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid Pass phrase ( words : ĠList < String >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsorted Words Ġ= Ġwords . sorted () ĊĠĠĠĠĠĠĠ Ġreturn Ġany Equal Con secutive Word ( sorted Words ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas No An agrams ( words : ĠList < String >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsorted Words Ġ= Ġwords ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toCharArray (). sorted (). toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted () ĊĠĠĠĠĠĠĠ Ġreturn Ġany Equal Con secutive Word ( sorted Words ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġany Equal Con secutive Word ( sorted Words : ĠList < String >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( 0 Ġuntil Ġsorted Words . last Index ). none Ġ{ Ġsorted Words [ it ] Ġ== Ġsorted Words [ it Ġ+ Ġ 1 ] Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }