package Ġio . github . ps he g ger . a oc . y 2 0 2 0 Ċ Ċ import Ġio . github . ps he g ger . a oc . common . Base Solver Ċ Ċ class ĠY 2 0 2 0 D 2 Ġ: ĠBase Solver () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġyear Ġ= Ġ 2 0 2 0 ĊĠĠĠ Ġoverride Ġval Ġday Ġ= Ġ 2 ĊĊĠĠĠ Ġoverride Ġfun Ġpart 1 (): ĠInt Ġ= Ġparse Input (). count Ġ{ Ġit . isValid 1 Ġ} ĊĠĠĠ Ġoverride Ġfun Ġpart 2 (): ĠInt Ġ= Ġparse Input (). count Ġ{ Ġit . isValid 2 Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Input () Ġ= Ġread Input Ġ{ ĊĠĠĠĠĠĠĠ Ġread Lines (). map Ġ{ ĠPassword Policy . parse String ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠPassword Policy ( val Ġn 0 : ĠInt , Ġval Ġn 1 : ĠInt , Ġval Ġchr : ĠChar , Ġval Ġpasswd : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠisValid 1 : ĠBoolean Ġget () Ġ= Ġpasswd . count Ġ{ Ġit Ġ== Ġchr Ġ} Ġin Ġn 0 .. n 1 ĊĠĠĠĠĠĠĠ Ġval ĠisValid 2 : ĠBoolean Ġget () Ġ= Ġ( passwd [ n 0 Ġ- Ġ 1 ] Ġ== Ġchr ) Ġxor Ġ( passwd [ n 1 Ġ- Ġ 1 ] Ġ== Ġchr ) ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġrule Regex Ġ= Ġ"( \\ d +) -( \\ d +) Ġ( \\ w ): Ġ(. +) ". to Regex () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġparse String ( str : ĠString ): ĠPassword Policy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroups Ġ= Ġrule Regex . match Ent ire ( str )?. group Values Ġ?: Ġerror (" Line Ġdoesn 't Ġmatch Ġformat ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPassword Policy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroups [ 1 ]. toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroups [ 2 ]. toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroups [ 3 ][ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroups [ 4 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