Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Trim margin and rotate solution in Clear category for Keys and Locks by tokyoamado
from itertools import dropwhile, takewhile
def trim_margin(pattern: list) -> list:
margin = lambda text: '#' not in text
body = lambda text: '#' in text
tmp = takewhile(body, dropwhile(margin, zip(*pattern)))
return list(takewhile(body, dropwhile(margin, zip(*tmp))))
def rot_cw(pattern: list) -> list:
return list(zip(*map(reversed, pattern)))
def keys_and_locks(lock, some_key):
lpat = trim_margin(lock.split())
kpat = trim_margin(some_key.split())
cw1 = rot_cw(kpat)
cw2 = rot_cw(cw1)
cw3 = rot_cw(cw2)
return any(map(lambda k: lpat == k, [kpat, cw1, cw2, cw3]))
Nov. 26, 2018
Comments: