Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Find Sequence by UFO665
def isMatching(lst):
iCounter = 1
curElem = lst[0]
for elem in lst[1:]:
if elem == curElem:
iCounter += 1
else:
iCounter = 1
curElem = elem
if iCounter == 4:
return True
return False
def diagonals(matrix, row, col):
lstRes = []
if row == 0 or row == len(matrix) - 1:
bZeroRow = row == 0
for offset in [1, -1]:
lst = []
iRowOffset, iColOffset = 0, 0
while 0 <= row + iRowOffset < len(matrix) and 0 <= col + iColOffset < len(matrix):
lst.append(matrix[row + iRowOffset][col + iColOffset])
iRowOffset += 1 if bZeroRow else -1
iColOffset += offset
if len(lst) > 3:
lstRes.append(lst)
elif col == 0 or col == len(matrix) - 1:
bZeroCol = col == 0
for offset in [1, -1]:
lst = []
iRowOffset, iColOffset = 0, 0
while 0 <= row + iRowOffset < len(matrix) and 0 <= col + iColOffset < len(matrix):
lst.append(matrix[row + iRowOffset][col + iColOffset])
iRowOffset += offset
iColOffset += 1 if bZeroCol else -1
if len(lst) > 3:
lstRes.append(lst)
return lstRes
def checkio(matrix):
for row in matrix:
if isMatching(row):
return True
lst = [[row[i] for row in matrix] for i in range(len(row))]
for row in lst:
if isMatching(row):
return True
lst = []
for i in range(len(matrix)):
for j in range(len(matrix)):
if i in [0, len(matrix) - 1] or j in [0, len(matrix) - 1]:
lstDiag = diagonals(matrix, i, j)
for l in lstDiag:
if isMatching(l):
return True
return False
March 5, 2016