Imprimir uma onda do alfabeto


37

Você deve imprimir este texto exato:

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

Especificações

  • Você pode imprimir todas as letras minúsculas em vez de todas as maiúsculas. No entanto, o caso deve ser consistente em toda a saída.
  • Você pode imprimir um avanço de linha à direita extra.

Pontuação

Como essa é uma onda do alfabeto que flutua em pequena extensão, seu código também deve ser pequeno em termos de contagem de bytes. De fato, o menor código em termos de contagem de bytes vence.


39
Sério, outro desafio do alfabeto?
— Nathan Merrill

6
@NathanMerrill Por mais numerosos que sejam, não acho que sejam dignos de votos negativos. (Eu não significa que você downvoted, estou apenas dizendo.)
— Conor O'Brien

14
Enquanto os padrões são suficientemente diferentes, eu não acho que isso importa se usamos o alfabeto, dígitos decimais, asteriscos e sublinhado, etc.
— Dennis

9
@Dennis, independentemente dos caracteres utilizados, é esse tipo de desafio "padrão" que está sendo usado em excesso, IMO. Não acho que seja offtopic, mas gostaria de um pouco de ar fresco.
— Nathan Merrill

13
É claro que não há mais demanda para os desafios do alfabeto - apenas 39 pessoas atendidas nas primeiras 15 horas ...
— Trichoplax

Respostas:


37

C, 60 bytes

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

10
Isso é genialidade.
— Leaky Nun

É bom ver C em um desafio de código de golfe.
— Micheal Johnson

@MichealJohnson " veja C ", IC o que você fez lá. ;) E eu concordo com a Leaky Nun . Às vezes me pergunto como as pessoas apresentam algumas dessas respostas engenhosas.
— Kevin Cruijssen 02/09

@KevinCruijssen Isso foi sem querer lol.
— Micheal Johnson

17

Brainfuck, 104 bytes

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

11
Praticamente do mesmo tamanho do Hello World. Impressionante!
— Phyrfox

3
@phyrfox Na verdade ...
— SP3000

14

Convexo, 10 bytes

U_(+]D*zN*

Experimente online!

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 bytes

: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

Eu sei que isso pode ser mais jogado, mas minha cabeça dói, então eu tenho que parar por enquanto.

<cr>é a tecla enter, <c+v>é ctrl + v e <esc>é a tecla de escape. Todos foram contados como um byte.

Eu gravei um gif disso, mas ele estragou tudo. O vídeo está bom: http://recordit.co/ldLKvho9Gi


8

Ruby, 42 39 38 37 bytes

-3 bytes graças a @ user81655
-1 byte graças a @manatwork
-1 byte graças a @NotthatCharles

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

Veja em repl.it: https://repl.it/CmOJ


7

Cheddar, 48 bytes

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

Cheddar é bom com cordas: D

Experimente online!

Explicação

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

O que l>89?65:l+1faz? Bem, 89é o código de char para Y. Basicamente, l>89está verificando se a carta está Z, isso significa que devemos retornar A. Se l>89é falso. Vou voltar l+1, o próximo char


Eu pensei que você pode inserir @"entre eles.
— Freira vazada

Isso não usa uma função de retorno?
— Conor O'Brien

@ ConorO'Brien, sim?
— Downgoat 9/08/16


@ ConorO'Brien oh, não vi na especificação do desafio. vai corrigir
— Downgoat 9/08/16

7

Gelatina , 10 bytes

26ḶḂØAṙZj⁷

Experimente online!

Como funciona

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.

Não Yexistia naquela época? Também parabéns por 100k rep !!
— Erik the Outgolfer

Obrigado! Eu verifiquei e, infelizmente, Yfui adicionado dois dias depois que o desafio foi lançado.
— Dennis

Porque você poderia ter jogado ainda mais 26ḶḂØAṙZY. Mas, como está agora, ainda é bom.
— Erik the Outgolfer

7

Haskell, 60 58 bytes

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

Começando com "A" scanr(:)cria a lista a a partir dos caracteres da ['A'..'Z']direita. (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]). (a:b:_)combina os dois primeiros caracteres de cada sublista (com pelo menos dois caracteres) e faz 13 cópias.


