Как реализовать способ удаления пар в массиве - PullRequest
1 голос
/ 17 июня 2020

Я работаю над проблемой, которая требует от меня удаления «пар» (пар север-юг и восток-запад) в массиве строк. Я не знаю, как решить эту проблему на Python.

Вот проблема:

Напишите функцию dirRedu c, которая будет принимать массив строк и возвращать массив строк с удаленными ненужными направлениями (W <-> E или S <-> N рядом). (ссылка на проблему: https://www.codewars.com/kata/550f22f4d758534c1100025a)

Некоторые тестовые входы и выходы:

Input  : ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
Output : ["WEST"]

Input  : ["NORTH", "WEST", "SOUTH", "EAST"]
Output : ["NORTH", "WEST", "SOUTH", "EAST"]

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

1 Ответ

1 голос
/ 17 июня 2020

Простая реализация могла бы просто использовать словарь для определения противоположных направлений. При обработке списка, если текущее направление противоположно последнему, удалить последнее из вывода. В противном случае добавьте в список новое направление:

dirs = {'NORTH': 'SOUTH', 'SOUTH': 'NORTH', 'EAST': 'WEST', 'WEST': 'EAST'}

def dirReduc(input):
    output = []

    for dir in input:
        if output and output[-1] == dirs[dir]:
            output.pop()
        else:
            output.append(dir)

    return output

print(dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]))
print(dirReduc(["NORTH", "WEST", "SOUTH", "EAST"]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...