mirror of
https://gitlab.com/mfocko/CodeWars.git
synced 2024-11-09 11:09:07 +01:00
21 lines
599 B
Haskell
21 lines
599 B
Haskell
|
module Codewars.Kata.Reduction where
|
||
|
import Codewars.Kata.Reduction.Direction
|
||
|
|
||
|
-- data Direction = North | East | West | South deriving (Eq)
|
||
|
|
||
|
areOpposite :: Direction -> Direction -> Bool
|
||
|
areOpposite North South = True
|
||
|
areOpposite South North = True
|
||
|
areOpposite East West = True
|
||
|
areOpposite West East = True
|
||
|
areOpposite _ _ = False
|
||
|
|
||
|
folding :: Direction -> [Direction] -> [Direction]
|
||
|
folding x [] = [x]
|
||
|
folding x (y:rest) | areOpposite x y = rest
|
||
|
| otherwise = x:y:rest
|
||
|
|
||
|
dirReduce :: [Direction] -> [Direction]
|
||
|
dirReduce [] = []
|
||
|
dirReduce directions = foldr folding [] directions
|