Александър обнови решението на 23.10.2022 11:58 (преди около 2 години)
+def calculate_final_vector(point, codes):
+ x = int(point[0])
+ y = int(point[1])
+
+ hex_colors = {
+ 'C0FFC0': ('green', 'light'),
+ '00C000': ('green', 'dark'),
+ 'FFFFC0': ('yellow', 'light'),
+ 'C0C000': ('yellow', 'dark'),
+ 'FFC0C0': ('red', 'light'),
+ 'C00000': ('red', 'dark'),
+ 'C0C0FF': ('blue', 'light'),
+ '0000C0': ('blue', 'dark'),
+ 'FFFFFF': ('white', ''),
+ '000000': ('black', ''),
+ }
+
+ for code in codes:
+ formatted_code = code.upper()
+
+ if formatted_code not in hex_colors:
+ continue
+ # skip if not defined in hex_colors
+
+ hue = hex_colors[formatted_code][0]
+ saturation = hex_colors[formatted_code][1]
+
+ match hue:
+ case 'green':
+ if saturation == 'dark':
+ x += 1
+ else:
+ x -= 1
+ case 'yellow':
+ if saturation == 'dark':
+ y += 1
+ else:
+ y -= 1
+ case 'red':
+ if saturation == 'dark':
+ x -= 1
+ else:
+ x += 1
+ case 'blue':
+ if saturation == 'dark':
+ y -= 1
+ else:
+ y += 1
+ case 'black':
+ break
+ # end
+ case 'white':
+ continue
+ # nothing happens
+ return (x, y)
Можеш да unpack-неш:
x, y = point
Този вариант за проверка работи, но не бих базирал логиката си на стрингови литерали. Може би по-удачен ватиант е вместо този string,в
hex_colors
да сложиш инкрементора и директно да го използваш"x/y += saturation
Не е нужно да пускаш ново решение. Просто идея за следващия път.
Само напомням, че можеш да пропуснеш скобите.