Considerando alguns truques usados ​​por outros idiomas regularmente, considero justo não incluir a impressão real. Nesse caso, você pode substituí-lo por "(++" \ n ") = <<" e salvar 2 bytes. Possivelmente mais.
— MarLinn

@MarLinn: Não, acho que não. Os idiomas para golfe são projetados com a impressão implícita em mente e a maioria das outras respostas possui algum tipo de comando de impressão. Btw, unlinesé ainda mais curto que (++"\n")=<<.
— nimi

7

PowerShell, 49 43 bytes

Remix de TimmyD:

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

era, 49 bytes:

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

Saída de exemplo


6

Python 2, 70 68 54 bytes

Solução baseada em lista:

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

Mas por que criar uma lista? Obrigado LeakyNun:

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

6

R, 72 67 60 56 bytes

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

Graças a @ Giuseppe pelos 4 bytes extras de desconto!

repSolução antiga com 60 bytes:

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

Veja aqui em um intérprete online. Obrigado a @ user5957401 pelos 7 bytes extras de desconto!

Solução antiga baseada em matriz em 72 bytes:

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

Veja aqui em um intérprete online.


11
se você alterar o indext para i in 1:26e, em seguida, a seleção de letras para LETTERS[c(i,i%%26+1)]você pode ser descartada como 6 ou 7 bytes
— user5957401

11
@ user5957401 arf Eu estava teimosamente fazendo (i+1)%%26que não me ocorreu fazer o contrário! Obrigado!
— plannapus

11
56 bytes , utilizando matrizes de novo :)
— Giuseppe

5

MATL , 13 bytes

1Y2tn:!to~!+)

Experimente online!

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

Água-viva , 26 bytes

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

Observe os caracteres não imprimíveis à direita nas duas últimas linhas. Experimente online!

Explicação

Essa é basicamente uma abordagem de manipulação aritmética: faça uma grade 26 × 26 com padrão 0-1 alternado, adicione o índice de cada linha a cada elemento da linha, reduza o mod 26 e adicione o valor ASCII de A. Os caracteres em Jellyfish são apenas números com uma bandeira especial e toda aritmética funciona neles conforme o esperado.

De baixo para cima:

  • Os 's são caracteres literais; eles são seguidos por não imprimíveis com código ASCII 26 e representam esses caracteres.
  • O menor rcalcula o intervalo de caracteres de 0 a 25.
  • A ,forma um par dos dois caracteres não imprimíveis.
  • Quanto mais alto rfor o argumento 2, e formará o intervalo [0 1].
  • Ele $pega esse intervalo e o modifica para o formato dado por seu outro argumento, que é o par de não imprimíveis. Isso fornece uma matriz 26 × 26 de linhas alternadas0 1 0 1 0 1 ...
  • O menor +adiciona o intervalo de caracteres de 0 a 25 a essa matriz. A adição é distribuída nas linhas; portanto, a linha i é incrementada por i . Também é convertido em uma matriz de caracteres, já que o argumento sul consiste em caracteres.
  • O ~|módulo is é com argumentos invertidos: o argumento sul (a matriz de caracteres acima) é reduzido no módulo leste (o que Svira o processo de busca de argumentos para o sul, então esse é o literal não imprimível 26).
  • Quanto mais alto +adiciona o literal Aa todas as coordenadas da matriz resultante.
  • Ele Pimprime o resultado no formato de matriz, ou seja, cada linha em sua própria linha sem aspas.

11
Eu queria tentar jogar golfe, mas depois vi o nome daquele que escreveu o código.
— Leaky Nun

@LeakyNun Você ainda pode tentar! Embora 26 bytes sejam adequados para esse desafio.
— Zgarb

5

Vim, 31 bytes

:h<_↵↵↵YZZPJra0qqy2l13Plr↵25@qD

Onde ↵está a tecla Return.

insira a descrição da imagem aqui


5

Perl, 26 bytes

Solução da @Dom Hastings . (12 bytes mais curto que o meu!)
-1 byte graças a @Ton Hospel

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

Executar com -M5.010ou -E:

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

Conseguiu obter esse baixo para 33: say+($_++,$_--=~/^./g)x13for A..Z, mas eu tenho certeza que há uma maneira de obter um mais curto a partir de: say+($_++,$_--)x13for A..Z...
— Dom Hastings

Não sei por que eu tenho o --lá, não é necessário! O_o. 27:say+($_++,/^./g)x13for A..Z
— Dom Hastings

@DomHastings Bem feito! Eu tentei say+($_,$_++)x13for A..Zno começo o que não funcionou, mas parece que eu deveria ter empurrado ainda mais nessa direção!
— Dada

11
say+($_++,chop)x13for A..Zsalva mais um byte
— Ton Hospel 10/16/16

@ TonHospel ótimo, obrigado por isso.
— Dada

5

T-SQL 133 bytes (disponível por: @ 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 bytes

Usando CTE para gerar sequência de número

;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 bytes

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

A sua resposta foi reduzida em 113 caracteres. Eu forneci uma resposta muito diferente no TSQL
— t-clausen.dk

@ t-Clausen.dk Isso é excelente. Por favor, poste sua resposta. Eu excluiria o meu.
— Anuj Tripathi

Não há razão para excluir sua resposta, você pode simplesmente usar o meu violino para melhorar sua resposta. Eu já postei há 1 hora atrás, se você gosta do TSQL, dê uma olhada nas minhas outras respostas. Fiz Violinos para a maioria deles
— t-clausen.dk


4

Pitão, 10 bytes

jCm.<G~!ZG

Demonstração

Explicação:

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

Bom, gostaria de saber tanto quanto você faz sobre Pyth
— Stan Strum

4

Brainfuck, 88 86 bytes

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

Requer um intérprete com células de 8 bits e uma fita não delimitada à esquerda. Experimente online!


3

Lua, 80 65 bytes.

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

Com a ajuda de Leaky Nun

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

Lua é uma linguagem bastante ineficiente em relação ao manuseio de strings e afins, portanto é o melhor que posso restringir.


Bem-vindo ao PPCG! Bom primeiro post! Você pode salvar 5 bytes se remover algum espaço em branco desnecessário: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(não testado)
— Leaky Nun

Porque string.rep(x,13)é basicamentex:rep(13)
— Freira vazada

Direita! Esqueci que a cadeia de caracteres metável indexa por padrão a biblioteca de cadeias.
— ATaco 10/08

Embora bons, números como 65+ (i% 26) não contam como strings, a menos que sejam armazenados como tal. Vou trabalhar em uma maneira de fazer isso funcionar para o inferno.
— ATaco 10/08


3

05AB1E, 12 bytes

ADÀ)øvyJ5Ø×,

Explicação

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

Experimente online


Eu sei que esta é uma pergunta antiga, mas eu simplesmente não posso me ajudar. ADÀ)ø13×»funciona bem com 9 bytes.
— Datboi

@Datboi: Isso realmente funciona agora, mas infelizmente não funcionou no momento em que esta pergunta foi publicada :(
— Emigna

3

Mathematica, 82 75 67 66 bytes

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

Tecnicamente mais curto, embora seja impresso em letras minúsculas em vez de maiúsculas:

Mathematica, 64 bytes

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

11
Bom truque usando PadLeft.
— Leaky Nun


1

MATLAB, 47 38 bytes

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

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

O primeiro cria uma matriz de colunas do alfabeto em ASCII, anexa uma cópia deslocada como uma coluna à direita, replica a matriz 26 * 2 resultante 13 vezes em colunas, converte para uma matriz de caracteres e imprime por padrão.

O segundo cria uma matriz 2 * 26 de alfabeto e alfabeto deslocado, transpõe-o e continua como acima.


Você pode salvar um byte usando em [... '']vez de char(...).
— Pajonk

E você pode usar simplesmente [65:90;66:90 65]salvando dois bytes.
— Pajonk



1

PHP, 102 bytes

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

Você pode remover as aspas da string do alfabeto. Substitua \ n por um enter real em vez de \ n. Roubei essa ideia de @insertusernamehere. Portanto, verifique a resposta dele para o que quero dizer. Editar: use também a notação de marca curta <?. Você também não precisa de um espaço depois de <?. Então <?$a='ABC'também funciona.
— Jeroen

1

Ruby, 41 bytes

26.times{|i|puts [*?A..?Z,?A][i,2]*''*13}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.