Решение на Навигация на Piet от Георги Събев

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

Към профила на Георги Събев

Резултати

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

Код

DIRECTIONS = {
'RIGHT': ['00C000', 'FFC0C0'],
'UP': ['C0C000', 'C0C0FF'],
'LEFT': ['C00000', 'C0FFC0'],
'DOWN': ['FFFFC0', '0000C0']
}
STOP_MOVE = '000000'
SKIP_MOVE = 'FFFFFF'
def calculate_final_vector(starting_point, colors):
x, y = starting_point
for color in [c.upper() for c in colors]:
if color in DIRECTIONS['RIGHT']:
x += 1
elif color in DIRECTIONS['UP']:
y += 1
elif color in DIRECTIONS['LEFT']:
x -= 1
elif color in DIRECTIONS['DOWN']:
y -= 1
elif color == SKIP_MOVE:
continue
elif color == STOP_MOVE:
break
return x, y

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

........
----------------------------------------------------------------------
Ran 8 tests in 0.098s

OK

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

Георги обнови решението на 23.10.2022 12:38 (преди около 2 години)

+DIRECTIONS = {
+ 'RIGHT': ['00C000', 'FFC0C0'],
+ 'UP': ['C0C000', 'C0C0FF'],
+ 'LEFT': ['C00000', 'C0FFC0'],
+ 'DOWN': ['FFFFC0', '0000C0']
+}
+STOP_MOVE = '000000'
+SKIP_MOVE = 'FFFFFF'
+
+
+def calculate_final_vector(starting_point, colors):
+ x, y = starting_point
+
+ for color in [c.upper() for c in colors]:
+ if color in DIRECTIONS['RIGHT']:
+ x += 1
+ elif color in DIRECTIONS['UP']:
+ y += 1
+ elif color in DIRECTIONS['LEFT']:
+ x -= 1
+ elif color in DIRECTIONS['DOWN']:
+ y -= 1
+ elif color == SKIP_MOVE:
+ continue
+ elif color == STOP_MOVE:
+ break
+
+ return x, y

Единствено бих обърнал внимание, че SKIP_MOVE е излишно - както дефиницията, така и проверката за него. Реално погледнато, обаче, и аз бих го сложил, за да направя по-близка асоциация с изискванията. Решението е добро!