Решение на Навигация на Piet от Даниела Дишлянова

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

Към профила на Даниела Дишлянова

Резултати

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

Код

def calculate_final_vector(start, colors):
direction_by_color = {
'000000': [-1, -1],
'FFFFFF': [0, 0],
'C0FFC0': [-1, 0],
'00C000': [1, 0],
'FFFFC0': [0, -1],
'C0C000': [0, 1],
'FFC0C0': [1, 0],
'C00000': [-1, 0],
'C0C0FF': [0, 1],
'0000C0': [0, -1]
}
end_vec = list(start)
for color in colors:
proper_color = color.upper()
if direction_by_color[proper_color] == [-1, -1]:
break
end_vec[0] = end_vec[0] + direction_by_color[proper_color][0]
end_vec[1] = end_vec[1] + direction_by_color[proper_color][1]
return tuple(end_vec)

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

........
----------------------------------------------------------------------
Ran 8 tests in 0.088s

OK

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

Даниела обнови решението на 20.10.2022 22:20 (преди над 1 година)

+def calculate_final_vector(start, colors):
+ direction_by_color = {'000000': [-1, -1], 'FFFFFF': [0, 0], 'C0FFC0': [-1, 0], '00C000': [1, 0], 'FFFFC0': [0, -1], 'C0C000':[0, 1], 'FFC0C0': [1, 0], 'C00000': [-1, 0], 'C0C0FF': [0, 1], '0000C0': [0, -1]}
+ end_vec = list(start)
+ for color in colors:
+ proper_color = color.upper()
+ if direction_by_color[proper_color] == [-1, -1]:
+ break
+ end_vec[0] = end_vec[0] + direction_by_color[proper_color][0]
+ end_vec[1] = end_vec[1] + direction_by_color[proper_color][1]
+ return tuple(end_vec)

Ужасно дългите редове не са препоръчителни. 80 characters е малко остаряла граница, но дори да вдигнем числото, редът с речника все пак е прекалено дълъг.

Даниела обнови решението на 24.10.2022 20:23 (преди над 1 година)

def calculate_final_vector(start, colors):
- direction_by_color = {'000000': [-1, -1], 'FFFFFF': [0, 0], 'C0FFC0': [-1, 0], '00C000': [1, 0], 'FFFFC0': [0, -1], 'C0C000':[0, 1], 'FFC0C0': [1, 0], 'C00000': [-1, 0], 'C0C0FF': [0, 1], '0000C0': [0, -1]}
+ direction_by_color = {
+ '000000': [-1, -1],
+ 'FFFFFF': [0, 0],
+ 'C0FFC0': [-1, 0],
+ '00C000': [1, 0],
+ 'FFFFC0': [0, -1],
+ 'C0C000': [0, 1],
+ 'FFC0C0': [1, 0],
+ 'C00000': [-1, 0],
+ 'C0C0FF': [0, 1],
+ '0000C0': [0, -1]
+ }
end_vec = list(start)
for color in colors:
proper_color = color.upper()
if direction_by_color[proper_color] == [-1, -1]:
break
end_vec[0] = end_vec[0] + direction_by_color[proper_color][0]
end_vec[1] = end_vec[1] + direction_by_color[proper_color][1]
return tuple(end_vec)