Skip to content

Commit

Permalink
sepBy1 and prelim day 14
Browse files Browse the repository at this point in the history
  • Loading branch information
Ptkyr committed Aug 27, 2023
1 parent 450a52b commit e0ccf3d
Show file tree
Hide file tree
Showing 8 changed files with 204 additions and 6 deletions.
2 changes: 1 addition & 1 deletion haskell/01/01.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ partTwo :: [Int] -> Int
partTwo = sum . take 3 . sortBy (flip compare)

aocParse :: Parser [Int]
aocParse = map sum <$> oneElf `sepBy` newline <* eof
aocParse = map sum <$> oneElf `sepBy1` newline <* eof
where
oneElf :: Parser [Int]
oneElf = (read <$> some digitChar) `endBy` newline
2 changes: 1 addition & 1 deletion haskell/05/05.hs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ aocParse = do
(listArr1 crates, ) <$> some parseMove <* eof
where
parseCrates :: Parser [[Crates]]
parseCrates = (oneCrate `sepBy` char ' ') `endBy` newline
parseCrates = (oneCrate `sepBy1` char ' ') `endBy` newline
oneCrate :: Parser Crates
oneCrate = choice
[ char '[' *> some upperChar <* char ']'
Expand Down
2 changes: 1 addition & 1 deletion haskell/11/11.hs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ doInspection trunc am i = case am!i of

-- All parsing from here
parseItems :: Parser [Int]
parseItems = lexeme "Starting items:" *> nat `sepBy` lexeme ","
parseItems = lexeme "Starting items:" *> nat `sepBy1` lexeme ","

parseOper :: Parser (Int -> Int)
parseOper = do
Expand Down
26 changes: 26 additions & 0 deletions haskell/14/14.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import Utils

main :: IO ()
main = do
parsed <- parseInput aocParse "14/input.txt"
case parsed of
Left pError -> putStr $ errorBundlePretty pError
Right input -> do
print input

-- get max x, max y
-- make array from 1 1 to max ma
--
type Rock = [Coord]

aocParse :: Parser Rock
aocParse = concat <$> some parseRock <* eof
where
parseRock :: Parser Rock
parseRock = nub
. concat
. mapAdjacent fillLine
<$> dbg "rock" (parseCoord `sepBy1` lexeme "->")
parseCoord :: Parser Coord
parseCoord = (, ) <$> (lexeme nat <* lexeme ",")
<*> lexeme nat
2 changes: 2 additions & 0 deletions haskell/14/ex.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
498,4 -> 498,6 -> 496,6
503,4 -> 502,4 -> 502,9 -> 494,9
155 changes: 155 additions & 0 deletions haskell/14/input.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
529,71 -> 529,72 -> 539,72 -> 539,71
484,168 -> 489,168
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
502,165 -> 507,165
481,165 -> 486,165
527,96 -> 527,98 -> 525,98 -> 525,106 -> 536,106 -> 536,98 -> 530,98 -> 530,96
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
500,176 -> 505,176
513,124 -> 513,126 -> 510,126 -> 510,134 -> 524,134 -> 524,126 -> 518,126 -> 518,124
498,140 -> 498,142 -> 497,142 -> 497,150 -> 507,150 -> 507,142 -> 502,142 -> 502,140
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
527,96 -> 527,98 -> 525,98 -> 525,106 -> 536,106 -> 536,98 -> 530,98 -> 530,96
506,42 -> 510,42
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
490,156 -> 495,156
496,174 -> 501,174
503,40 -> 507,40
501,136 -> 501,137 -> 514,137 -> 514,136
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
495,165 -> 500,165
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
527,96 -> 527,98 -> 525,98 -> 525,106 -> 536,106 -> 536,98 -> 530,98 -> 530,96
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
529,71 -> 529,72 -> 539,72 -> 539,71
488,165 -> 493,165
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
524,42 -> 528,42
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
533,118 -> 538,118
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
500,42 -> 504,42
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
493,153 -> 498,153
472,176 -> 477,176
491,162 -> 496,162
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
487,159 -> 492,159
521,40 -> 525,40
501,136 -> 501,137 -> 514,137 -> 514,136
475,174 -> 480,174
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
484,162 -> 489,162
515,40 -> 519,40
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
485,172 -> 490,172
512,34 -> 516,34
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
492,172 -> 497,172
501,136 -> 501,137 -> 514,137 -> 514,136
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
489,174 -> 494,174
516,121 -> 521,121
512,118 -> 517,118
529,115 -> 534,115
519,118 -> 524,118
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
513,124 -> 513,126 -> 510,126 -> 510,134 -> 524,134 -> 524,126 -> 518,126 -> 518,124
505,26 -> 505,28 -> 500,28 -> 500,31 -> 513,31 -> 513,28 -> 509,28 -> 509,26
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
505,26 -> 505,28 -> 500,28 -> 500,31 -> 513,31 -> 513,28 -> 509,28 -> 509,26
498,140 -> 498,142 -> 497,142 -> 497,150 -> 507,150 -> 507,142 -> 502,142 -> 502,140
509,40 -> 513,40
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
525,112 -> 530,112
527,96 -> 527,98 -> 525,98 -> 525,106 -> 536,106 -> 536,98 -> 530,98 -> 530,96
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
537,121 -> 542,121
494,159 -> 499,159
513,124 -> 513,126 -> 510,126 -> 510,134 -> 524,134 -> 524,126 -> 518,126 -> 518,124
509,121 -> 514,121
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
528,88 -> 528,89 -> 542,89 -> 542,88
498,140 -> 498,142 -> 497,142 -> 497,150 -> 507,150 -> 507,142 -> 502,142 -> 502,140
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
513,124 -> 513,126 -> 510,126 -> 510,134 -> 524,134 -> 524,126 -> 518,126 -> 518,124
529,71 -> 529,72 -> 539,72 -> 539,71
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
505,26 -> 505,28 -> 500,28 -> 500,31 -> 513,31 -> 513,28 -> 509,28 -> 509,26
505,162 -> 510,162
523,121 -> 528,121
493,176 -> 498,176
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
501,159 -> 506,159
478,172 -> 483,172
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
527,96 -> 527,98 -> 525,98 -> 525,106 -> 536,106 -> 536,98 -> 530,98 -> 530,96
498,140 -> 498,142 -> 497,142 -> 497,150 -> 507,150 -> 507,142 -> 502,142 -> 502,140
497,156 -> 502,156
521,109 -> 526,109
518,112 -> 523,112
518,42 -> 522,42
505,26 -> 505,28 -> 500,28 -> 500,31 -> 513,31 -> 513,28 -> 509,28 -> 509,26
519,92 -> 519,93 -> 528,93
522,115 -> 527,115
505,26 -> 505,28 -> 500,28 -> 500,31 -> 513,31 -> 513,28 -> 509,28 -> 509,26
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
512,42 -> 516,42
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
513,124 -> 513,126 -> 510,126 -> 510,134 -> 524,134 -> 524,126 -> 518,126 -> 518,124
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
498,140 -> 498,142 -> 497,142 -> 497,150 -> 507,150 -> 507,142 -> 502,142 -> 502,140
482,174 -> 487,174
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
479,176 -> 484,176
486,176 -> 491,176
498,140 -> 498,142 -> 497,142 -> 497,150 -> 507,150 -> 507,142 -> 502,142 -> 502,140
481,170 -> 486,170
513,124 -> 513,126 -> 510,126 -> 510,134 -> 524,134 -> 524,126 -> 518,126 -> 518,124
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
515,36 -> 519,36
512,38 -> 516,38
498,140 -> 498,142 -> 497,142 -> 497,150 -> 507,150 -> 507,142 -> 502,142 -> 502,140
528,88 -> 528,89 -> 542,89 -> 542,88
537,85 -> 537,77 -> 537,85 -> 539,85 -> 539,76 -> 539,85 -> 541,85 -> 541,75 -> 541,85
498,162 -> 503,162
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
513,124 -> 513,126 -> 510,126 -> 510,134 -> 524,134 -> 524,126 -> 518,126 -> 518,124
505,26 -> 505,28 -> 500,28 -> 500,31 -> 513,31 -> 513,28 -> 509,28 -> 509,26
515,115 -> 520,115
509,165 -> 514,165
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
518,38 -> 522,38
509,36 -> 513,36
528,88 -> 528,89 -> 542,89 -> 542,88
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
506,38 -> 510,38
526,118 -> 531,118
519,92 -> 519,93 -> 528,93
527,96 -> 527,98 -> 525,98 -> 525,106 -> 536,106 -> 536,98 -> 530,98 -> 530,96
505,26 -> 505,28 -> 500,28 -> 500,31 -> 513,31 -> 513,28 -> 509,28 -> 509,26
488,170 -> 493,170
530,121 -> 535,121
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
528,68 -> 528,59 -> 528,68 -> 530,68 -> 530,63 -> 530,68 -> 532,68 -> 532,64 -> 532,68 -> 534,68 -> 534,66 -> 534,68 -> 536,68 -> 536,60 -> 536,68
524,55 -> 524,46 -> 524,55 -> 526,55 -> 526,45 -> 526,55 -> 528,55 -> 528,47 -> 528,55 -> 530,55 -> 530,46 -> 530,55 -> 532,55 -> 532,48 -> 532,55
493,23 -> 493,13 -> 493,23 -> 495,23 -> 495,19 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,14 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,18 -> 505,23
527,96 -> 527,98 -> 525,98 -> 525,106 -> 536,106 -> 536,98 -> 530,98 -> 530,96
7 changes: 6 additions & 1 deletion haskell/aoc2022.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ common aoc
, TupleSections
hs-source-dirs: 01, 02, 03, 04, 05
, 06, 07, 08, 09, 10
, 11, 12, 13
, 11, 12, 13, 14
ghc-options: -Wall

library
Expand All @@ -22,6 +22,7 @@ library
, text
, array
, fingertree
, utility-ht
hs-source-dirs: common
default-language: Haskell2010
default-extensions: OverloadedStrings
Expand Down Expand Up @@ -79,3 +80,7 @@ executable 13
import: aoc
main-is: 13.hs

executable 14
import: aoc
main-is: 14.hs

14 changes: 12 additions & 2 deletions haskell/common/Utils.hs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ module Utils
, Text
, pack
, module Data.Ord
, module Data.List.HT
) where

