Sha256: fd56d800581e112677f79955da863c85b216d57549a8c2b37ae3c66c932e92f7

Contents?: true

Size: 541 Bytes

Versions: 396

Compression:

Stored size: 541 Bytes

Contents

module Dominoes

let rotate xs =
    let length = xs |> List.length
    let perm n = xs |> List.permute (fun index -> (index + n) % length) 
    [1 .. length] |> List.rev |> List.map perm

let chainPair (x, y) list = 
    match list with    
    | (x', y')::xs when y = x' -> (x, y')::xs |> Some
    | (x', y')::xs when y = y' -> (x, x')::xs |> Some
    | _ -> None
    
let rec canChain input = 
    match input with
    | [] -> true
    | (x, y)::[] -> x = y
    | x::xs -> rotate xs |> List.choose (chainPair x) |> List.exists canChain

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.179 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.178 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.177 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.176 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.175 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.174 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.173 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.172 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.171 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.170 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.169 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.167 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.166 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.165 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.164 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.163 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.162 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.161 tracks/fsharp/exercises/dominoes/Example.fs
trackler-2.2.1.160 tracks/fsharp/exercises/dominoes/Example.fs