Sha256: aa2fcea02d16c3658e480adf7656058ca3e3c0f96d711a6f99613ef4f7f3aced

Contents?: true

Size: 814 Bytes

Versions: 118

Compression:

Stored size: 814 Bytes

Contents

from itertools import permutations
from functools import reduce


def swap(a, b):
    return (b, a)


def build_chain(chain, domino):
    if chain is not None:
        last = chain[-1]
        if len(chain) == 1 and last[0] == domino[0]:
            return [swap(*last), domino]
        elif len(chain) == 1 and last[0] == domino[1]:
            return [swap(*last), swap(*domino)]
        elif last[1] == domino[0]:
            return chain + [domino]
        elif last[1] == domino[1]:
            return chain + [swap(*domino)]
    return None


def chain(dominoes):
    if not any(dominoes):
        return []
    for perm in permutations(dominoes):
        chain = reduce(build_chain, perm[1:], [perm[0]])
        if chain is not None and chain[0][0] == chain[-1][1]:
            return chain
    return None

Version data entries

118 entries across 118 versions & 1 rubygems

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