Йоан обнови решението на 23.10.2022 19:10 (преди около 2 години)
+from enum import Enum, unique
+
+Vector = tuple[int, ...]
Type hinting е за простосмърните. В Python не се интересуваме от типовете.
+
+
+@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)
Ако просто break
-неш, ще спестиш дублирането на код между този ред и последния.
+
+ return tuple(result)
Получаваш бонус точка за използването на Enum.
Type hinting е за простосмърните. В Python не се интересуваме от типовете.
colors
е нещо, през което ще интерираш сfor
, така че не е нужно изрично да кастваш резултатът отmap
къмlist
. И без тази стъпка ще работи, даже по-пестеливо откъм памет.Ако просто
break
-неш, ще спестиш дублирането на код между този ред и последния.