Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
complex numbers solution in Clear category for Identify Block by Leonix
def identify_block(block):
block = unify(block)
for rotation in range(4):
block = frozenset(n*1j for n in block)
if block in KNOWN_BLOCKS:
return KNOWN_BLOCKS[block]
return None
def unify(block):
block = [complex((n-1)%4, -((n-1)//4)) for n in block]
center = sum(block) / len(block)
return frozenset(c - center for c in block)
KNOWN_BLOCKS = { unify(block): letter for block, letter in [
([1, 2, 3, 4], 'I'),
([2, 6, 10, 9], 'J'), # Reference:
([1, 5, 9, 10], 'L'), # 1 2 3 4
([1, 2, 5, 6], 'O'), # 5 6 7 8
([5, 6, 2, 3], 'S'), # 9 10 11 12
([1, 2, 6, 7], 'Z'), # 13 14 15 16
([1, 2, 3, 6], 'T'),
]}
July 19, 2019
Comments: