class ĠDay 1 1 Part 1 ( var Ġpassword : ĠString ) Ġ{ ĊĊĠĠĠ Ġ// ĠPassword s Ġmay Ġnot Ġcontain Ġthe Ġletters Ġi , Ġo , Ġor Ġl ĊĠĠĠ Ġprivate Ġval ĠREG EX _ I OL Ġ= Ġ""" [ i ol ] """. to Regex () ĊĠĠĠ Ġ// ĠPassword s Ġmust Ġcontain Ġat Ġleast Ġtwo Ġdifferent , Ġnon - over lapping Ġpairs Ġof Ġletters ĊĠĠĠ Ġprivate Ġval ĠREG EX _ PAIR S Ġ= Ġ""" (. )\ 1 .* (. )\ 2 """. to Regex () ĊĊĠĠĠ Ġ// ĠIncrement Ġthe ĠString ĊĠĠĠ Ġ// Ġincrement (' aa ') Ġ-> Ġ' ab ' ĊĠĠĠ Ġprivate Ġfun Ġincrement ( password : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassword Array Ġ= Ġpassword . toCharArray () ĊĠĠĠĠĠĠĠ Ġvar Ġfirst Index Ġ= Ġpassword Array . last Index ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( password Array [ first Index ] Ġ== Ġ' z ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Index -- ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( first Index .. password Array . last Index ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Array [ it ] Ġ= Ġpassword Array [ it ] Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! password Array [ it ]. is Letter ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Array [ it ] Ġ= Ġ' a ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( password Array ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCheck Ġif Ġthe Ġpassword Ġme ets Ġthe Ġrequirements ĊĠĠĠ Ġprivate Ġfun ĠisValid ( password : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarr : ĠList < String > Ġ= Ġpassword . split ("") ĊĠĠĠĠĠĠĠ Ġ( 1 .. arr . size Ġ- Ġ 4 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġrequirements ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arr [ it Ġ+ Ġ 1 ]. first (). toInt ()== arr [ it ]. first (). toInt () Ġ+ Ġ 1 Ġ&& Ġarr [ it Ġ+ Ġ 2 ]. first (). toInt ()== arr [ it ]. first (). toInt () Ġ+ Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ! REGEX _ I OL . matches ( password ) Ġ&& ĠREG EX _ PAIR S . contains Match In ( password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsolve (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġpassword Ġ= Ġincrement ( password ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! isValid ( password )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġincrement ( password ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpassword ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġpassword Ġ= Ġ" he px c rr q " ĊĠĠĠ Ġprint ( Day 1 1 Part 1 ( password ). solve ()) Ċ }