Вступление
Напишите программу для вывода исходящей спирали знаменитой панграммы в соответствии с заданными правилами.
Вызов
Панграмма это предложение , используя каждую букву данного алфавита , по крайней мере один раз. Одна из самых известных панграмм широко используется в средстве просмотра шрифтов Windows, а именно: « Быстрая коричневая лиса перепрыгивает через ленивую собаку ». Задача состоит в том, чтобы вывести спираль на основе этого текста.
Ваша задача вывести этот точный текст:
heeeeellllllllllllazzzzzzzzzzz
hummmmmmmmmmmmmppppppppppppppy
hubrrrrrrrrrrrrrrrrrrooooooosy
hukyddddoooooooooooooooggggwsy
hukyveeeeerrrrrrrrrrrrrrrrtwsy
hukyvxjjjjjjjjjjuuuuuuuuuttwsy
hukyvxkbbrrrrrrrrrrrrrrrmttwsy
hukyvxkogggggggttttttttomttwsy
tukyvokoellllllllllllahomttwsy
tukyvokoeovvvvvvvvvvvzhomttwsy
tukyvocoeoummmmmmmmmezhomttwsy
tukyvocoeoufooooooopezhomttwsy
tukyvocohoufroooooxpezhomttwsy
tukyvoiohoufrquuuwxpezhomttwsy
tucyvoiohoufbqttiwxpezhomttwsy
tucyvoiohoufbeehiwxprzhomttwsy
tucyvoiohoufkccciwxprzeomttwsy
tjiyvoidhounnnnnnwxprzeomttwsy
tjiyvoidhojjjjjjjjxprzeomttwsy
tjiyvoidhssssssssssprzeopttwsy
tjiyvoidttttttttttttrzeopttwsy
tjiyvoiyyyyyyyyyyyyyyzqopttwoy
tjiyvouuuuuuuuuuuuuuuuqwpttwoy
tjiyvffffnnnnnnnnnnnnnnwpttwoy
tjiyossssssssssssssssssspthwoy
tjizzzzalllllllllllleeeeehhwoy
tjuuqqqqqqqqqqqqqqqqqeeeeehnod
txxxxxoooooooooooooooffffffnod
reeeeevvvvvvvvvvvvvvvvvvvvvvod
gggggggoooooooooooooood
Вот как это генерируется,
- Был ревностный лис, которому понравилась панграмма: «Быстрая коричневая лиса перепрыгивает через ленивую собаку». Однажды он оказался в центре внешней спирали и решил прыгнуть в нее и рисовать.
- Он хотел бы пройтись по панграмме от начала до конца, и если буква является n-й буквой в алфавите, он хотел бы нарисовать ее n раз.
- Однако лиса была не очень хороша в поворотах на поворотах, поэтому, достигнув каждого угла, он также должен был остановиться и перейти к следующей букве.
- Он также решил повторить панграмму трижды , чтобы подчеркнуть , что он шустрая лиса.
- Ваша задача - показать, как будет выглядеть спираль после того, как лиса раскрасит все эти буквы.
(Обычная версия без рассказа)
Знаменитая панграмма «Быстрая коричневая лиса перепрыгивает через ленивую собаку» повторяется трижды, с удалением пробелов и всех букв в нижнем регистре, чтобы генерировать
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
Спираль начинается от центра и начинается с буквы «т», начинается с движения вправо и идет наружу по часовой стрелке. Если текущий символ является n-й буквой в алфавите, то он переключается на следующий символ всякий раз, когда
- спираль достигает угла, или
- текущие буквы печатаются ровно n раз.
Чтобы лучше проиллюстрировать это, я объясню, как генерируется спираль, связанная с первыми тремя словами «thequickbrown».
rooooo
rquuuw
bqttiw
beehiw
kccciw
nnnnnnw
Лиса начинает с «т», идет направо, достигает 1-го угла, красит его «т», затем переключается на «ч» и спускается, достигает 2-го угла, переключается на «е» и идет влево, достигает 3-й угол, переключается на «q» и идет вверх, достигает 4-го угла, переключается на «u» и идет направо, достигает угла и переключается на «i», идет вниз, достигает угла и переключается на «c», идет влево успешно рисует 3 «с» до достижения следующего угла , переключается на «к» и идет влево , сразу достигает угла, переключается на «b» и идет вверх, рисует 2 «б» до достижения следующий угол, переключается на «р»и идет вверх , достигает угла и переключается на «о», идет направо, затем «w», вниз, «n», влево.
Спекуляции
Вы можете принять необязательный ввод, который содержит любую стандартную форму строки
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
Ваш вывод должен быть отформатирован как строка и должен идти в STDOUT вместо файлов или STDERR, с символами новой строки, размещенными правильно. Заголовок и конечные пустые строки не имеют значения. Заголовок и пробел в каждой строке разрешены, но должны быть согласованы. Поэтому, если вы добавите 5 пробелов перед одной строкой данного текста, вам нужно будет добавить ровно 5 пробелов перед каждой строкой, чтобы спираль выглядела одинаково.
Это код-гольф , выигрывает наименьшее количество байтов.
Как обычно, здесь применяются лазейки по умолчанию .
Пояснения приветствуются, хотя и не обязательно.
Название отредактировано, чтобы сделать его панграммой для комментария caird coinheringaahing.
Ленивый пес слишком ленив, чтобы появляться в истории.
Я стремлюсь создать строковый вызов, в котором буква для вывода не может быть вычислена с помощью простых функций координат.
источник
Ответы:
Stax ,
35343332 байтаЗапустите и отладьте его онлайн
Stax - это язык, над которым я работаю около 6 месяцев. Это первый публичный гольф с ним. Давайте приступим к делу.
Stax обычно пишется в наборе печатных символов ASCII. Это 34-байтовое представление упаковано в вариант набора символов CP437. Соответствующее представление ascii
Stax - это язык, основанный на стеке, но он имеет два стека данных: «основной» и «входной». Большинство операций используют основной стек, но ввод начинается со стека ввода. Инструкции Stax - это, в основном, одно или двухсимвольные последовательности ascii. Большинство из них перегружены, то есть их поведение определяется несколькими верхними значениями в стеке.
На высоком уровне эта программа строит сетку путем многократного добавления строк в последний ряд. Когда последний ряд заполняется, он поворачивает сетку по часовой стрелке. В конце он отражает сетку горизонтально. Более подробно программа работает так.
источник
Древесный уголь ,
664036 байтПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать: Сохранено 16 байтов, принимая текст в качестве ввода. Объяснение:
Начните с 2
t
с по какой-то причине.Обведите все буквы в панграмме.
Мы уже достигли угла?
Двигайтесь вниз (или как бы там ни было в следующем направлении) на одну строку.
Поверните направление печати на 90 ° по часовой стрелке.
Рассчитайте длину следующей стороны.
Закончите исправление положения курсора. (Древесный уголь предпочел бы, чтобы сторона заканчивалась как раз перед углом, чтобы вы вращались на самом углу.)
Цикл столько раз, сколько текущей буквы в алфавите.
Если мы не достигли угла,
Уменьшите счет и распечатайте текущее письмо.
источник
Рубин ,
217212209208 байтПопробуйте онлайн!
Тратит довольно много времени на управление указателями, так что может быть место для большего количества игры в гольф.
-5 байт: утроить панграмму перед вводом. Благодаря Вэйцзюнь Чжоу .
-3 байта: добавьте строку ввода и обрежьте последний участок, вместо того чтобы создавать последний участок с нуля.
-1 байт: использовать
&&
вместо троичного оператора с однозначным значением.Объяснение:
источник
r
иl
лямбды. Судя по текущим ответам, последний этап кажется источником проблем, хотя это было не тогда, когда я написал свой фрагмент кода C, чтобы сгенерировать пример выходных данных ...s*=3
целом , а также опустить0
в?:
операторе. tio.run/…0
Хотя мне это нужно , иначе Ruby будет извлекатьc+=1
из следующей строки и выполнять ее только большую часть времени. И хороший вызов!