Напишите программу или функцию, которая выводит этот точный текст без учета регистра:
A, B, C, D, E, F, G,
H, I, J, K, L, M, N, O, P,
Q, R, S,
T, U, V,
W, X, Y, Z.
(На основе алфавитной песни, которую многие американские дети учат запоминать алфавит, хотя и редактируют для большей сжимаемости.)
Вывод должен выглядеть точно так же, как указано выше (опять же, без учета регистра), но может содержать завершающие пробелы в каждой строке и / или завершающие символы новой строки. Обратите внимание на период в конце.
Это код-гольф, поэтому выигрывает самый короткий код в байтах.
code-golf
string
kolmogorov-complexity
ETHproductions
источник
источник
/(?=[HQTW])/
H, I, J, K, LMNO, P
?Ответы:
Vim,
42, 40 нажатий клавиш / байтБлагодаря Линн и ее удивительному ответу vim за подсказку, чтобы взять алфавит из справки.
Спасибо RomanGräf за сохранение двух байтов!
Объяснение:
Затем мы перемещаем конец строки с помощью
$
, возвращаем символ назадch
и вставляем точку.источник
05AB1E , 16 байтов
Код
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
Утилиты Bash + GNU, 36
Ideone.
источник
echo {A..Y}, Z.|sed 's/[HQTW]/\n&/g'
?JavaScript (ES6),
6665 байтБить @Neil было невозможно ... Вот почему я это сделал. :-)
Гольф 1 байт благодаря трюку от @LevelRiverSt . Использование
String.fromCharCode
на 7 байт длиннее:Как это устроено
Это рекурсивно генерирует каждый символ алфавита от
a
доy
, используя.toString()
. Запятая добавляется после каждой буквы, плюс символ новой строки, если9568512>>i-9&1
равен 1, или пробел в противном случае. Когда рекурсия доходит до 34, то есть доz
, функция просто возвращается"z."
.источник
Python 2,7,
67 6663 байтаДеннис сохранил байт.
источник
exec
вместоfor
должно сохранить байт.Желе ,
1918 байтСпасибо @Adnan за вывод 1 байта!
Попробуйте онлайн!
Как это устроено
источник
JavaScript (ES6),
8074 байтаВероятно, можно сократить это с помощью atob / btoa, если вы сможете понять, как использовать кодировку ISO-8859-1. Изменить: Сохранено 6 байтов благодаря @RickHitchcock.
источник
.join`, `
? Положите обратную косую черту перед чертами. (Да, комментарий уценки отличается, вздох ...)Пайк,
231917 байтПопробуй это здесь!
источник
R,
8371 байтПопробуйте онлайн!
Создает матрицу из 3 строк (одна с буквами, одна с запятыми, а другая с пробелом или переводом строки).
Редактировать : Спасибо, Billywob!
источник
cat(a,sep="")
сохраняет несколько байтов:a=rbind(LETTERS,","," ");a[3,7+3*c(0,3:5)]="\n";cat(a[,-26],"Z.",sep="")
[-26]
onLETTERS
напрямую сохраняет еще один байт.CJam, 26 байт
Онлайн переводчик
источник
Brainfuck, 117 байт
Каждая из первых четырех строк имеет завершающий пробел, и программа принимает 8-битные ячейки. Попробуйте онлайн!
(Обработка последней строки сложно ...)
источник
Perl, 37 байт
Кредиты @Dom Hastings для этого решения (на 3 байта меньше моего, см. Ниже).
Запустить с
-E
(или-M5.010
) флагом:Моя предыдущая версия, на 3 байта длиннее (всего 40 байтов):
источник
say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
JavaScript (ES6),
6664 байтаРегулярное выражение соответствует символам, но не символу возврата каретки, поэтому, используя регулярное выражение замены, я могу добавить «,» к каждому символу.
Редактировать: удалено 2 символа благодаря ETHProductions
источник
$1
на$&
.Чеддер, 70 байт
Похоже, он не становится короче этого. Я сделал другие версии этого, которые используют довольно интересные методы, но это самый короткий
Попробуйте онлайн!
объяснение
@"
Оператор используется для генерации строки варьировались. Он генерирует строку, начиная с левого кода символа до правого кода символа.Например,
65
это код символа дляA
и90
дляZ
. Выполнение65 @" 90
будет генерировать от A до Z или алфавит.источник
C,
11210281 байтБлагодаря cleblanc & LevelRiverSt!
источник
i,c,d;main(){for(c=65;c<91;++c){if(c-"GPSVZ"[i])d=32;else d=10,++i;printf("%c%c%c",c,c-90?44:46,d);}}
i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}
. Обратите внимание, что между?:
троичным оператором можно вставить абсолютно все , даже несколько выражений, разделенных запятыми (оно вычисляется до последнего).Brainfuck, 157 байтов
Попробуйте онлайн
источник
Рубин,
5654 байтаПервая строка заканчивается буквальным переводом строки.
Изменить: сохранить два байта, заменив
'A'..'Y'
на?A..?Y
.источник
Vim, 32 байта
26o<C-V><C-V>64,<Esc>r.V{g<C-A>8Jj9Jj3Jj.j4JcH<C-R>"
Оставляет пустую строку в конце, что было разрешено, но странно быть таким неуклюжим. Еще хуже, я заканчиваю в режиме вставки. Я видел, как некоторые другие люди делают это здесь, так что я думаю, что это разрешено? Это грязно.
26o<C-V><C-V>64,<Esc>
: Первый<C-V>
буквально вставляет второй. То, что<C-V>64
это оставляет в буфере, будет преобразовано в кодовые точки ASCII, а затем в буквы. Запятые уже в.r.
: Никогда не будет в конце снова, так что сделайте.
сейчас.V{g<C-A>
: Использует визуальное приращение, чтобы превратить все64
s в кодовые точки ASCII заглавных букв.8Jj9Jj3Jj.j4J
: Произвольная строка присоединяется. Первый8J
вместо того,7J
потому что мы имеем дело с пустой строкой. Повторные3J
s имеют право на точечный повтор.cH<C-R>"
Люди обычно думают оi<C-R>
вставке в режиме вставки, но это больше похоже на макрос в режиме вставки. Stuff like<C-V>65
будет работать так, как если бы он был напечатан, и интерпретировался как десятичная точка кода. Это оставляет дополнительную (разрешенную) строку в конце и остается в режиме вставки.источник
PowerShell v3 +,
607867 байтХОРОШО. На самом деле я прочитал, понял и следовал спецификации на этот раз. Promise. : D
Принимает массив
65..90
и циклы над каждым элементом|%{...}
. На каждой итерации мы создаем новую строку, используя конкатенацию, индексирование и умножение.Сначала мы берем текущее число и приводим
char
его к ASCII-букве. Он объединяется с другим символом, основанным на индексации строки'.,'
независимо от того, находимся мы90
или нет (т. Е. Для учета,Z.
когда все остальные запятые). Это строка, объединенная с" "
разделением пробелов буквами, и умножение строк на"`n"
основе логического значения для определения того, является ли текущий элемент-in
указанным массивом (т. Е. Нужно ли нам объединять символ новой строки). Полученная строка остается на конвейере.Эти строки инкапсулируются в паренах и
-join
объединяются в новую строку, которая затем также остается в конвейере и неявноWrite-Output
в конце печатает результат. Поскольку у нас есть`n
строка, она автоматически преобразуется в новые строки после печати.Требуется v3 + для
-in
оператора. Имеет пробел в каждой строке, что соответствует требованиям спецификации.пример
источник
PHP, 62 байта
только для сравнения 87 байт
источник
\n
."# (?=[HQTW])#"
и сократить замену на те"\n"
же байты и сделать это более понятным. Использование устаревшей функции может запутать новичков. И физический разрыв может быть неверно истолкован в других системах, кроме Unix. Вы можете опубликовать его как свой собственный sugesstion.MATL,
3829 байт9 байтов сохранено благодаря @Luis!
Попробуйте онлайн!
объяснение
источник
R, 146 байт
Объяснение:
LETTERS
предопределено для заглавных букв. Функция для конкатенации вектора й на с дополнительным (используется для переноса строк). Кошка используется, поскольку это печатает как переводы строки. вызывается на буквы, чтобы сформировать строки, а затем снова на строки, чтобы сформировать весь вывод.f
,
y
\n
f
Вероятно, игра в гольф - мне не нравятся множественные звонки ...
источник
CJam, 31 байт
Объяснение:
Попробуйте онлайн
источник
Юлия, 71 байт
Требуется 0,5 или выше для трансляции
.()
источник
print
определении / function? С другой стороны, не сохранениеjoin
в переменную сохраняет байт.join
. Я не учел Запущенная программа возвращает строку. Разве программа не возвращает строку верный вывод? (Или это только функции, которым разрешено возвращать вещи для подсчета в качестве выходных данных. Если это такf()=
, корочеprint()
)f()=
или()->
хорошо - я думаю, что идея заключается в том, что функции могут быть назначены и могут запускаться несколько раз, и, напротив, это будет фрагмент кода.Чеддер, 57 байт
Попробуйте онлайн! Разве это не красиво? Это хороший прямоугольник.
Две подстановки регулярных выражений.
(65@"90)
является заглавным алфавитом,.sub(/[GPSV]/g,"$0\n")
заменяетGPSV
собой и"\n"
,.sub(/[^Z\n]/g,"$0, ")
заменяет собой всеZ
символы, не являющиеся символом новой строки, и собой", "
, и"."
добавляет финал.
.источник
Japt, 24 байта
Проверьте это онлайн!
Как это устроено
источник
Ява,
116109105104Ungolfed:
источник
||
до|
(-3); меняетсяc==90
наc>89
(-1); меняется'.'
на46
(-1); и меняется'\n'
на10
(-2)."GPSV".contains(""+c)
вместоc==71|c==80|c==83|c==86
.q, 46 байтов
источник
Сетчатка, 43 байта
Ведущий перевод строки является значительным. Попробуйте онлайн!
Я впервые использую Retina, поэтому любые советы по игре в гольф приветствуются ...
источник
Pyth, 25 байт
Программа, которая печатает результат в STDOUT.
Попробуйте онлайн
Как это устроено
источник