Этот вопрос вдохновлен вопросом Кевина Круйссена .
Теперь, когда ковер разложен, мы хотим его свернуть. Ваша задача - написать программу, которая принимает строку и возвращает спираль, сделанную из этой строки (представляющую собой свернутый ковер, если смотреть со стороны).
Процедура одного шага раскатывания ковра заключается в следующем. Есть пример, чтобы проиллюстрировать, что я имею в виду. Обратите внимание, что пример начинается с частично свернутого ковра для лучшего понимания:
ac
rpet
- отделите «голову» от «хвоста» ковра: голова - это то, что было свернуто до сих пор, хвост - это то, что остается катиться.
Head: ac Tail:
rp et
- Поверните головку на 90 ° по часовой стрелке.
Rotated head: ra Tail (unchanged):
pc et
- если ширина новой головы (здесь
2
) меньше или равна длине хвоста (здесь2
)- затем положить его на хвост
- иначе, ковер (как это было в начале шага) был свернут
New carpet: ra
pc
et
Повторите процедуру столько раз, сколько необходимо.
Два примера, показывающие все этапы ковроткачества:
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
Некоторые точности:
- Вам не нужно показывать все промежуточные шаги, только свернутый ковер (например, если вы найдете не итеративный способ вычисления результата, он идеален). Кроме того, вам не нужно печатать начальные пробелы, в приведенных выше примерах я только показываю их для выравнивания.
- Ввод - это строка, список / массив символов
- Вывод выводится на стандартный вывод или в файл.
- Входные данные хороши: длина по крайней мере 1 символ, и максимум константа достаточно мала, чтобы не вызывать проблем, но вы не можете использовать эту константу в своей программе; содержимое строки - только хорошие символы ([a-zA-Z0-9]), кодирование по вашему усмотрению.
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах. Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также добавьте пояснение к своему ответу, если считаете, что это необходимо.
ProgrammingPuzzlesAndCodeGolf
- конечная длина хвоста больше 1 споткнула меня.
print
внутри a lambda
.