Обязательный однострочный *!
Предполагая, что вы загрузили данные 17x17 в numpy
array
с именем A
(см. Ответ @ robertking об использовании urllib), вы можете сделать это с помощьюодна строка с NumPy!
print (array([len(set(A[i:i+k1,j:j+k2][zip(*[(0,0), (0,-1),(-1,0),(-1,-1)])])) for i in xrange(16) for j in xrange(16) for k1 in xrange(2,17) for k2 in xrange(2,17)])!=1).all()
* На самом деле не делайте этого в одну строку.Здесь это немного расширено для ясности:
corners = zip(*[(0,0), (0,-1),(-1,0),(-1,-1)])
for k1 in xrange(2,17):
for k2 in xrange(2,17):
for i in xrange(16):
for j in xrange(16):
# Pull out each sub-rectange
sub = A[i:i+k1, j:j+k2]
# Only use the corners
sub = sub[corners]
# Count the number of unique elements
uniq = len(set(sub))
# Check if all corners are the same
if uniq == 1:
print False
exit()
print True