Elementens в лабиринте кортежей - PullRequest
0 голосов
/ 30 октября 2019

Итак, проблема в следующем.

Я ввожу переменную с именем maze , другую переменную и еще одну переменную, содержащую 2 кортежа , но может содержать больше .

Я хочу это в зависимости от положения 0 и 1 в лабиринте , чтобы вернуть False или True.

Другая переменная состоит из кортежа, в котором 1-й элемент соответствует индексу любого кортежа в лабиринте, а 2-й элемент - индексу внутри этого соответствующего кортежа.

Итак, в основном я пытаюсь сделать так, чтобы индексы в переменной coe_posicoes совпадали с индексами кортежей в лабиринте и индексами внутри него.

Но вместо этого функция возвращает ошибкувместо ответа.

Например:

лабиринт = ((1,0,0), (1,0,1), (0,1,1), (1,0,1)), ((1,1), (5,5))

coe_posicoes = ((1,1), (5,5))

Так в этом примереУ меня есть кортеж лабиринта с 4 кортежами внутри переменной лабиринта.

В 1-м кортеже внутри coe_posicoes "(1,1)" первый 1 соответствует 2-му кортежу внутри лабиринта, который равен "(0,1,1) ", а 2-е 1 соответствует позиции индекса 1, которая также равна 1.

Таким образом, результат должен быть Ложным, а для кортежа (5,5) он также должен быть Ложным, потому что нет ни одного кортежаиндекс 5 и индекс 5 внутри любого кортежа.

А также, если я попытаюсь добавить кортеж в coe_posicoes и заставить его работать как другие, он не будет работать.

maze = ((1,0,0),(1,0,1),(0,1,1),(1,0,1)),((1,1),(5,5))

conj_posicoes = ((1,1),(5,5))

def eh_mapa_valido(maze,conj_posicoes):
    if type(maze) != tuple or type(conj_posicoes) != tuple:
        raise(ValueError("mapa_str: algum dos argumentos e invalido"))
    else:
        z = len(maze[0])
        for y in maze:
            if len(y) < 3 or len(y) != z or len(maze) < 3:
                return False
            else:
                    while maze[0][0] != 1:
                        return False
                    while maze[len(maze)-1][-1] != 1:
                        return False
        else:
            for el in conj_posicoes:
                    e = conj_posicoes[el][0]
                    y = conj_posicoes[el][1]
                    z = conj_posicoes[1][el]
                    p = conj_posicoes[1][el + 1]
                    if len(conj_posicoes[0]) != 2 or len(conj_posicoes[1]) != 2 or len(conj_posicoes) < 2 or conj_posicoes[0][0] < 0 or conj_posicoes[0][1] < 0 or conj_posicoes[1][0] < 0 or conj_posicoes[1][1] < 0 or maze[e][y] == 1 or maze[z][p] == 1:
                     return False
            return True


print(eh_mapa_valido(maze,conj_posicoes))

, так что еслилюбой мог бы помочь мне, я был бы признателенэто много.

...