Решение на Навигация на Piet от Роберт Борисов

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

Към профила на Роберт Борисов

Резултати

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

Код

def calculate_final_vector(coordinates, colors):
rules = {'C0FFC0': 'l', 'FFFFC0': 'd', 'FFC0C0': 'r', 'C0C0FF': 'u', '00C000': 'r', 'C0C000': 'u', 'C00000': 'l',
'0000C0': 'd',
'000000': 'e', 'FFFFFF': 's'}
x = coordinates[0]
y = coordinates[1]
for color in colors:
if rules[color.upper()] == 's': # skip
continue
if rules[color.upper()] == 'e': # end
break
if rules[color.upper()] == 'r': # right
x += 1
elif rules[color.upper()] == 'l': # left
x -= 1
elif rules[color.upper()] == 'd': # down
y -= 1
elif rules[color.upper()] == 'u': # up
y += 1
return x, y

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

........
----------------------------------------------------------------------
Ran 8 tests in 0.136s

OK

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

Роберт обнови решението на 24.10.2022 22:45 (преди около 2 години)

+def calculate_final_vector(coordinates, colors):
+ rules = {'C0FFC0': 'l', 'FFFFC0': 'd', 'FFC0C0': 'r', 'C0C0FF': 'u', '00C000': 'r', 'C0C000': 'u', 'C00000': 'l',
+ '0000C0': 'd',
+ '000000': 'e', 'FFFFFF': 's'}
+ x = coordinates[0]
+ y = coordinates[1]
+ for color in colors:
+ if rules[color.upper()] == 's': # skip
+ continue
+ if rules[color.upper()] == 'e': # end
+ break
+ if rules[color.upper()] == 'r': # right
+ x += 1
+ elif rules[color.upper()] == 'l': # left
+ x -= 1
+ elif rules[color.upper()] == 'd': # down
+ y -= 1
+ elif rules[color.upper()] == 'u': # up
+ y += 1
+
+ return x, y