Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 23, 2016 22:32:49

Mr.Geekman
Зарегистрирован: 2016-03-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти причину затирания значений

В ходе решения задачи (https://py.checkio.org/mission/the-square-chest/) я написал вот этот код:

 def checkio(lines_list):
    square_list = []
    temp_lines_list = [0] * 4
    
    for line_1 in lines_list:
        temp_lines_list[0] = line_1
        
        for line_2 in lines_list:
            if line_2 in temp_lines_list[:1]:
                continue
            if (line_1[1] not in line_2) and (line_1[0] not in line_2):
                continue
            temp_lines_list[1] = line_2
            
            for line_3 in lines_list:
                if line_3 in temp_lines_list[:2]:
                    continue
                if (line_2[1] not in line_3) and (line_2[0] not in line_3):
                    continue
                temp_lines_list[2] = line_3
                    
                for line_4 in lines_list:
                    if line_4 in temp_lines_list[:3]:
                        continue
                    if (line_3[1] not in line_4) and (line_3[0] not in line_4):
                        continue
                    if (line_1[0] not in line_4) and (line_1[1] not in line_4):
                        continue
                    temp_lines_list[3] = line_4
                    #print(temp_lines_list)
                    temp_lines_list.sort()
                    #print(temp_lines_list)
                    #print(square_list)
                    #print(temp_lines_list in square_list)
                    if temp_lines_list not in square_list:
                        square_list.append(temp_lines_list)
                        
    print('square_list = ', square_list)
    return(len(square_list))
res = checkio([[1, 2], [3, 4], [1, 5], [2, 6], [4, 8], [5, 6], [6, 7],
                     [7, 8], [6, 10], [7, 11], [8, 12], [10, 11],
                     [10, 14], [12, 16], [14, 15], [15, 16]])
print(res)
Наблюдая за промежуточными значениями square_list я понимаю, что я правильно нахожу линии, соединяющие все 3 квадрата, но проблема в том, что при новые элементы никогда не добавляются в square_list.
При появлении новой комбинации она не добавляется, а как бы заменяет предыдущую.

Помогите, пожалуйста. Я действительно не могу понять в чем дело. Пробовал делать square_list в виде set, но он же путает элементы местами и из-за этого создается большее число комбинаций. Потом пробовал добавлять линии в square_list без проверок, но в конце получался список с большим числом абсолютно одинаковых линий.

Отредактировано Mr.Geekman (Дек. 23, 2016 22:35:00)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version