Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Identify Block by Rounin
def identify_block(numbers):
if len(numbers) == 0:
return null
numbers = sorted(numbers)
# Convert to coordinates
for i in range(len(numbers)):
numbers[i] = [int((numbers[i]-1)/4), (numbers[i]-1)%4]
# Shift up and left
shift = numbers[0]
for i in range(len(numbers)):
numbers[i] = [numbers[i][0]-shift[0], numbers[i][1]-shift[1]]
blocks = [
[[[0,0],[1,0],[2,0],[3,0]],"I"],
[[[0,0],[0,1],[0,2],[0,3]],"I"],
[[[0,0],[1,0],[2,0],[2,-1]],"J"],
[[[0,0],[1,0],[1,1],[1,2]],"J"],
[[[0,0],[0,1],[1,0],[2,0]],"J"],
[[[0,0],[0,1],[0,2],[1,2]],"J"],
[[[0,0],[1,0],[2,0],[2,1]],"L"],
[[[0,0],[0,1],[0,2],[1,0]],"L"],
[[[0,0],[0,1],[1,1],[2,1]],"L"],
[[[0,0],[1,-2],[1,-1],[1,0]],"L"],
[[[0,0],[0,1],[1,0],[1,1]],"O"],
[[[0,0],[0,1],[1,-1],[1,0]],"S"],
[[[0,0],[1,0],[1,1],[2,1]],"S"],
[[[0,0],[0,1],[0,2],[1,1]],"T"],
[[[0,0],[1,0],[1,1],[2,0]],"T"],
[[[0,0],[1,-1],[1,0],[1,1]],"T"],
[[[0,0],[1,-1],[1,0],[2,0]],"T"],
[[[0,0],[0,1],[1,1],[1,2]],"Z"],
[[[0,0],[1,-1],[1,0],[2,-1]],"Z"]
]
numbers = str(numbers)
for i in range(len(blocks)):
if str(blocks[i][0]) == numbers:
return blocks[i][1]
return None
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert identify_block({10, 13, 14, 15}) == 'T', 'T'
assert identify_block({1, 5, 9, 6}) == 'T', 'T'
assert identify_block({2, 3, 7, 11}) == 'L', 'L'
assert identify_block({4, 8, 12, 16}) == 'I', 'I'
assert identify_block({3, 1, 5, 8}) == None, 'None'
print('"Run" is good. How is "Check"?')
Sept. 28, 2017