Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Spin / turn solution in Clear category for Numbered Triangles by evoynov
from itertools import permutations as perm
from itertools import product as prod
def check(chips, case):
for i, t in enumerate(case):
i1 = i+1 if i < 5 else 0
if chips[i][case[i][0]] != chips[i1][case[i1][1]]:
return False
return True
def checkio(chips):
m = 0
maxmax = sum(map(max, chips))
for chips_order in perm(range(6)):
shaked_chips = [chips[chips_order[i]] for i in range(6)]
for case in prod(perm(range(3)), repeat=6):
if check(shaked_chips, case):
m = max(m, sum(shaked_chips[i][case[i][2]] for i in range(6)))
if m == maxmax:
return m
return m
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio(
[[1, 4, 20], [3, 1, 5], [50, 2, 3],
[5, 2, 7], [7, 5, 20], [4, 7, 50]]) == 152, "First"
assert checkio(
[[1, 10, 2], [2, 20, 3], [3, 30, 4],
[4, 40, 5], [5, 50, 6], [6, 60, 1]]) == 210, "Second"
assert checkio(
[[1, 2, 3], [2, 1, 3], [4, 5, 6],
[6, 5, 4], [5, 1, 2], [6, 4, 3]]) == 21, "Third"
assert checkio(
[[5, 9, 5], [9, 6, 9], [6, 7, 6],
[7, 8, 7], [8, 1, 8], [1, 2, 1]]) == 0, "Fourth"
March 5, 2015
Comments: