Решение на Навигация на Piet от Тина Томова

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

Към профила на Тина Томова

Резултати

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

Код

def calculate_final_vector(start_point, *args):

Излишно дефинираш args със астериск, защото по-късно взимаш само първата стойност на този списък от аргументи. По-удобно за клиента на кода ти би било да знае, че не е подал правилния броя аргументи, ако подаде повече. В момента ти просто тихо игнорираш останалите аргументи (ако има такива).

x, y = start_point
white = "ffffff"
black = "000000"
dark_red = "c00000"
light_red = "ffc0c0"
dark_blue = "0000c0"
light_blue = "c0c0ff"
dark_yellow = "c0c000"
light_yellow = "ffffc0"
dark_green = "00c000"
light_green = "c0ffc0"
colors=args[0]
for color in colors:
color = color.lower()
if color == white:
continue
elif color == black:
break
elif color == dark_red:
x-=1
elif color == light_red:
x+=1
elif color == dark_blue:
y-=1
elif color == light_blue:
y+=1
elif color == dark_yellow:
y+=1
elif color == light_yellow:
y-=1
elif color == dark_green:
x+=1
elif color == light_green:
x-=1
else:
continue
final_point = (x, y)
return final_point

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

........
----------------------------------------------------------------------
Ran 8 tests in 0.097s

OK

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

Тина обнови решението на 24.10.2022 01:10 (преди над 1 година)

+def calculate_final_vector(start_point, *args):
+ x, y = start_point
+ white, black, dark_red, light_red, dark_blue, light_blue, dark_yellow, light_yellow, dark_green, light_green = ("ffffff", "000000", "c00000", "ffc0c0", "0000c0", "c0c0ff", "c0c000", "ffffc0", "00c000", "c0ffc0")
+ colors=args[0]
+ for color in colors:
+ color = color.lower()
+ if color == white:
+ continue
+ elif color == black:
+ break
+ elif color == dark_red:
+ x-=1
+ elif color == light_red:
+ x+=1
+ elif color == dark_blue:
+ y-=1
+ elif color == light_blue:
+ y+=1
+ elif color == dark_yellow:
+ y+=1
+ elif color == light_yellow:
+ y-=1
+ elif color == dark_green:
+ x+=1
+ elif color == light_green:
+ x-=1
+ else:
+ continue
+ final_point = (x, y)
+ return final_point
+

Тина обнови решението на 24.10.2022 01:22 (преди над 1 година)

def calculate_final_vector(start_point, *args):

Излишно дефинираш args със астериск, защото по-късно взимаш само първата стойност на този списък от аргументи. По-удобно за клиента на кода ти би било да знае, че не е подал правилния броя аргументи, ако подаде повече. В момента ти просто тихо игнорираш останалите аргументи (ако има такива).

x, y = start_point
- white, black, dark_red, light_red, dark_blue, light_blue, dark_yellow, light_yellow, dark_green, light_green = ("ffffff", "000000", "c00000", "ffc0c0", "0000c0", "c0c0ff", "c0c000", "ffffc0", "00c000", "c0ffc0")
+ white = "ffffff"
+ black = "000000"
+ dark_red = "c00000"
+ light_red = "ffc0c0"
+ dark_blue = "0000c0"
+ light_blue = "c0c0ff"
+ dark_yellow = "c0c000"
+ light_yellow = "ffffc0"
+ dark_green = "00c000"
+ light_green = "c0ffc0"
colors=args[0]
for color in colors:
color = color.lower()
if color == white:
continue
elif color == black:
break
elif color == dark_red:
x-=1
elif color == light_red:
x+=1
elif color == dark_blue:
y-=1
elif color == light_blue:
y+=1
elif color == dark_yellow:
y+=1
elif color == light_yellow:
y-=1
elif color == dark_green:
x+=1
elif color == light_green:
x-=1
else:
continue
final_point = (x, y)
- return final_point
-
+ return final_point