Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for The Square Chest by baebible
# migrated from python 2.7
def grid_to_num(a, b):
return 4*(a-1) + (b-1) + 1
def num_of_ord(A, n):
ret = 0
for i in range(1, 5-n+1):
for j in range(1, 5-n+1):
sw = True
for k in range(n):
if ([grid_to_num(i+k, j), grid_to_num(i+k+1, j)] not in A):
sw = False
break
if ([grid_to_num(i+k, j+n), grid_to_num(i+k+1, j+n)] not in A):
sw = False
break
if ([grid_to_num(i, j+k), grid_to_num(i,j+k+1)] not in A):
sw = False
break
if ([grid_to_num(i+n, j+k), grid_to_num(i+n, j+k+1)] not in A):
sw = False
break
if sw :
ret = ret + 1
return ret
def checkio(lines_list):
"""Return the qantity of squares"""
A = [sorted(p) for p in lines_list]
ret = sum(num_of_ord(A, n) for n in range(1, 5))
return ret
if __name__ == '__main__':
assert (checkio([[1,2],[3,4],[1,5],[2,6],[4,8],[5,6],[6,7],
[7,8],[6,10],[7,11],[8,12],[10,11],
[10,14],[12,16],[14,15],[15,16]]) == 3) , "First, from description"
assert (checkio([[1,2],[2,3],[3,4],[1,5],[4,8],
[6,7],[5,9],[6,10],[7,11],[8,12],
[9,13],[10,11],[12,16],[13,14],[14,15],[15,16]]) == 2), "Second, from description"
assert (checkio([[1,2], [1,5], [2,6], [5,6]]) == 1), "Third, one small square"
assert (checkio([[1,2], [1,5], [2,6], [5,9], [6,10], [9,10]]) == 0), "Fourth, it's not square"
assert (checkio([[16,15], [16,12], [15,11], [11,10],
[10,14], [14,13], [13,9]]) == 0), "Fifth, snake"
print("all ok")
Nov. 12, 2012