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.0.6.40 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.39 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.38 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.37 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.36 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.35 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.34 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.33 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.32 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.31 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.30 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.29 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.28 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.27 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.26 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.25 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.24 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.23 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.22 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.0.6.21 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs