Решение на Навигация на Piet от Никол Казанджиева

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

Към профила на Никол Казанджиева

Резултати

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

Код

def calculate_final_vector(starting_point, directions):
if not isinstance(starting_point, tuple) or not isinstance(directions, list):
return "Please enter valid arguments!"
if len(starting_point) != 2:
return "Please enter valid coordinates of the starting point!"
possible_directions = ['FFFFFF', '000000', '00C000', 'FFC0C0', 'C0FFC0', 'C00000',
'FFFFC0', '0000C0', 'C0C000', 'C0C0FF']
for i in range(0, len(directions)):

Ако ще обхождаш колекция, обхождай елементите, а не техните индекси. Овен, разбира се, ако това не е по-удобно, но тук не е. for direction in directions:...

directions[i] = directions[i].upper()
if directions[i] not in possible_directions:
return "Invalid direction!"
moving_point = [starting_point[0], starting_point[1]]

Ако си решил да пазиш данните в list, за да се справиш с mutability-то, можеш да го направиш с moving_point = list(starting_point). Аз бих използвал две отделни променливи: x, y = starting_point

Не е нужно да пускаш ново решение. Просто споделям информация.

for direction in directions:
if direction == 'FFFFFF':
continue
elif direction == '000000':
return moving_point[0], moving_point[1]
elif direction == '00C000' or direction == 'FFC0C0':
moving_point[0] += 1
elif direction == 'C0FFC0' or direction == 'C00000':
moving_point[0] -= 1
elif direction == 'FFFFC0' or direction == '0000C0':
moving_point[1] -= 1
elif direction == 'C0C000' or direction == 'C0C0FF':
moving_point[1] += 1
return moving_point[0], moving_point[1]

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

........
----------------------------------------------------------------------
Ran 8 tests in 0.084s

OK

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

Никол обнови решението на 23.10.2022 03:22 (преди над 1 година)

+def calculate_final_vector(starting_point, directions):
+ if not isinstance(starting_point, tuple) or not isinstance(directions, list):
+ return "Please enter valid arguments!"
+ if len(starting_point) != 2:
+ return "Please enter valid coordinates of the starting point!"
+
+ possible_directions = ['FFFFFF', '000000', '00C000', 'FFC0C0', 'C0FFC0', 'C00000',
+ 'FFFFC0', '0000C0', 'C0C000', 'C0C0FF']
+
+ for i in range(0, len(directions)):

Ако ще обхождаш колекция, обхождай елементите, а не техните индекси. Овен, разбира се, ако това не е по-удобно, но тук не е. for direction in directions:...

+ directions[i] = directions[i].upper()
+ if directions[i] not in possible_directions:
+ return "Invalid direction!"
+
+ moving_point = [starting_point[0], starting_point[1]]

Ако си решил да пазиш данните в list, за да се справиш с mutability-то, можеш да го направиш с moving_point = list(starting_point). Аз бих използвал две отделни променливи: x, y = starting_point

Не е нужно да пускаш ново решение. Просто споделям информация.

+
+ for direction in directions:
+ if direction == 'FFFFFF':
+ continue
+ elif direction == '000000':
+ return moving_point[0], moving_point[1]
+ elif direction == '00C000' or direction == 'FFC0C0':
+ moving_point[0] += 1
+ elif direction == 'C0FFC0' or direction == 'C00000':
+ moving_point[0] -= 1
+ elif direction == 'FFFFC0' or direction == '0000C0':
+ moving_point[1] -= 1
+ elif direction == 'C0C000' or direction == 'C0C0FF':
+ moving_point[1] += 1
+
+ return moving_point[0], moving_point[1]