Решение на Навигация на Piet от Кристияна Николова

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

Към профила на Кристияна Николова

Резултати

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

Код

valid_colours = ['C0FFC0' , 'FFFFC0' , 'FFC0C0',
'C0C0FF' , '00C000' , 'C0C000',
'C00000' , '0000C0' , 'FFFFFF',
'000000']
def calculate_final_vector(vector, 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':
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

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

........
----------------------------------------------------------------------
Ran 8 tests in 0.096s

OK

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

Кристияна обнови решението на 23.10.2022 12:06 (преди над 1 година)

+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 (преди над 1 година)

-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):
x = vector[0]
y = vector[1]
+ colours = [c.upper() for c in colours]
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)

Кристияна обнови решението на 24.10.2022 21:27 (преди над 1 година)

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