["вверх", "вниз", "вправо", "вниз", ] -> ["вправо", "вниз", ]
["влево", "вверх", "вниз", "вправо", "вниз", ] -> [ "вниз", ]
Так то да, пропускать нужно два элемента, а если два элемента пропускать, то цикл нужен не через range?
Сравните, моё решение и как можно было сделать: def dirReduc(arr): patterns = [["NORTH", "SOUTH"], ["EAST", "WEST"]] optimizations = 1 while optimizations > 0: optimizations = 0 tmp_arr = [] i = 0 while i < len(arr): if sorted(arr[i : i + 2]) in patterns: optimizations += 1 i += 2 continue tmp_arr += arr[i : i + 1] i += 1 arr = tmp_arr return arr 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
Это
Обсуждают сегодня