Решение на Навигация на Piet от Александра Павлова

Обратно към всички решения

Към профила на Александра Павлова

Резултати

  • 10 точки от тестове
  • 1 бонус точка
  • 11 точки общо
  • 8 успешни тест(а)
  • 0 неуспешни тест(а)

Код

directions = {'C0FFC0': lambda x, y: (x - 1, y),
'00C000': lambda x, y: (x + 1, y),
'FFFFC0': lambda x, y: (x, y - 1),
'C0C000': lambda x, y: (x, y + 1),
'FFC0C0': lambda x, y: (x + 1, y),
'C00000': lambda x, y: (x - 1, y),
'C0C0FF': lambda x, y: (x, y + 1),
'0000C0': lambda x, y: (x, y - 1),
'FFFFFF': lambda x, y: (x, y),
'000000': lambda x, y: (x, y),
}
def calculate_final_vector(*args):
start_coordinates, arr = args
x1, y1 = start_coordinates
for direction in arr:
if direction == '000000':
break
x1, y1 = directions[direction.upper()](x1, y1)
return x1, y1

Лог от изпълнението

........
----------------------------------------------------------------------
Ran 8 tests in 0.108s

OK

История (1 версия и 2 коментара)

Александра обнови решението на 19.10.2022 17:21 (преди над 1 година)

+directions = {'C0FFC0': lambda x, y: (x - 1, y),
+ '00C000': lambda x, y: (x + 1, y),
+ 'FFFFC0': lambda x, y: (x, y - 1),
+ 'C0C000': lambda x, y: (x, y + 1),
+ 'FFC0C0': lambda x, y: (x + 1, y),
+ 'C00000': lambda x, y: (x - 1, y),
+ 'C0C0FF': lambda x, y: (x, y + 1),
+ '0000C0': lambda x, y: (x, y - 1),
+ 'FFFFFF': lambda x, y: (x, y),
+ '000000': lambda x, y: (x, y),
+ }
+
+
+def calculate_final_vector(*args):
+ start_coordinates, arr = args
+ x1, y1 = start_coordinates
+ for direction in arr:
+ if direction == '000000':
+ break
+ x1, y1 = directions[direction.upper()](x1, y1)
+
+ return x1, y1
+
+

Решението е супер, чисто, спазва PEP8, единствената забележка е arr. Името на променливата не говори много за това какви данни се съдържат вътре, знаем единствено, че е някаква колекция.
P.S. И ламбдата за '000000' е ненужна, защото винаги брейкваш.