Решение на Навигация на Piet от Йолина Вълчева

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

Към профила на Йолина Вълчева

Резултати

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

Код

dictionary_with_directions = {
'C0FFC0': [-1,0],

Кортежите са по-подходящи от списъците за конкретния случай, защото описваме нещо с константа дължина. Моля оставяй интервал след запетаите.

'FFFFC0': [0,-1],
'FFC0C0': [1,0],
'C0C0FF': [0,1],
'00C000': [1,0],
'C0C000': [0,1],
'C00000': [-1,0],
'0000C0': [0,-1],
'FFFFFF': [0,0],
'000000': 'end'
}
def calculate_final_vector(start,directions = [], *args):

След запетаята е прието да има интервал. А около = не, защото е стойност по подразбиране на аргумент. В останалите случаи се слагат интервали около равното, но не и в списък с аргументи. *args е излишно, защото така или иначе няма да го използваш. По-добре е клиентът на кода да е наясно, че не подава правилния брой аргументи.

x,y = start
for direction in directions:
# Making the keys to upper case values
# in order to be able to search in the dictionary case insensitive
direction = direction.upper()
if dictionary_with_directions[direction] == 'end':
break
x = x + dictionary_with_directions[direction][0]
y = y + dictionary_with_directions[direction][1]
end = x , y
return end
# Function call with example values
result = calculate_final_vector((1, 1), ['00C000', 'C0FFC0', 'C00000', 'FFFFFF', 'C0C000'])
print(result)

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

(0, 2)
........
----------------------------------------------------------------------
Ran 8 tests in 0.091s

OK

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

Йолина обнови решението на 25.10.2022 02:08 (преди над 1 година)

+dictionary_with_directions = {
+ 'C0FFC0': [-1,0],
+ 'FFFFC0': [0,-1],
+ 'FFC0C0': [1,0],
+ 'C0C0FF': [0,1],
+ '00C000': [1,0],
+ 'C0C000': [0,1],
+ 'C00000': [-1,0],
+ '0000C0': [0,-1],
+ 'FFFFFF': [0,0],
+ '000000': 'end'
+}
+
+def calculate_final_vector(start,directions = [], *args):
+ x,y = start
+ for direction in directions:
+ # Making the keys to upper case values
+ # in order to be able to search in the dictionary case insensitive
+ direction = direction.upper()
+ if dictionary_with_directions[direction] == 'end':
+ break
+ x = x + dictionary_with_directions[direction][0]
+ y = y + dictionary_with_directions[direction][1]
+ end = x , y
+ return end
+
+
+result = calculate_final_vector((1, 1), ['00C000', 'C0FFC0', 'C00000', 'FFFFFF', 'C0C000'])
+
+print(result)

Йолина обнови решението на 25.10.2022 02:13 (преди над 1 година)

dictionary_with_directions = {
'C0FFC0': [-1,0],

Кортежите са по-подходящи от списъците за конкретния случай, защото описваме нещо с константа дължина. Моля оставяй интервал след запетаите.

'FFFFC0': [0,-1],
'FFC0C0': [1,0],
'C0C0FF': [0,1],
'00C000': [1,0],
'C0C000': [0,1],
'C00000': [-1,0],
'0000C0': [0,-1],
'FFFFFF': [0,0],
'000000': 'end'
}
def calculate_final_vector(start,directions = [], *args):

След запетаята е прието да има интервал. А около = не, защото е стойност по подразбиране на аргумент. В останалите случаи се слагат интервали около равното, но не и в списък с аргументи. *args е излишно, защото така или иначе няма да го използваш. По-добре е клиентът на кода да е наясно, че не подава правилния брой аргументи.

x,y = start
for direction in directions:
# Making the keys to upper case values
# in order to be able to search in the dictionary case insensitive
direction = direction.upper()
if dictionary_with_directions[direction] == 'end':
break
x = x + dictionary_with_directions[direction][0]
y = y + dictionary_with_directions[direction][1]
end = x , y
return end
-
+# Function call with example values
result = calculate_final_vector((1, 1), ['00C000', 'C0FFC0', 'C00000', 'FFFFFF', 'C0C000'])
-
print(result)