Это то, что мы назовем тарелкой супа с алфавитом - примерно круглая форма ascii-art с 26 заглавными буквами английского алфавита (AZ), расположенными по часовой стрелке для формирования периметра:
XYZABC
VW DE
U F
T G
S H
RQ JI
PONMLK
Напишите программу, которая принимает один буквенный символ AZ и выводит ту же самую чашу алфавитного супа, так сказать, «повернутую», чтобы входная буква появлялась там, где A
в приведенном выше примере это происходит, а остальная часть алфавита полностью циклически вращается. по часовой стрелке.
Таким образом, результатом для ввода A
будет та же самая оригинальная миска супа из алфавита.
И вывод для ввода B
будет такой:
YZABCD
WX EF
V G
U H
T I
SR KJ
QPONML
Аналогично, результат H
будет:
EFGHIJ
CD KL
B M
A N
Z O
YX QP
WVUTSR
Или для Z
:
WXYZAB
UV CD
T E
S F
R G
QP IH
ONMLKJ
Это должно работать для всех 26 букв, от A до Z.
Подробности:
- Можно предположить, что единственным вводом будет одна буква от A до Z.
- Если удобно, вы можете использовать строчные буквы az для ввода и / или вывода, вы можете даже смешивать и сочетать строчные и прописные буквы.
- Порядок алфавита должен вращаться по часовой стрелке, а не против часовой стрелки.
- Вы должны использовать пробелы, а не что-то еще, чтобы сделать отступ и заполнить суповую тарелку.
- На выходе могут быть начальные или конечные символы новой строки или пробелы, если тарелка супа расположена правильно.
- Обратите внимание, что форма чаши имеет ширину 12 символов и высоту 7, чтобы текст выглядел примерно круглым. Ваши миски должны быть одинаковой формы.
Это кодовый гольф, поэтому выигрывает самый короткий код!
Ответы:
05AB1E , 21 байт
Определяет программуе: AlphabeticChar → Строка
Код:
Попробуйте онлайн!
Сломать:
Объяснение:
Холст (
Λ
) в данном контексте работает как функция со следующей подписью:Параметр в этой ситуации является числом, определяющим направления. В коде это число представляется как , представляющее собой сжатую версию большого числа . Направления обозначаются следующим образом:шаблон 22323445656666676700121222232344565666667670012122
•1못*Ć,ãiDΣ•
Это означает, что большое число представляет следующий шаблон направлений:
С этим контекстом подписи холст перебирает список и записывает символы из в текущем направлении.шаблон длина наполнитель
задается в коде как (в начале кода). Для нам нужна повернутая версия алфавита, которая начинается с заданного ввода. Это делается с помощью следующего кода ( попробуйте здесь ):длина 2 наполнитель
В псевдокоде это будет выполняться функцией canvas:
Наконец, вы можете видеть, что аргумент заполнителя «повернут» раз вправо, что означает, что холст будет перебирать следующий (циклический и, следовательно, бесконечный) список:длина -1
Что приводит к желаемому алфавитному супу ascii-art shape.
источник
AA¹k._
альтернативно может бытьA¹¡RJ«
, но это тот же счетчик байтов.•1못*Ć,ãiDΣ•
альтернативно может быть•õÕ₆qηµñ–†f•·
, но это тот же счетчик байтов. Ах хорошо. Хороший ответ!Perl 6 , 100 байт
Попробуйте онлайн!
Заменяет все буквы в строке их сдвинутыми аналогами, при этом цифры заменяются числом пробелов, которые они представляют, плюс один.
объяснение
источник
Рубин , 107 байт
Попробуйте онлайн!
Улучшенный синтаксис
"i".to_c
->1i
(предложено Джорданом)Изменена система координат, так что 0 градусов справа, а не сверху. Это позволяет
0.5
->6
Скорректированы множители
j
иk
для краткостиВместо вывода на печать
puts a
объедините элементы массива и верните строкуa*$/
Рубин , 119 байт
Использует комплексное число, возведенное в степень для отображения на эллипс. Полный ход равен 26, поэтому каждый квадрант равен 6,5.
Этот подход опирается на требуемые выходные данные, достаточно напоминающие эллипс, чтобы можно было получить правильное отображение.
Попробуйте онлайн!
источник
Древесный уголь , 33 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Проследить путь.
Обрисуйте миску. Каждый
7
расширяется до↙←
.Перемещайте по одному символу за раз (этот API перекрывает концы каждой строки следующим).
Рисуйте, используя удвоенный алфавит, но начиная с позиции вводимого символа.
источник
MATL , 49 байт
Какой беспорядок Но было весело писать. Там даже арктангенс вовлечен.
Попробуйте онлайн!
объяснение
Код
создает массив чисел и преобразует их в двоичные. Это дает матрицу ноль-один
который является верхним левым квадрантом матрицы, определяющей положение букв.
отражает этот квадрант по вертикали, не повторяя последнюю строку, и по горизонтали повторяя последний столбец, чтобы получить полную матрицу:
Теперь у нас есть маска с позициями. Код
преобразует это в char, потому что конечным результатом будет матрица char. Символ 0 отображается как пробел, и ненулевые записи будут записаны с соответствующими буквами.
толкает строку
'abc···xyz'
, которая содержит 26 букв. Эта строка должна быть смещена по кругу согласно входу. Для этогочитает входную букву, добавляет 7 к своему ASCII-коду и отменяет результат. Для ввода
'a'
это дает -104, который кратен 26, поэтому круговое смещение на эту величину ничего не изменит. Если на входеb
это дает -105, что сдвигает строку на 1 шаг влево для получения'bcd···yza'
; и т.п.Следующим шагом является определение порядка, в котором смещенная строка будет записана в ненулевые элементы матрицы. С этой целью,
создает копию матрицы и выдвигает два вектора, содержащих позиции строк и столбцов ненулевых элементов на основе 1. затем
вычитает 7 из второго, выводит первое на верх, вычитает 4 из него и отрицает его. 7 и 4 задают начало координат, так что углы векторов позиций ненулевых элементов относительно этого начала определяют желаемый порядок.
вычисляет арктангенс с двумя аргументами по модулю 2 * pi, чтобы получить эти углы. Теперь наименьший угол, равный 0, соответствует записи, куда должна идти первая буква, а остальные - против часовой стрелки.
переставляет буквы в строке в соответствии с этими углами, так что, когда буквы записываются в ненулевые записи матрицы в мажорном порядке (вниз, затем поперек), результат будет правильным. Это сделано
Например, если входная
'a'
строка не была смещена по кругу:Перестановка по углам превращает это в
так что это
'u'
будет правильно перейти к первой (в главном порядке столбца) ненулевой записи, которая (3,1) в матричной записи;'t'
перейдем к (4,1),'s'
к (5,1);'v'
до (2,2) и т. д .:источник
Python 2 , 129 байт
Попробуйте онлайн!
источник
R ,
139122 байт-17 байт благодаря Джузеппе
Объяснение:
Строит пустую коробку с пробелами
представляет собой набор индексов для буквенных позиций, соответствующих:
TIO
источник
intToUtf8
так что это посторонние байты, но если вы используете*
вместоrep
, вы можете сэкономить 2 байта и получить до 125 байтов-32
за 122 байта . Вы можете создать их самостоятельно, используяcat(intToUtf8(bytes))
.intToUtf8
слишком много версий функции, я думаю. Ницца спасает все вокруг, спасибоJavaScript (Node.js) ,
121119 байтСохранено 2 байта благодаря @tsh
Попробуйте онлайн!
Как?
Buffer
"H"
"B"
источник
APL + WIN, 72 байта
Подсказки для персонажа
Попробуйте онлайн! Любезность Dyalog Classic
источник
R ,
218197 байт-21 байт благодаря Джузеппе
Попробуйте онлайн!
Ungolfed:
Создан повернутый вектор буквы и используется
cat
для заполнения края чаши этим вектором.источник
which
и использованииl>=t
в качестве индекса напрямую, что стоило 12 байтов.[
с~
. Это отличный ответ; В первые несколько попыток я потратил около 250 байт с гораздо более сложным подходом.Java 11, 134 байта
Попробуйте онлайн.
136- байтовая версия с потенциалом для игры в гольф?
Попробуйте онлайн.
Пояснение (к первому ответу)
источник
i-47
\n
). Так что, использую ли я непечатаемые и 3x\n
сi
или цифры-1 сi-47
, оба имеют одинаковый счетчик байтов 134. И, к сожалению, у меня не может быть непечатного0
, иначе я мог бы использовать 2,0,5,9 вместо этого и использоватьi+1
для сохранения всего 1 байта.Wolfram Language (Mathematica) , 258 байт
Попробуйте онлайн!
источник
Haskell, 127 байт
Попробуйте онлайн!
Каждый символ в закодированной строке декодируется функцией
?
в строку:источник
Котлин ,
148146145 байтУдалены лишние скобки для -2
Заменены необработанные строки для -1
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) ,
126118 байтСохранено 8 байтов благодаря @someone. Да, это на самом деле его имя пользователя.
Попробуйте онлайн!
источник
TSQL-запрос, 238 байт
Тестовая ссылка для этого ответа прервала разрывы строк и исключила пробелы. Я заменил пробелы точкой и заменил char (13) на char (13) + char (10), чтобы показать читаемый результат.
Попробуйте онлайн
Ungolfed:
источник
PHP ,
236229226 байтПопробуйте онлайн!
Pre-гольф:
Объяснение:
Используя это,
ord
мы конвертируем в целое число от 0 до 255. A - 65, а Z - 90.Используя это знание, мы берем входные данные и уменьшаем их на 65, чтобы у нас было значение корректировки.
Затем мы перебираем все символы, вызываем
ord
их, уменьшаем их на 65, увеличиваем их на наше значение корректировки. Используя модуль по модулю, мы возвращаемся к 0, если они превышают 26.Затем мы снова увеличиваем их на 65 и конвертируем обратно в буквы с помощью
chr
.К сожалению, php: // stdin может быть введен только один раз, поэтому нам нужно передать входные данные в функцию в нашем цикле, не позволяя нам сохранять байты,
use($a)
а необходимость объявлять переменную вне функции не позволяет нам чисто использовать<?=
метод echo - мы должны завернуть все в гигантскую троицу.источник
C (GCC) 286 байтов
Не совсем самый короткий гольф, но он работает
Попробуйте онлайн
источник
Красный , 139 байт
Попробуйте онлайн!
Действительно наивное решение.
источник
Perl 5
-p
, 110 байтПопробуйте онлайн!
источник
Javascript (V8), 316 байт
Попробуйте онлайн
Впервые попробовал код гольф. Ценю любые советы / отзывы.
Оригинальный код перед минификацией:
источник
APL (Dyalog Classic) , 50 байтов
Попробуйте онлайн!
источник
C (gcc) ,
200198197 байтов-3 байта благодаря потолку.
Попробуйте онлайн!
источник
PHP , 131 байт
Попробуйте онлайн!
источник