Решение на Навигация на Piet от Йоан Бабулков

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

Към профила на Йоан Бабулков

Резултати

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

Код

from enum import Enum, unique
Vector = tuple[int, ...]
@unique
class Color(str, Enum):
LIGHT_GREEN = "C0FFC0"
DARK_GREEN = "00C000"
LIGHT_YELLOW = "FFFFC0"
DARK_YELLOW = "C0C000"
LIGHT_RED = "FFC0C0"
DARK_RED = "C00000"
LIGHT_BLUE = "C0C0FF"
DARK_BLUE = "0000C0"
BLACK = "000000"
def calculate_final_vector(start: Vector, colors: list[str]) -> Vector:
colors: list[str] = list(map(lambda x: x.upper(), colors))

colors е нещо, през което ще интерираш с for, така че не е нужно изрично да кастваш резултатът от map към list. И без тази стъпка ще работи, даже по-пестеливо откъм памет.

result: list[int] = list(start)
for color in colors:
match color:
case Color.LIGHT_GREEN | Color.DARK_RED:
result[0] -= 1
case Color.DARK_GREEN | Color.LIGHT_RED:
result[0] += 1
case Color.LIGHT_YELLOW | Color.DARK_BLUE:
result[1] -= 1
case Color.DARK_YELLOW | Color.LIGHT_BLUE:
result[1] += 1
case Color.BLACK:
return tuple(result)
return tuple(result)

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

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

OK

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

Йоан обнови решението на 23.10.2022 19:10 (преди над 1 година)

+from enum import Enum, unique
+
+Vector = tuple[int, ...]
+
+
+@unique
+class Color(str, Enum):
+ LIGHT_GREEN = "C0FFC0"
+ DARK_GREEN = "00C000"
+ LIGHT_YELLOW = "FFFFC0"
+ DARK_YELLOW = "C0C000"
+ LIGHT_RED = "FFC0C0"
+ DARK_RED = "C00000"
+ LIGHT_BLUE = "C0C0FF"
+ DARK_BLUE = "0000C0"
+ BLACK = "000000"
+
+
+def calculate_final_vector(start: Vector, colors: list[str]) -> Vector:
+ colors: list[str] = list(map(lambda x: x.upper(), colors))

colors е нещо, през което ще интерираш с for, така че не е нужно изрично да кастваш резултатът от map към list. И без тази стъпка ще работи, даже по-пестеливо откъм памет.

+ result: list[int] = list(start)
+
+ for color in colors:
+ match color:
+ case Color.LIGHT_GREEN | Color.DARK_RED:
+ result[0] -= 1
+ case Color.DARK_GREEN | Color.LIGHT_RED:
+ result[0] += 1
+ case Color.LIGHT_YELLOW | Color.DARK_BLUE:
+ result[1] -= 1
+ case Color.DARK_YELLOW | Color.LIGHT_BLUE:
+ result[1] += 1
+ case Color.BLACK:
+ return tuple(result)
+
+ return tuple(result)