При изменении элемента в 2D-списке элементы меняются во всем столбце - PullRequest
0 голосов
/ 14 июля 2020

Недавно я участвовал в соревнованиях по программированию, но застрял на вопросе. Вопрос в Аде Кинг. [Ссылка на проблему] [1]: https://www.codechef.com/JULY20B/problems/ADAKING

Мой подход к проблеме заключался в том, что если мы оставим некоторое количество пустых клеток для короля на доске, начиная сверху а затем заполнить оставшиеся препятствиями, тогда король сможет переместить только k клеток. Logi c оказался правильным, но в написанном мной коде у меня возникли проблемы с изменением первого квадрата первой строки, чтобы он содержал 'O', представляющий короля, вместо этого программа иногда меняла все элементы первого столбца на «О» или первые два. Та же история с '.' используется для обозначения пустых квадратов. Может кто-нибудь, пожалуйста, посмотрите мой код и предложите какие-либо исправления

x=['X' for __ in range(8)]
dot=['.' for ___ in range(8)]
t=int(input())
for _ in range(t):
    arr=[]
    for i in range(8):
        arr+=[x]
    k=int(input())
    row=k//8
    extra=k%8
    for i in range(row):
        arr[i]=dot
    for j in range(extra):
        arr[row][j]='.'
    arr[0][0]='O'
    for i in arr:
        print(*i)

1 Ответ

0 голосов
/ 14 июля 2020

У вас проблемы с изменчивостью списка . Способ решить вашу проблему - сделать копии списков с [:]. Поэтому замените эти 2 строки на arr+=[x[:]] и arr[i]=dot[:].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...