Код на этом сайте быстро истощается. Нам нужно инвестировать в возобновляемые источники. Поэтому вы должны написать программу, которая берет строку и преобразует ее в ветряную мельницу.
Соревнование
Давайте возьмем в качестве примера простую ветряную мельницу. Возьми струну abc
. В этом случае ось является центральным персонажем b
. Поскольку длина строки составляет 3 символа, каждый вывод будет иметь ровно три строки и три символа в ширину. Вот ваш вывод на шаге 1. (Обратите внимание на пробел)
азбука
Чтобы получить следующий шаг, поверните каждый символ вокруг оси по часовой стрелке. Вот шаг 2:
a б с
Вот шаги 3-8:
б с
б с
сЬа
с б
с б
с б
И на девятом шаге он проходит полный круг к исходной строке:
азбука
Обратите внимание, что все время b
оставались на одном месте. Это потому, что b
это основной персонаж. Вы должны написать программу или функцию, которая принимает строку в качестве входных данных и многократно печатает эту последовательность, пока программа не будет закрыта.
Разъяснения
Все входные строки будут иметь нечетное количество символов. (Чтобы каждая ветряная мельница имела опору)
Чтобы упростить задачу, все строки будут содержать только прописные и строчные буквы алфавита.
Вывод должен быть
len(input_string)
широким и высоким.Неважно, с какого шага последовательности вы начинаете, до тех пор, пока вы продолжаете вращаться и зацикливаться вечно.
Еще тест IO:
Поскольку сообщение уже довольно длинное, вот ссылка на вывод для "windmill":
Примечание:
Поскольку предполагается, что это ветряная мельница, было бы замечательно, если бы вы включили некоторый шаблонный код для его анимации с небольшой задержкой или вводом пользователем между каждым шагом. Однако, поскольку некоторые языки не имеют встроенных временных параметров, это не обязательно. Конкурирующая часть вашей заявки может просто напечатать последовательность как можно быстрее.
Ответы:
MATL ,
353321 байтСледующее оживит мельницу ( 26 байт )
Онлайн демо
В этой версии
Xx
указывается очистка дисплея и1Y.
пауза в 1 секунду.объяснение
Основная идея заключается в том, что мы хотим создать две версии ввода. «Ортогональная» версия
И «диагональная» версия
Мы помещаем эти две версии в стек. Каждый раз в цикле мы меняем порядок стеков и вращаем верхний по часовой стрелке.
источник
JavaScript (ES6), 291 байт
источник
05AB1E ,
8853 байтаКод:
Попробуйте онлайн! , Удостоверьтесь, что нажали кнопку «убить» сразу после запуска, потому что она входит в бесконечный цикл.
источник
Рубин,
122119 байтВерсия без сна со сном, в тестовой программе
Вращение не очень убедительно при полной высоте консоли. Но если вы уменьшите высоту до длины входной строки, вращение будет намного более убедительным.
источник
MATL ,
4744 байтаПопробуйте онлайн! (но убей это немедленно, бесконечный цикл)
С 1-секундной паузой: 56 байт
Попробуйте онлайн! (опять же, бесконечный цикл)
источник
Python 3 , 193 байта
Ungolfed
Рекурсивный, 177 байт
(сбой через несколько секунд)
Ungolfed
Другое решение, 268 байт
Ungolfed
источник
Pyth, 48 байтов
Попробуйте онлайн! (Примечание: это версия, которая не зацикливается вечно, потому что это может вызвать сбой интерпретатора.)
Бесстыдно переведено из решения Python 3 @ByHH .
Как это устроено:
источник