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.119 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.118 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.117 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.116 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.115 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.114 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.113 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.111 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.110 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.109 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.108 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.107 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.106 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.105 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.104 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.103 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.102 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.101 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.100 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs
trackler-2.2.1.99 tracks/haskell/exercises/dominoes/examples/success-standard/src/Dominoes.hs