Compare commits
5 commits
49525e43a1
...
dd0565fd12
Author | SHA1 | Date | |
---|---|---|---|
dd0565fd12 | |||
c47f522c50 | |||
7e05cc1e8b | |||
f7afecb550 | |||
8162210b21 |
2 changed files with 7 additions and 17 deletions
|
@ -28,6 +28,7 @@ modules = Runner
|
||||||
, Util
|
, Util
|
||||||
, Util.Eff
|
, Util.Eff
|
||||||
, Util.Digits
|
, Util.Digits
|
||||||
|
, Grid
|
||||||
|
|
||||||
-- main file (i.e. file to load at REPL)
|
-- main file (i.e. file to load at REPL)
|
||||||
main = Main
|
main = Main
|
||||||
|
|
|
@ -183,8 +183,8 @@ containsPairs xs = length (nub $ pairs (reverse xs) []) >= 2
|
||||||
Combine our password criteria into one function
|
Combine our password criteria into one function
|
||||||
|
|
||||||
```idris
|
```idris
|
||||||
passwordCriteria : Vect n PasswordChar -> Bool
|
part1Critera : Vect n PasswordChar -> Bool
|
||||||
passwordCriteria xs = incrimentingChars xs && noInvalidChars xs && containsPairs xs
|
part1Critera xs = incrimentingChars xs && noInvalidChars xs && containsPairs xs
|
||||||
```
|
```
|
||||||
|
|
||||||
### Find the next password
|
### Find the next password
|
||||||
|
@ -207,30 +207,19 @@ findNextPassword f password =
|
||||||
### Part 1
|
### Part 1
|
||||||
|
|
||||||
```idris
|
```idris
|
||||||
part1 : Eff (PartEff String) (String, Password)
|
part1 : Eff (PartEff String) (String, ())
|
||||||
part1 = do
|
part1 = do
|
||||||
input <- map trim $ askAt "input"
|
input <- map trim $ askAt "input"
|
||||||
password <- parsePassword input
|
password <- parsePassword input
|
||||||
info "Starting password: \{show password} -> \{passwordToString password}"
|
info "Starting password: \{show password} -> \{passwordToString password}"
|
||||||
let next_password = findNextPassword passwordCriteria password
|
let next_password = findNextPassword part1Critera password
|
||||||
pure (passwordToString next_password, next_password)
|
pure (passwordToString next_password, ())
|
||||||
```
|
|
||||||
|
|
||||||
### Part 2
|
|
||||||
|
|
||||||
```idris
|
|
||||||
part2 : Password -> Eff (PartEff String) String
|
|
||||||
part2 password = do
|
|
||||||
info
|
|
||||||
"Second starting password: \{show password} -> \{passwordToString password}"
|
|
||||||
let next_password = findNextPassword passwordCriteria password
|
|
||||||
pure $ passwordToString next_password
|
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- idris
|
<!-- idris
|
||||||
public export
|
public export
|
||||||
day11 : Day
|
day11 : Day
|
||||||
day11 = Both 11 part1 part2
|
day11 = First 11 part1
|
||||||
-->
|
-->
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
Loading…
Add table
Reference in a new issue