Спасибо @KritixiLithos за помощь в решении этой проблемы!
V - это язык программирования, который я написал, чтобы я мог использовать и расширять vim для задач, связанных с использованием кода. Самый первый коммит был 3 марта 2016 года, то есть сегодня V исполняется один год! Woo-Hoo
За первый год существования V было 176 коммитов от четырех разных участников, 140 ответов от 12 разных пользователей и слишком много неработающих дублирующих операторов, чтобы сосчитать . У него есть онлайн-переводчик , великодушно поддерживаемый @Dennis, который с декабря работал почти 8 000 раз .
Давайте вызовем отпраздновать день рождения V! Поскольку большинство функций в V разработаны с учетом работы со строками и ascii-art , просто кажется естественным, что любой вызов празднованию V должен быть связан с ascii art. Таким образом, ваша задача на сегодня - принять слово в качестве входных данных и изменить это слово в форме буквы V. Например, вход «Hello» должен дать следующий V:
Hello olleH
Hello olleH
Hello olleH
Hello olleH
Hello olleH
HellolleH
HellleH
HeleH
HeH
H
Вот некоторые подробности о том, как должен выглядеть ваш V. Если длина входной строки составляет n символов, значение V должно быть n*2
высотой строки. Самая первая строка должна состоять из:
<input string><(n*2) - 1 spaces><input string reversed>
В каждой новой строке один пробел добавляется в начало, и две стороны строки перемещаются навстречу друг другу, удаляя все перекрывающиеся символы. До самой последней строки, которая является только первым символом ввода. Конечный пробел в каждой строке является приемлемым, также допускается завершающий символ новой строки.
Вы можете предположить, что ввод всегда будет печатным ASCII без каких-либо пробелов в нем, и вы можете принимать ввод и вывод любым разумным способом. Вот еще несколько примеров входных данных:
Happy:
Happy yppaH
Happy yppaH
Happy yppaH
Happy yppaH
Happy yppaH
HappyppaH
HapppaH
HapaH
HaH
H
Birthday:
Birthday yadhtriB
Birthday yadhtriB
Birthday yadhtriB
Birthday yadhtriB
Birthday yadhtriB
Birthday yadhtriB
Birthday yadhtriB
Birthday yadhtriB
BirthdayadhtriB
BirthdadhtriB
BirthdhtriB
BirthtriB
BirtriB
BiriB
BiB
B
V!:
V! !V
V! !V
V!V
V
~:
~ ~
~
Конечно, поскольку это код-гольф , стандартные лазейки запрещены, и ваша цель - написать максимально короткую программу для выполнения этой задачи. Удачного игры в гольф!
Что бы это ни стоило, у меня есть слабость к ответам vim, поэтому воображаемые бонусные баллы за использование vim или V, хотя любой язык приемлем. :)