Решение на Навигация на Piet от Кристияна Николова
Към профила на Кристияна Николова
Резултати
- 10 точки от тестове
- 0 бонус точки
- 10 точки общо
- 8 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
........ ---------------------------------------------------------------------- Ran 8 tests in 0.096s OK
История (3 версии и 5 коментара)
+valid_colours = ['c0ffc0', 'C0FFC0', 'FFFFC0',
+ 'ffffc0', 'FFC0C0', 'ffc0c0',
+ 'C0C0FF', 'c0c0ff', '00C000',
+ '00c000', 'C0C000', 'c0c000',
+ 'C00000', 'c00000', '0000C0',
+ '0000c0', 'FFFFFF', 'ffffff',
+ '000000']
+def calculate_final_vector(vector, colours):
+ x = vector[0]
+ y = vector[1]
+
+ for colour in colours:
+ if colour not in valid_colours:
+ print("Invalid colour.")
+ break
+ if colour == '00C000' or colour == '00c000':
+ x += 1
+ elif colour == 'C0FFC0' or colour == 'c0ffc0':
+ x -= 1
+ elif colour == 'FFFFC0' or colour == 'ffffc0':
+ y -= 1
+ elif colour == 'C0C000' or colour == 'c0c000':
+ y += 1
+ elif colour == 'FFC0C0' or colour == 'ffc0c0':
+ x += 1
+ elif colour == 'C00000' or colour == 'c00000':
+ x -= 1
+ elif colour == 'C0C0FF' or colour == 'c0c0ff':
+ y += 1
+ elif colour == '0000C0' or colour == '0000c0':
+ y -= 1
+ elif colour == '000000':
+ break
+ elif colour == 'FFFFFF' or colour == 'ffffff':
+ continue
+ return (x,y)
Кристияна обнови решението на 23.10.2022 18:45 (преди около 2 години)
-valid_colours = ['c0ffc0', 'C0FFC0', 'FFFFC0',
- 'ffffc0', 'FFC0C0', 'ffc0c0',
- 'C0C0FF', 'c0c0ff', '00C000',
- '00c000', 'C0C000', 'c0c000',
- 'C00000', 'c00000', '0000C0',
- '0000c0', 'FFFFFF', 'ffffff',
- '000000']
+valid_colours = ['C0FFC0' , 'FFFFC0' , 'FFC0C0',
+ 'C0C0FF' , '00C000' , 'C0C000',
+ 'C00000' , '0000C0' , 'FFFFFF',
+ '000000']
def calculate_final_vector(vector, colours):
Отделяй дефиницията на функция от останалия код с един празен ред. #PEP8
x = vector[0]
Можеш да unpack_неш:
x, y = vector
y = vector[1]
+ colours = [c.upper() for c in colours]
Не е добра практика да презаписваш името, което използваш за да хванеш input-а на функцията. Нека просто бъде colours_upper
.
for colour in colours:
if colour not in valid_colours:
print("Invalid colour.")
break
- if colour == '00C000' or colour == '00c000':
+ if colour == '00C000':
Моля, недей да подравняваш операторите с тези от останалите редове. Да, в някой случаи помага за добре четим код, но е в разрез с PEP8 и с времето тази практика само вложава качеството на кода (представи си преправяне на код, който е подравнен по този начин - пипаш един ред, а трябва да оправиш подравняването на 100).
*Става въпрос за трите интервала преди ==
x += 1
- elif colour == 'C0FFC0' or colour == 'c0ffc0':
+ elif colour == 'C0FFC0':
x -= 1
- elif colour == 'FFFFC0' or colour == 'ffffc0':
+ elif colour == 'FFFFC0':
y -= 1
- elif colour == 'C0C000' or colour == 'c0c000':
+ elif colour == 'C0C000':
y += 1
- elif colour == 'FFC0C0' or colour == 'ffc0c0':
+ elif colour == 'FFC0C0':
x += 1
- elif colour == 'C00000' or colour == 'c00000':
+ elif colour == 'C00000':
x -= 1
- elif colour == 'C0C0FF' or colour == 'c0c0ff':
+ elif colour == 'C0C0FF':
y += 1
- elif colour == '0000C0' or colour == '0000c0':
+ elif colour == '0000C0':
y -= 1
elif colour == '000000':
break
- elif colour == 'FFFFFF' or colour == 'ffffff':
+ elif colour == 'FFFFFF':
continue
return (x,y)
Можеш да пропуснеш скобите. Освен това, прието е след всяка запетая в Python да има интервал.
return x, y
Кристияна обнови решението на 24.10.2022 21:27 (преди около 2 години)
valid_colours = ['C0FFC0' , 'FFFFC0' , 'FFC0C0',
'C0C0FF' , '00C000' , 'C0C000',
'C00000' , '0000C0' , 'FFFFFF',
'000000']
def calculate_final_vector(vector, colours):
- x = vector[0]
- y = vector[1]
- colours = [c.upper() for c in colours]
- for colour in colours:
+ x, y = vector
+ colours_upper = [c.upper() for c in colours]
+
+ for colour in colours_upper:
if colour not in valid_colours:
print("Invalid colour.")
break
- if colour == '00C000':
+ if colour == '00C000':
x += 1
elif colour == 'C0FFC0':
x -= 1
elif colour == 'FFFFC0':
y -= 1
elif colour == 'C0C000':
y += 1
elif colour == 'FFC0C0':
x += 1
elif colour == 'C00000':
x -= 1
elif colour == 'C0C0FF':
y += 1
elif colour == '0000C0':
y -= 1
elif colour == '000000':
break
elif colour == 'FFFFFF':
continue
- return (x,y)
+ return x, y
Отделяй дефиницията на функция от останалия код с един празен ред. #PEP8