- forward declaration of records - fixes to projections - drop record accessors (use projections instead) - changes to names to disambiguate
37 lines
835 B
Agda
37 lines
835 B
Agda
module Aoc
|
||
|
||
import Prelude
|
||
|
||
-- `by` is the first argument for use in `map`
|
||
nums' : String → String → List Int
|
||
nums' by s = map stringToInt $ filter (_/=_ "") $ split (trim s) by
|
||
|
||
nums : String → List Int
|
||
nums s = map stringToInt $ filter (_/=_ "") $ split (trim s) " "
|
||
|
||
indexOf? : ∀ a. {{Eq a}} → a → List a → Maybe Nat
|
||
indexOf? {a} z xs = go Z z xs
|
||
where
|
||
go : Nat → a → List a → Maybe Nat
|
||
go ix z Nil = Nothing
|
||
go ix z (x :: xs) =
|
||
if z == x then Just ix else go (S ix) z xs
|
||
|
||
-- TODO move to Aoc library
|
||
Point : U
|
||
Point = Int × Int
|
||
|
||
instance Add Point where
|
||
(a,b) + (c,d) = (a + c, b + d)
|
||
|
||
instance Sub Point where
|
||
(a,b) - (c,d) = (a - c, b - d)
|
||
|
||
|
||
|
||
-- instance Ord Point where
|
||
-- (a,b) < (c,d) = a < c || a == c && b < d
|
||
|
||
-- instance Eq Point where
|
||
-- (a,b) == (c,d) = a == c && b == d
|