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

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

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

Резултати

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

Код

def calculate_final_vector(start_points, direction):
x, y = start_points
for d in direction:
d = d.lower()
match d:
case 'c0ffc0':
x += -1
case 'ffffc0':
y += -1
case 'ffc0c0':
x -= -1
case 'c0c0ff':
y -= -1
case '00c000':
x += 1
case 'c0c000':
y += 1
case 'c00000':
x -= 1
case '0000c0':
y -= 1
case '000000':
break
case _:
pass
return x, y

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

........
----------------------------------------------------------------------
Ran 8 tests in 0.081s

OK

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

Надежда обнови решението на 23.10.2022 12:05 (преди над 1 година)

+def calculate_final_vector(start_points, direction):
+ x, y = start_points
+ for d in direction:
+ if d.lower() == 'c0ffc0':
+ x += -1
+ if d.lower() == 'ffffc0':
+ y += -1
+ if d.lower() == 'ffc0c0':
+ x -= -1
+ if d.lower() == 'c0c0ff':
+ y -= -1
+ if d.lower() == '00c000':
+ x += 1
+ if d.lower() == 'c0c000':
+ y += 1
+ if d.lower() == 'c00000':
+ x -= 1
+ if d.lower() == '0000c0':
+ y -= 1
+ if d.lower() == 'ffffff':
+ pass
+ if d.lower() == '000000':
+ break
+
+ return x, y

Надежда обнови решението на 23.10.2022 12:05 (преди над 1 година)

def calculate_final_vector(start_points, direction):
x, y = start_points
+
for d in direction:
if d.lower() == 'c0ffc0':

При този вариант ще изпълниш lower дестина пъти. По-добре да го направиш lower в началото и след това да правиш проверките, или... още по-добре е да използваш elif, за да не правиш излишни проверки при намерен резултат. От гледна точка на функционалността, това няма да промени нищо, така че не е нужно да пускаш ново решение. Просто имай предвид тези допълнителни и излишни операции, които с времето биха се натрупали.

x += -1
if d.lower() == 'ffffc0':
y += -1
if d.lower() == 'ffc0c0':
x -= -1
if d.lower() == 'c0c0ff':
y -= -1
if d.lower() == '00c000':
x += 1
if d.lower() == 'c0c000':
y += 1
if d.lower() == 'c00000':
x -= 1
if d.lower() == '0000c0':
y -= 1
if d.lower() == 'ffffff':
pass
if d.lower() == '000000':
break
return x, y

Надежда обнови решението на 25.10.2022 09:28 (преди над 1 година)

def calculate_final_vector(start_points, direction):
x, y = start_points
for d in direction:
- if d.lower() == 'c0ffc0':
+ d = d.lower()
+ if d == 'c0ffc0':
x += -1
- if d.lower() == 'ffffc0':
+ elif d == 'ffffc0':
y += -1
- if d.lower() == 'ffc0c0':
+ elif d == 'ffc0c0':
x -= -1
- if d.lower() == 'c0c0ff':
+ elif d == 'c0c0ff':
y -= -1
- if d.lower() == '00c000':
+ elif d == '00c000':
x += 1
- if d.lower() == 'c0c000':
+ elif d == 'c0c000':
y += 1
- if d.lower() == 'c00000':
+ elif d == 'c00000':
x -= 1
- if d.lower() == '0000c0':
+ elif d == '0000c0':
y -= 1
- if d.lower() == 'ffffff':
+ elif d == 'ffffff':
pass
- if d.lower() == '000000':
+ else:
break
return x, y

Надежда обнови решението на 25.10.2022 09:34 (преди над 1 година)

def calculate_final_vector(start_points, direction):
x, y = start_points
for d in direction:
d = d.lower()
- if d == 'c0ffc0':
- x += -1
- elif d == 'ffffc0':
- y += -1
- elif d == 'ffc0c0':
- x -= -1
- elif d == 'c0c0ff':
- y -= -1
- elif d == '00c000':
- x += 1
- elif d == 'c0c000':
- y += 1
- elif d == 'c00000':
- x -= 1
- elif d == '0000c0':
- y -= 1
- elif d == 'ffffff':
- pass
- else:
- break
- return x, y
+ match d:
+ case 'c0ffc0':
+ x += -1
+ case 'ffffc0':
+ y += -1
+ case 'ffc0c0':
+ x -= -1
+ case 'c0c0ff':
+ y -= -1
+ case '00c000':
+ x += 1
+ case 'c0c000':
+ y += 1
+ case 'c00000':
+ x -= 1
+ case '0000c0':
+ y -= 1
+ case '000000':
+ break
+ case _:
+ pass
+
+ return x, y