Форум сайта python.su
0
условие задачи.
… a man was given directions to go from one point to another. The directions were “NORTH”, “SOUTH”, “WEST”, “EAST”. Clearly “NORTH” and “SOUTH” are opposite, “WEST” and “EAST” too. Going to one direction and coming back the opposite direction is a needless effort. Since this is the wild west, with dreadfull weather and not much water, it's important to save yourself some energy, otherwise you might die of thirst!
How I crossed the desert the smart way.
The directions given to the man are, for example, the following:
["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
["WEST"]
["NORTH", "SOUTH", "EAST", "WEST"]
["EAST", "WEST"]
[]
["NORTH", "EAST", "WEST", "SOUTH", "WEST", "WEST"]
["WEST", "WEST"]
["NORTH", "WEST", "SOUTH", "EAST"]
["NORTH", "WEST", "SOUTH", "EAST"]
opposite = {'NORTH': 'SOUTH', 'EAST': 'WEST', 'SOUTH': 'NORTH', 'WEST': 'EAST'} def dirReduc(plan): new_plan = [] for d in plan: if new_plan and new_plan[-1] == opposite[d]: new_plan.pop() else: new_plan.append(d) return new_plan
Отредактировано Fixx_Jr (Авг. 7, 2019 20:25:43)
Офлайн
857
Fixx_JrПотому что он не добавляет второе значение, если оно противоположно проверяемому, а вместо этого удаляет проверяемое.
1. по условию удалять надо пары значений, а здесь удаляется одно. Почему это работает?
Fixx_JrПохоже, ты просто не вкурил, как работает эта функция. Она не проверяет два значения в списке. Она проверяет значение перед тем как его добавить в список.
2. Сравнение двух элементов списка со словарем. Как это работает без перебора элементов?
цикл для каждого элемента во входном_плане выполнять
если в выходном_плане нет элементов то
добавить элемент в выходной_план
иначе
если элемент противоположен последнему_добавленному_элементу в выходном_плане то
удалить из выходного_плана последний_добавленный_элемент
конец если
конец если
конец цикла
| утв: в выходном_плане только непротивоположные элементы
Отредактировано py.user.next (Авг. 8, 2019 03:18:35)
Офлайн
0
спасибо, огромное!
я даже с объяснениями не сразу допер, но все-таки осилил
Офлайн