import Text.Megaparsec hiding (parse) -- main module
Expand All @@ -29,6 +30,10 @@ import Control.Applicative
import Data.Ord
import Data.Either
import qualified Data.PriorityQueue.FingerTree as PQ
import Data.List.HT (mapAdjacent)

-- Typedefs
type Coord = (Int, Int)

-- Misc util
clamp2D :: ((Int, Int), (Int, Int)) -> (Int, Int) -> (Int, Int)
Expand All @@ -40,9 +45,15 @@ toPairs (x : y : zs) = (x, y) : toPairs zs
toPairs [] = []
toPairs (z : zs) = []

-- Generates line segment between two endpoints
fillLine :: Coord -> Coord -> [Coord]
fillLine (x, y) (x', y')
| x == x' = zip (repeat x) [min y y'..max y y']
| y == y' = zip [min x x'..max x x'] $ repeat y
| otherwise = error "To-do"

-- Parser util
type Parser = Parsec Void Text

eatSome :: Parser ()
eatSome = L.space space1 empty empty

Expand Down Expand Up @@ -113,7 +124,6 @@ indexByValue val = fst
. assocs

-- Dijkstra's
type Coord = (Int, Int)
type Graph = Arr2D Node
type Node = Char
type DijkPQ = PQ.PQueue Int Coord
Expand Down

0 comments on commit e0ccf3d

Please sign in to comment.