Добрый вечер. Условие:
(Оффтоп)
Нa вхoд пoдаётся пoследoвательность симвoлoв, пeрвый симвoл - тoт кoтoрым надo рисoвать траектoрию, пoследующие: < > V укaзывают нaпрaвление движeния
Задачу я решил, но решал семь часов и код не является эталоном понятности и элегантности, думаю заново решить задачу возможно проще чем в моём решении разобраться
(Оффтоп)
Код:
point = way[0]
print(point, end='')
right_pos = 0
left_pos = 0
for i in range(1, len(way)):
sym = way[i]
if sym == '>':
print(point, end='')
right_pos += 1
if sym == 'V':
print()
if i == len(way) - 1:
for i in range(right_pos):
print(end=' ')
print(point, end='')
elif way[i + 1] != '<':
for i in range(right_pos):
print(end=' ')
print(point, end='')
if sym == '<':
left_pos += 1
if i == len(way) - 1:
for i in range(right_pos - left_pos):
print(' ', end='')
for i in range(right_pos - left_pos,
right_pos + 1):
print(point, end='')
right_pos -= left_pos
left_pos = 0
elif way[i + 1] != '<':
for i in range(right_pos - left_pos):
print(' ', end='')
for i in range(right_pos - left_pos,
right_pos + 1):
print(point, end='')
right_pos -= left_pos
left_pos = 0
Кратко о моём решении:
(Оффтоп)
Вывод на экран сразу осуществляется только в случае символа >
В случае символа V вывод (кроме перевода строки) осуществляется только если это последний символ или следующий символ после него не является символом <
И случай с символом < самый сложный, идёт подсчёт количества таких символов подряд, а вывод осуществляется только если это последний символ или следующий символ не является символом <
Меня огорчает сложность моего решения, код намного сложнее кода предыдущей задачи того же урока оцениваемой тем же количеством баллов (шифр Цезаря):
(Оффтоп)
Код:
step = int(input())
string = input()
for symbol in string:
num = ord(symbol)
if num >= ord('а') and num <= ord('я'):
num += step
num -= ord('а')
num %= 32
num += ord('а')
elif num >= ord('А') and num <= ord('Я'):
num += step
num -= ord('А')
num %= 32
num += ord('А')
print(chr(num), end='')
Это уже третья подобная задача за три недели курса, намного отличающаяся от остальных по уровню сложности. Одна из них ещё и в тесте с ограничением времени мне попалась, поэтому тест удовлетворительно я не написал, несмотря на то что довольно легко решил все задачи следующие до теста. Я не уверен, это такие своеобразные "гробы" чтобы "курсанты" слишком умными себя не чувствовали, или это у меня мышление забаговано и не всегда способно найти очевидный лёгкий путь даже после многочасовых размышлений?
UPD: Что-то код отобразился иначе чем я ожидал
UPD 2: Пока использую другой тег, код без подсветки