Sha256: 8ea703833850a4afcc49b927640aae26c8cdd7ab395227a528d47a35fffc91bc

Contents?: true

Size: 703 Bytes

Versions: 381

Compression:

Stored size: 703 Bytes

Contents

module Dominoes (chain) where

import Data.List  (delete)
import Data.Maybe (listToMaybe, mapMaybe)

chain :: [(Int, Int)] -> Maybe [(Int, Int)]
chain [] = Just []
chain (x@(left, right):xs) = fmap (x:) (subchain xs left right)

subchain :: [(Int, Int)] -> Int -> Int -> Maybe [(Int, Int)]
subchain [] chainLeft chainRight = if chainLeft == chainRight then Just [] else Nothing
subchain l  chainLeft chainRight = listToMaybe (mapMaybe subchain' l)
  where subchain' (a, b) | a == chainRight = fmap ((a, b):) (subchain (delete (a, b) l) chainLeft b)
        subchain' (a, b) | b == chainRight = fmap ((b, a):) (subchain (delete (a, b) l) chainLeft a)
        subchain' _                        = Nothing

Version data entries

381 entries across 381 versions & 1 rubygems

Version Path
trackler-2.2.1.78 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.77 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.76 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.75 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.74 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.73 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.72 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.71 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.70 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.69 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.68 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.67 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.66 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.65 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.64 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.63 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.62 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.61 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.60 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.59 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs