Распечатать волну алфавита


37

Вы должны напечатать этот точный текст:

ABABABABABABABABABABABABAB
BCBCBCBCBCBCBCBCBCBCBCBCBC
CDCDCDCDCDCDCDCDCDCDCDCDCD
DEDEDEDEDEDEDEDEDEDEDEDEDE
EFEFEFEFEFEFEFEFEFEFEFEFEF
FGFGFGFGFGFGFGFGFGFGFGFGFG
GHGHGHGHGHGHGHGHGHGHGHGHGH
HIHIHIHIHIHIHIHIHIHIHIHIHI
IJIJIJIJIJIJIJIJIJIJIJIJIJ
JKJKJKJKJKJKJKJKJKJKJKJKJK
KLKLKLKLKLKLKLKLKLKLKLKLKL
LMLMLMLMLMLMLMLMLMLMLMLMLM
MNMNMNMNMNMNMNMNMNMNMNMNMN
NONONONONONONONONONONONONO
OPOPOPOPOPOPOPOPOPOPOPOPOP
PQPQPQPQPQPQPQPQPQPQPQPQPQ
QRQRQRQRQRQRQRQRQRQRQRQRQR
RSRSRSRSRSRSRSRSRSRSRSRSRS
STSTSTSTSTSTSTSTSTSTSTSTST
TUTUTUTUTUTUTUTUTUTUTUTUTU
UVUVUVUVUVUVUVUVUVUVUVUVUV
VWVWVWVWVWVWVWVWVWVWVWVWVW
WXWXWXWXWXWXWXWXWXWXWXWXWX
XYXYXYXYXYXYXYXYXYXYXYXYXY
YZYZYZYZYZYZYZYZYZYZYZYZYZ
ZAZAZAZAZAZAZAZAZAZAZAZAZA

Спекуляции

  • Вы можете напечатать все строчные вместо всех прописных. Тем не менее, дело должно быть согласованным на протяжении всего вывода.
  • Вы можете распечатать один дополнительный завершающий перевод строки.

счет

Поскольку это алфавитная волна, которая колеблется в незначительной степени, ваш код также должен быть небольшим с точки зрения количества байтов. Фактически, самый маленький код с точки зрения количества байтов побеждает.


39
Серьезно, еще одна проблема с алфавитом?
— Натан Меррилл

6
@NathanMerrill Сколько бы они ни были, я не думаю, что они достойны отрицательных голосов. (Я не подразумеваю, что вы проголосовали, я просто говорю.)
— Конор О'Брайен,

14
Пока шаблоны достаточно разные, я не думаю, что это имеет значение, если мы используем алфавит, десятичные цифры, звездочки и подчеркивание и т. Д.
— Деннис

9
@Dennis, независимо от используемых символов, это их типовые «вызовы», которые становятся чрезмерными, IMO. Не думаю, что это оффтоп, но мне бы хотелось подышать свежим воздухом.
— Натан Меррилл

13
Ясно, что спрос на алфавит больше не требуется - только 39 человек ответили в первые 15 часов ...
— trichoplax

Ответы:


37

C, 60 байтов

main(i){for(;i<703;)putchar(i++%27?65+(i/27+i%27%2)%26:10);}

10
Это гений.
— Утренняя монахиня

Приятно видеть C в соревновании по гольфу.
— Майкл Джонсон

@MichealJohnson " см. C ", IC, что вы там сделали. ;) И я согласен с Leaky Nun . Иногда мне интересно, как люди придумывают некоторые из этих гениальных ответов.
— Кевин Круйссен

@KevinCruijssen Это было непреднамеренно, лол.
— Майкл Джонсон


14

Выпуклый, 10 байт

U_(+]D*zN*

Попробуйте онлайн!

U               Predefined Variable: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 _(+            Push a copy with the 'A at the end.
    ]           Add both strings to an array.
     D*         Repeat array 13 times. D defaults to 13.
       z        Transpose.
        N*      Join by newlines. N defaults to "\n"


8

Vim, 85 83 байта

:h<_<cr><cr><cr>YZZP:s/./\0\r/g<cr><c+v>ggy25Pqqlxj:let @a='xkPjj'<cr>25@akia<esc>25klq11@qh<ctrl+v>25jylpl<c+v>25jdGdd

Я знаю, что это может быть больше в гольфе, но моя голова болит, поэтому я должен остановиться на данный момент.

<cr>это клавиша ввода, <c+v>это ctrl + v и <esc>клавиша escape. Все они были посчитаны как один байт.

Я записал GIF этого, но он облажался. Видео хорошо, хотя: http://recordit.co/ldLKvho9Gi


8

Руби, 42 39 38 37 байт

-3 байта благодаря @ user81655
-1 байт благодаря @manatwork
-1 байту благодаря @NotthatCharles

?A.upto(?Z){|a|puts (a+a.next[0])*13}

Смотрите его на repl.it: https://repl.it/CmOJ


7

Чеддер, 48 байтов

print(65|>90).map(l->@"[l,l>89?65:l+1]*13).vfuse

Чеддер хорош со строками: D

Попробуйте онлайн!

объяснение

print
  (65|>90)            // Range from 65 (A) to 90 (Z)
  .map(l->            // Map through range
    @"                // Convert following array of char codes to string
      [l,             // The character 
       l>89?65:l+1]   // See below for explanation
      *13             // Repeat 13 times
  ).vfuse             // Vertically fuse

Что делает l>89?65:l+1? Ну, 89это код для Y. По сути, l>89это проверка, если письмо Z, это означает, что мы должны вернуться A. Если l>89ложно. Я вернусь l+1, следующий символ


Я думал, что вы можете вставить @"между ними.
— Утренняя монахиня

Разве это не использует функцию возврата?
— Конор О'Брайен

@ ConorO'Brien, да?
— Downgoat


@ ConorO'Brien о, не видел в спецификации вызова. будет исправлено
— Downgoat

7

Желе , 10 байт

26ḶḂØAṙZj⁷

Попробуйте онлайн!

Как это работает

26ḶḂØAṙZj⁷  Main link. No arguments.

26Ḷ         Yield [0, ..., 25].
   Ḃ        Bit; compute the parity of each intger.
    ØAṙ     Rotate the alphabet by these amounts.
       Z    Zip; transpose rows and columns.
        j⁷  Join, separating by linefeeds.

Не Yсуществовало тогда? Также поздравляю за 100 тыс. Представителей!
— Эрик Outgolfer

Благодарность! Я проверил и, к сожалению, Yбыл добавлен через два дня после объявления о проблеме.
— Деннис

Потому что вы могли бы сыграть в гольф еще ниже 26ḶḂØAṙZY. Но, как сейчас, все равно хорошо.
— Эрик Outgolfer

7

Haskell, 60 58 байт

mapM putStrLn[[0..12]>>[a,b]|a:b:_<-scanr(:)"A"['A'..'Z']]

Начиная с «А» scanr(:)строит список из символов ['A'..'Z']справа. (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]). (a:b:_)соответствует первым двум символам каждого подсписка (по крайней мере, с двумя символами) и составляет 13 его копий.


Рассматривая некоторые из читов, используемых другими языками на регулярной основе, я считаю справедливым не включать фактическую печать. В этом случае вы можете заменить его на "(++" \ n ") = <<" и сохранить 2 байта. Возможно больше.
— Марлинн

@MarLinn: нет, я так не думаю. Языки игры в гольф разработаны с учетом неявной печати, и большинство других ответов имеют какую-то команду печати. Кстати, unlinesдаже короче, чем (++"\n")=<<.
— Ними

7

PowerShell, 49 43 байта

Ремикс TimmyD:

65..89|%{-join[char[]]($_,++$_)*13};"ZA"*13

было, 49 байт:

0..25|%{(""+[char]($_+++65)+[char]($_%26+65))*13}

Пример вывода


6

Python 2, 70 68 54 байта

Решение на основе списка:

L=map(chr,range(65,91))
for i in range(-26,0):print(L[i]+L[i+1])*13

Но зачем создавать список? Спасибо LeakyNun:

for i in range(26):print(chr(i+65)+chr(-~i%26+65))*13

6

R 72 67 60 56 байт

write(matrix(LETTERS[c(1:26,2:26,1)],26,26,T),"",26,,"")

Спасибо @Giuseppe за дополнительные 4 байта!

Старое repрешение на 60 байтов:

for(i in 1:26)cat(rep(LETTERS[c(i,i%%26+1)],13),"\n",sep="")

Смотрите здесь на онлайн переводчик. Спасибо @ user5957401 за дополнительные 7 байтов!

Старое матричное решение на 72 байта:

for(i in 1:26)cat(matrix(LETTERS[c(1:26,2:26,1)],26,26)[i,],"\n",sep="")

Смотрите здесь на онлайн переводчик.


1
если вы измените значение Indext на, i in 1:26а затем выбор буквы для LETTERS[c(i,i%%26+1)]вас может уменьшиться на 6 или 7 байтов
— user5957401

1
@ user5957401 arf Я так упрямо делал, (i+1)%%26что мне не пришло в голову сделать обратное! Благодарность!
— plannapus

1
56 байтов снова с использованием матриц :)
— Джузеппе

5

MATL , 13 байт

1Y2tn:!to~!+)

Попробуйте онлайн!

1Y2    % Predefined string literal: 'AB···Z'
tn:    % Duplicate, number of elements, range: gives [1, 2, ···, 26]
!      % Transpose into a column vector
to~!   % Duplicate and transform into [0, 1, 0, 1, ···, 1] using modulo 2
+      % Addition with broadcast. Gives 2D numeric array
)      % Index (modularly) into string. Implicitly display.

5

Медуза , 26 байт

P
+'A
~
| S
+$ r2
 ,'
r'

Обратите внимание на конечные непечатаемые символы в последних двух строках. Попробуйте онлайн!

объяснение

Это в основном подход арифметической манипуляции: создайте сетку 26 × 26 с чередующимся шаблоном 0-1, добавьте индекс каждой строки к каждому элементу строки, уменьшите модуль 26 и добавьте значение ASCII: A . Символы в Медузах - это просто числа со специальным флагом, и все арифметические операции над ними работают, как и ожидалось.

Снизу вверх:

  • В 'ы являются символьные литералы; за ними следуют непечатаемые с кодом ASCII 26, и обозначают эти символы.
  • Нижняя rвычисляет диапазон символов от 0 до 25.
  • ,Образует пару из двух непечатных символов.
  • Чем выше rприведен аргумент 2, и образуется диапазон [0 1].
  • Он $берет этот диапазон и преобразует его в форму, заданную другим аргументом - парой непечатаемых. Это дает матрицу 26 × 26 чередующихся строк0 1 0 1 0 1 ...
  • Нижняя +добавляет диапазон символов 0-25 к этой матрице. Добавление распределяется по строкам, поэтому строка i увеличивается на i . Он также преобразуется в матрицу char, поскольку аргумент south состоит из символов char.
  • Модуль ~|является модулем с перевернутыми аргументами: аргумент южный (приведенная выше матрица символов) уменьшается по модулю аргумента восток ( Sповорачивает процесс поиска аргументов на юг, так что это непечатаемый литерал 26).
  • Чем выше +добавляется литерал Aк каждой координате полученной матрицы.
  • В Pпечатает результат в формате матрицы, то есть, каждая строка на отдельной строке без кавычек.

1
Я хотел попробовать сыграть в гольф, но потом увидел имя того, кто написал код.
— Утренняя монахиня

@LeakyNun Вы все еще можете попробовать! Хотя 26 байтов подходит для этой задачи.
— Згарб


5

Perl, 26 байт

Решение от @Dom Hastings . (На 12 байт меньше, чем у меня!)
-1 байт благодаря @Ton Hospel

say+($_++,chop)x13for A..Z

Запустите с -M5.010или -E:

perl -E 'say+($_++,chop)x13for A..Z'

Удалось сократить это до 33:, say+($_++,$_--=~/^./g)x13for A..Zно я уверен, что есть способ получить более короткий из: say+($_++,$_--)x13for A..Z...
— Dom Hastings

Не уверен, почему у меня --там, это не нужно! O_o. 27:say+($_++,/^./g)x13for A..Z
— Дом Гастингс

@DomHastings Отлично сделано! say+($_,$_++)x13for A..ZСначала я попробовал , но это не сработало, но, похоже, мне следовало двигаться дальше в этом направлении!
— Дада

1
say+($_++,chop)x13for A..Zсохраняет еще один байт
— Тон Хоспел

@TonHospel отлично, спасибо за это.
— Дада

5

T-SQL 133 байта (Гольф: @ t-clausen.dk)

SELECT REPLICATE(Char(number+65)+IIF(number=25,'A',Char(number+66)),13)FROM spt_values WHERE number<26and'P'=TYPE

T-SQL, 151 байт

Использование CTE для генерации последовательности чисел

;WITH n(a,v) AS(SELECT CHAR(65)+CHAR(66), 66 UNION ALL SELECT CHAR(v)+CHAR(v+1), v+1 FROM n WHERE v < 91)SELECT REPLICATE(REPLACE(a,'[','A'),13) FROM n

T-SQL, 155 байт

SELECT REPLICATE(Char(number+65)+ CASE WHEN number=25 THEN 'A' ELSE Char(number+66) END, 13) FROM master.dbo.spt_values  WHERE name IS NULL AND number < 26

Я довел ваш ответ до 113 символов. Я дал совсем другой ответ в TSQL
— t-clausen.dk

@ t-Clausen.dk Это отлично. Пожалуйста, оставьте свой ответ. Я бы удалил мой.
— Ануй Трипати

Нет причин, чтобы удалить свой ответ, вы можете просто использовать мою скрипку, чтобы улучшить свой ответ. Я уже писал 1 час назад, если вам нравится TSQL, вы должны взглянуть на мои другие ответы. Я сделал скрипки для большинства из них
— t-clausen.dk


4

Pyth, 10 байт

jCm.<G~!ZG

демонстрация

Объяснение:

jCm.<G~!ZG
  m      G    Map over G, predefined to the lowercase alphabet.
              This will give 26 columns.
   .<G        Left shift (cyclically) G by
        Z     Z elements. Z is initialized to 0.
      ~!      After using its value, logical not Z. (0 -> 1, 1 -> 0)
 C            Transpose
j             Join on newlines

Хорошо, хотелось бы, чтобы я знал столько же, сколько ты знаешь о Пите
— Стэн Струм

4

Brainfuck, 88 86 байт

++[[+>]<+<++]+>-[[->+>+<<]>>-]++++++++[<[++++++++<+<]>[>]<-]<<++<[>+++[->.<<.>]<<++.<]

Требуется переводчик с 8-битными ячейками и лентой, не ограниченной слева. Попробуйте онлайн!


3

Луа, 80 65 байт.

s = string c = s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13)) end

С помощью Лики Нун

c=("").char for i=1,26 do print((c(64+i)..c(65+i%26)):rep(13))end

Lua - довольно неэффективный язык в отношении обработки строк и тому подобного, так что это лучшее, что я могу сузить.


Добро пожаловать в PPCG! Хороший первый пост! Вы можете сэкономить 5 байт, если удалите ненужные пробелы:s=string c=s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13))end
— GamrCorps

for i=1,26 do print(((64+i):char()..(65+(i%26)):char()):rep(13))end(не проверено)
— Дрянная Монахиня

Потому string.rep(x,13)что в основномx:rep(13)
— Дрянная Монахиня

Правильно! Я забыл строку с метатабельными индексами по умолчанию для библиотеки строк.
— ATaco

Хотя это хорошо, числа, такие как 65+ (i% 26), не считаются строками, если не сохранены как таковые. Я поработаю над тем, чтобы сделать эту работу, черт побери.
— ATaco


3

05AB1E, 12 байтов

ADÀ)øvyJ5Ø×,

объяснение

AD            # push 2 copies of the alphabet
  À           # rotate the 2nd one left by 1
   )ø         # add to list and zip
     v        # for each
      yJ      # join the pair
        5Ø×   # repeat it 13 times
           ,  # print with newline

Попробуйте онлайн


Я знаю, что это старый вопрос, но я просто не могу с собой поделать. ADÀ)ø13×»работает также с 9 байтами.
— Датбои

@Datboi: Это действительно работает сейчас, но, к сожалению, это не сработало в то время, когда этот вопрос был опубликован :(
— Emigna

3

Mathematica, 82 75 67 66 байт

Print@FromCharacterCode@PadLeft[{},26,{i-1,i}~Mod~26+65]~Do~{i,26}

Технически короче, хотя печатается не в верхнем, а в нижнем регистре:

Mathematica, 64 байта

Print[""<>FromLetterNumber@Table[{i-1,i}~Mod~26+1,13]]~Do~{i,26}

1
Хороший трюк с использованием PadLeft.
— Утренняя монахиня


1

MATLAB, 47 38 байт

a=(65:90)';char(repmat([a a([2:end 1])],1,13))

char(repmat([65:90;[66:90 65]]',1,13))

Первый создает массив столбцов алфавита в ASCII, добавляет смещенную копию в виде столбца справа, реплицирует результирующий массив 26 * 2 13 раз по столбцам, приводит к массиву символов и печатает по умолчанию.

Второй создает массив алфавита 2 * 26 и сдвинутый алфавит, транспонирует его, затем продолжает, как описано выше.


Вы можете сохранить один байт, используя [... '']вместо char(...).
— pajonk

И вы можете использовать просто [65:90;66:90 65]сохранение двух байтов.
— pajonk



1

PHP, 102 байта

<?php $a='ABCDEFGHIJKLMNOPQRSTUVWXYZA';$i=-1;while($i++<25){echo str_repeat(substr($a,$i,2),13)."\n";}

Вы можете удалить кавычки из строки алфавита. Замените \ n фактическим вводом вместо \ n. Украл эту идею у @insertusername здесь. Так что проверьте его ответ, что я имею в виду. Изменить: Также используйте обозначение короткого тега <?. Вам также не нужен пробел после <?. Так <?$a='ABC'же и работает.
— Йерун

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.