The user has to enter a 4x4 grid of numbers as follows:
[[2,1024,8,8],
[4,1024,16,32],
[2,32,64,128],
[8,256,2,2]]
Далее у пользователя запрашивается номер, например, для этого конкретного примера, который я выбрал 2048.
Теперь код должен проверить, является ли сумма любых двух соседних полей (вверх или вниз)добавьте в качестве заданного числа, в данном случае, 2048, если да, то поле будет правильным, иначе ложным.Выведите результат.
Код должен включать подсписки, а не словари или кортежи и т. Д.
Что ж, я довольно новичок в python и получил этот вопрос онлайн.Я попробовал обойти это, но безрезультатно.Все, что я создал до сих пор, это подсписок для ввода данных и попытался выполнить его индивидуально одну за другой, но это занимает слишком много времени.
- Редактировать 1: Я попробовал пример кодаэто длинный метод, но при получении ошибки в качестве индексов списка должны быть целые числа или фрагменты, а не кортежи.Надеюсь, также хотел бы сократить код.
Вот код
a=[[2,1024,8,8],
[4,1024,16,32],
[2,32,64,128],
[8,256,2,2]]
def winning(a):
for i in range(0,4):
for j in range(0,4):
if (i==0):
if(j==0):
if a[i,j]+a[(i+1),j]==2048:
True
if(j==3):
if a[i,j]+a[i+1,j]==2048:
True
if a[i,j]+a[i,j-1]==2048 or a[i,j]+a[i+1,j]==2048 or a[i,j]+a[i,j+1]==2048:
True
if(i==1 or i==2):
if(j==0):
if a[i,j]+a[i,j+1]==2048 or a[i,j]+a[i-1,j]==2048 or a[i,j]+a[i+1,j]==2048:
True
if(j==3):
if a[i,j]+a[i-1,j]==2048 or a[i,j]+a[i+1,j]==2048 or a[i,j]+a[i,j-1]==2048:
True
if a[i,j]+a[i,j-1]==2048 or a[i,j]+a[i,j+1]==2048 or a[i,j]+a[i-1,j]==2048 or a[i,j]+a[i+1,j]==2048:
True
if(i==3):
if(j==0):
if a[i,j]+a[i-1,j]==2048:
True
if(j==3):
if a[i,j]+a[i-1,j]==2048:
True
if a[i,j]+a[i,j-1]==2048 or a[i,j]+a[i-1,j]==2048 or a[i,j]+a[i,j+1]==2048:
True
return false
assert winning(a)