Извините за недостаточную эффективность, но вот мое быстрое решение.
Мы рассматриваем сетку как набор координат. Это решение основано на том факте, что каждый элемент в выходных данных, которые вы хотите, будет иметь координаты X и Y, а не определенное число. Например, первый элемент «F» имеет местоположение (0,0), что равняется 0. Вторые два элемента «RU» расположены ad (1,0) и (0,1), которые оба складываются 1. Третья строка «PAN» содержит буквы, расположенные в точках (0,2), (1,1) и (2,0) и т. д. Отслеживая это число с помощью «i» в моем решении, оно должно быть достаточно большим для сканирования по всем спискам, так что это в два раза больше длины массива. Таким образом, мы сканируем список для элементов, которые расположены в координатах x и y, где x + y == i.
Код:
Puzzle = ["FUNCTIONRRIRAI",
"RAIOONFRCCPWON",
"PTCSNOBEUITOLO",
"BNCACIANTOSLIH",
"RBYOLILYNREFBT",
"HYYNOGESTIBRIY",
"AATTSIONCMCENP",
"UORTENRRCBFVAU",
"CEBEECVWIERORI",
"PROCESSORTOPYF",
"OHCOMPUTERHSOS",
"YCYPRESREOSMRW",
"OATHBRMVTHHCTR",
"PGORWOOUIPSCHP"]
output = []
i = 0
while i < len(Puzzle)*2:
single_string = ""
for y in range(0,len(Puzzle)):
for x in range(0,len(Puzzle[0])):
if (x + y) == i:
single_string += Puzzle[x][y]
if single_string != "":
output.append(single_string)
i += 1
print(output)
Выходы
['F',
'RU',
'PAN',
'BTIC',
'RNCOT',
'HBCSOI',
'AYYANNO',
'UAYOCOFN',
'COTNLIBRR',
'PERTOIAECR',
'ORBTSGLNUCI',
'YHOEEIEYTIPR',
'OCCCENOSNOTWA',
'PAYOECRNTRSOOI',
'GTPMSVRCIELLN',
'OHRPSWCMBFIO',
'RBEUOIBCRBH',
'WRSTREFEIT',
'OMRETRVNY',
'OVEROOAP',
'UTOHPRU',
'IHSSYI',
'PHMOF',
'SCRS',
'CTW',
'HR',
'P']
Надеюсь это поможет. С удовольствием, чтобы уточнить что-либо, если это необходимо