Как можно меньше байтов, напишите программу или функцию, которая выводит следующее:
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwxyZ
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
Abcdefghijklmnopqrstuvwxyz
Завершающий перевод строки разрешен. Вы можете найти справочную реализацию Python без гольфа здесь .
Ответы:
Pyth, 12 байт
Демонстрация.
В Pyth
G
это строчный алфавит.+Gt_G
этоabcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
, символ , который должен быть в верхнем регистре в каждой строке.V
устанавливает цикл for для этой строки,N
в качестве переменной цикла.В теле,
XGNrN1
это функция перевода строки.X
переводитG
, алфавит, заменяяN
наrN1
, заглавную версиюN
.r ... 1
это заглавная функция. Это дает желаемый результат.источник
С, 73
Иногда самый простой подход лучше всего: печатать каждый символ один за другим. это бьет много языков, которые действительно не должны.
объяснение
источник
Python 2, 69 байт
Красиво и просто, я думаю.
источник
Brainfuck (8 бит), 231 байт
Хорошо, так что это никогда не будет самым коротким, но важна роль ... правильно ?!
Попробуйте здесь (не забудьте отметить «Динамическая память»)
источник
>
сдвигает одну клетку вправо, например.MS-DOS Binary, 61
Этот код не нужно компилировать, он будет работать в MS-DOS, если вы запишите его в файл с именем wave.com. Код в шестнадцатеричном виде:
Или, если вы предпочитаете что-то более читаемое, вот как это сделать, используя debug.exe (важна пустая строка после кода):
источник
Рубин:
71686563 персонажаОбразец прогона:
источник
puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse
Matlab,
605854 байтаСпасибо Деннису Джарудудину за то, что он спас мне 4 байта.
источник
char(x)
его,[x '']
чтобы сохранить байт.end-1
довольно многословный способ написать 25![x '']
трюк для меня совсем не обычен. Но теперь я помню, как видел это в одном из твоих гневов :-)SWI-Пролог, 136 байт
Злоупотребление возвратом к циклу ...
источник
Haskell
1008988 байтВспомогательная лямбда-функция
\(h,c:t)
принимает пару списков значений ascii и объединяет оба, но с первым заглавным значением второго списка. Основная функция разбивает строчный алфавит (заданный в ascii,97..122
) на каждую позицию0,..,24,25,24,..,0
и вызывает лямбду на каждом шаге. Перед печатью каждое значение превращается в соответствующий символ.источник
Scala
110109 символовисточник
foreach println
наmkString("\n")
, и вывести строку как возвращаемое значение вместо того, чтобы печатать ее на экранеSQL (postgreSQL),
107101Генерировать серии от -25 до 25 и использовать абсолютное значение для замены символов их заглавной версией. Спасибо manatwork за совет об операторе @.
источник
@
оператор?Haskell, 81 байт
Подсчет байтов, как это сделал @nimi;
f
является действием ввода-вывода, которое печатает желаемый результатисточник
Pyth -
1817 байтПервый проход, вероятно, можно сделать намного короче. Использует
X
заменить и использоватьr1
для своей выгоды.Попробуйте это онлайн здесь .
источник
MATLAB - 58 байт
Подобно решению Луиса Мендо , но с использованием возможностей вещания
bsxfun
.Воспользовавшись тем, что в ASCII разница между заглавными и строчными буквами составляет ровно 32 значения друг от друга, мы сначала генерируем строчные буквы из кодов ASCII от 97 до 122, которые представляют собой коды ASCII от строчных букв a до строчных букв z, а затем создайте матрицу из 51 строки, которая содержит 26 кодов ASCII от 97 до 122. Поэтому каждая строка этой матрицы содержит числовую последовательность значений от 97 до 122. Затем мы создадим другую матрицу, в которой каждая i- я строка этой матрицы содержит 32 в i- м столбце. Первые 26 строк этой матрицы имеют этот шаблон, который по сути является единичной матрицей, умноженной на 32. Функция
eye
создает для вас матрицу идентичности. Последние 25 строк этой матрицы - это масштабированная единичная матрица, повернутая на 90 градусов.Взяв эту пользовательскую взвешенную матрицу идентификаторов и вычтя ее из первой матрицы, а затем преобразовав получившиеся коды ASCII в символы, можно получить желаемую последовательность «мексиканская шляпа».
Пример выполнения
Вы также можете запустить этот пример, используя онлайновую среду IDEone Octave. Octave по сути является MATLAB, но бесплатен: http://ideone.com/PknMe0
источник
rot90
-- хорошо продумано!J,
3123 байта8 байтов сохранено благодаря @Mauris.
Попробуйте это онлайн здесь.
источник
u:|:(97+i.26)-32*=|i:25
(монада=
действительно полезна здесь!)=
здесь. Это очень приятно!Perl, 51 байт
50-байтовый код + 1 байтный параметр командной строки
Может использоваться следующим образом:
Или онлайн здесь (обратите внимание, я должен был добавить
,"\n"
к этому, поскольку я не мог добавить -l arg).Гораздо более продолжительный метод До укороченной версии, описанной выше, я попробовал другой метод, который оказался довольно коротким. Я все равно оставил его для справки.
86-байтовый код + 1-байтовая командная строка
Первый Perl Я когда-либо играл в гольф должным образом, поэтому я думаю, что с этим можно многое сделать - пожалуйста, предложите улучшения!
Можно использовать следующим образом:
Или онлайн здесь (обратите внимание, я должен был добавить. "\ N" к этому, поскольку я не мог добавить -l arg).
объяснение
Общий подход заключается в использовании подстановки регулярных выражений для выполнения всей тяжелой работы. Мы начинаем с:
Это соответствует
(([A-Z])|0)(\D)
и заменяется на\U\3
(\ U изменяется на верхний регистр), чтобы дать:Начиная с этого момента, мы продолжаем соответствовать тому же регулярному выражению и заменяем на
\L\2\U\3
:Теперь второе чередование регулярных выражений совпадает
(.)((?2))(1)
(что так же, как(.)([A-Z])(1)
). Мы заменим,\U\4\6\L\5
чтобы дать:Это продолжает соответствовать и заменять, пока мы не достигнем:
и больше нет регулярных выражений.
В каждой точке цикла мы удаляем 1 и печатаем.
источник
PHP,
877169 байтНе самый короткий, но работает как задумано.
Спасибо @manatwork за несколько советов, чтобы значительно уменьшить его размер.
А благодаря @Blackhole размер был уменьшен на 2 байта.
Не совсем красиво, но работает.
источник
join()
первом параметре.$i<25?$i:25-($i-25)
→25-abs($i-25)
for(;$i<51;){$L=range(a,z);$L[25-abs($i++-25)]^=" ";echo join($L),"↵";}
(Просто оберните строку, где я использовал «↵» в коде.)\n
было. Инициализация$i
была оставлена как несчастный случай. И большое спасибо за25-abs($i-25)
. Я бы туда не попал.for
цикл может быть оптимизирован:for(;$L=range(a,z),$L[25-abs($i++-25)]^=' ',$i<52;)echo join($L).'↵';
(-2 байта).PowerShell 3.0, 82 байта
источник
Архитектура узла TIS Тип T21 -
216215 байтСмотрите это в действии здесь! В
DOWN
этом видео есть кое-что, к чему я позже присоединилсяANY
, но оно функционально идентично.Этот язык не имеет понятия о строках или символах, поэтому я должен отметить, что я использую значения ASCII, т.е. вывод начинается
97, 66, 67
...88, 89, 90, 10, 65, 98
...Вот код в формате сохраненных данных TIS-100 для целей оценки:
объяснение
источник
JavaScript ES6, 121 байт
Это действительно долго, потому что имеет больше смысла жестко кодировать алфавит, чем использовать абсурдно долго
String.fromCharCode
для генерации символов. Проверьте это ниже с помощью фрагмента стека, который использует ES5 с лучшей поддержкой и ниже.источник
CJam, 23 байта
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
R,
7870Улучшено @MickyT
источник
M=replicate(26,c(letters,"\n"))
а не матрицу. Это сэкономит вам несколько байтовwrite
: tio.run/##K/r/…Сборка Linux, 289
К сожалению, не конкурентоспособен с языками высокого уровня и, вероятно, далеко не оптимален, но довольно прост. Запустите его используя
nasm -f elf64 -o a.o wave.S; ld -s -o a a.o; ./a
(результирующий двоичный файл размером всего 568 байт):источник
сборка x86 для DOS, скомпилировано 41 байт
Binary:
Исходный код, сохранить как «wave.asm», скомпилировать с «nasm -f bin -o wave.com wave.asm» и запустить с «dosbox wave.com»
источник
C #,
140139135132расширенный
Сохранено 1 байт благодаря @ Gunther34567, использующему троичный вместо
if
Сохранены 4 байта, затем вложены эти троицы в цикл и перемещены алфавит за пределы цикла
Сохраненные 3 байта, объединяющие целочисленные объявления благодаря @eatonphil
источник
if(i==25)d=-1;
наd=i==25?-1:d;
var d=1
наint d=1,i
.Баш:
7666 символовОбразец прогона:
источник
printf
звонок. Я отклонил редактирование , поэтому вы можете проверить его самостоятельно.Sed:
135119116111 символов(109 символов кода + 1 символ опции командной строки + 1 ввод символов.)
Образец прогона:
источник
Javascript (ES6), 113 байт
110 байт
102 байта
Старая школа непобедима, если у нас не будет оператора дальности / функция / генератор / что-нибудь в JS
100 байт
К сожалению, Math.abs слишком длинный
9694 байтаНесмотря на то, что я голосую без объяснения причин, я продолжаю борьбу
Мы можем сбрить пару байтов, переставив инструкции цикла:
источник
Perl -
9564 байтаВоспользовавшись тем,
\u
что следующий символ печатается заглавными буквами в Perl.Спасибо Manatwork за сохранение 31 байта и исправление его (мой предыдущий код не работал.)
источник
\u
кажется, работает в отдельном образце, но не в вашем коде. :( Все символы оставались строчными. Не могли бы вы показать нам, как должен выполняться ваш код? (Я поместил его в файл, затем назвал,perl
передав ему имя файла, без переключателей.) Кстати, я используюperl
5.20.2.\u
следует буква для преобразования в тот же строковый литерал:for$c(0..50){$n=1;print map{++$n==27-abs$c-25?"\u$_":$_}a..z,$/}
q (37 символов)
Первый разрез
источник
@[.Q.a;;upper]@'x,1_reverse x:til 26
для 36 байтов . Или@[.Q.a;;.q.upper]@'x,1_|x:!26
для 29 байтов в K4.