Drucken Sie eine Alphabetwelle


37

Diesen genauen Text drucken Sie aus:

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

Technische Daten

  • Sie können alle Kleinbuchstaben anstelle von Großbuchstaben drucken. Case muss jedoch in der gesamten Ausgabe konsistent sein.
  • Sie können einen zusätzlichen Zeilenumbruch drucken.

Wertung

Da dies eine Alphabetwelle ist, die in geringem Maße schwankt, sollte Ihr Code auch in Bezug auf die Bytezahl klein sein. Tatsächlich gewinnt der kleinste Code in Bezug auf die Anzahl der Bytes.


39
Ernsthaft eine andere Alphabetherausforderung?
Nathan Merrill

6
@ NathanMerrill So zahlreich sie auch sind, ich glaube nicht, dass sie Abstimmungen wert sind. (Ich impliziere nicht, dass Sie herabgestimmt haben, ich sage nur.)
Conor O'Brien

14
Solange die Muster ausreichend unterschiedlich sind, denke ich nicht, dass es wichtig ist, das Alphabet, Dezimalstellen, Sternchen und Unterstriche usw. zu verwenden.
Dennis

9
@Dennis unabhängig von den verwendeten Zeichen, es ist diese Art von "Muster" Herausforderungen, die überbeansprucht werden, IMO. Ich denke nicht, dass es offtopic ist, aber ich würde etwas frische Luft genießen.
Nathan Merrill

13
Es ist klar, dass es keine Nachfrage mehr nach Alphabetherausforderungen gibt - nur 39 Personen haben in den ersten 15 Stunden geantwortet ...
trichoplax

Antworten:


37

C 60 Bytes

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

10
Das ist Genie.
Undichte Nonne

Schön, C in einer Code Golf Challenge zu sehen.
Micheal Johnson

@MichealJohnson " sehe C ", IC was du da gemacht hast. ;) Und ich stimme mit Leaky Nun überein . Manchmal frage ich mich, wie die Leute auf einige dieser genialen Antworten gekommen sind.
Kevin Cruijssen

@ KevinCruijssen Das war ungewollt lol.
Micheal Johnson

17

Brainfuck, 104 Bytes

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

1
Praktisch die gleiche Größe wie Hello World. Beeindruckend!
Phyrfox

3
@phyrfox Eigentlich ...
Sp3000

14

Konvex, 10 Bytes

U_(+]D*zN*

Probieren Sie es 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

Ich weiß, dass man mehr Golf spielen kann, aber mein Kopf tut weh, also muss ich erstmal aufhören.

<cr>ist die Eingabetaste, <c+v>ist Strg + V und <esc>ist die Escape-Taste. Diese wurden alle als ein Byte gezählt.

Ich habe ein GIF davon aufgenommen, aber es wurde vermasselt. Das Video ist jedoch in Ordnung: http://recordit.co/ldLKvho9Gi


8

Ruby, 42 39 38 37 Bytes

-3 Bytes dank @ user81655
-1 Bytes dank @manatwork
-1 Bytes dank @NotthatCharles

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

Siehe es auf repl.it: https://repl.it/CmOJ


7

Cheddar, 48 Bytes

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

Cheddar ist gut mit Streichern: D

Probieren Sie es online!

Erläuterung

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

Was macht l>89?65:l+1das? Nun 89ist der Zeichencode für Y. Grundsätzlich l>89ist zu prüfen, ob der Brief ist Z, das heißt, wir sollten zurückkehren A. Wenn l>89ist falsch. Ich werde zurückkehren l+1, der nächste Char


Ich dachte, Sie können @"zwischen ihnen einfügen .
Undichte Nonne

Verwendet dies nicht eine Funktionsrückgabe?
Conor O'Brien

@ ConorO'Brien ja?
Downgoat


@ ConorO'Brien oh, nicht in Challenge Spec gesehen. wird reparieren
Downgoat

7

Gelee , 10 Bytes

26ḶḂØAṙZj⁷

Probieren Sie es online!

Wie es funktioniert

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.

Gab Yes damals noch keine ? Herzlichen Glückwunsch auch für 100k rep !!
Erik der Outgolfer

Vielen Dank! Ich habe nachgeprüft und wurde leider Yzwei Tage nach dem Absenden der Challenge hinzugefügt.
Dennis

Weil du es weiter runter bis Golf spielen hättest können 26ḶḂØAṙZY. Aber so wie es jetzt ist, ist es immer noch gut.
Erik der Outgolfer

7

Haskell, 60 58 Bytes

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

Wenn Sie mit "A" beginnen, wird scanr(:)eine Liste aus den Zeichen von ['A'..'Z']rechts erstellt. (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]). (a:b:_)Stimmt mit den ersten beiden Zeichen jeder Unterliste überein (mit mindestens zwei Zeichen) und erstellt 13 Kopien davon.


In Anbetracht einiger Cheats, die von anderen Sprachen regelmäßig verwendet werden, halte ich es für nur angemessen, den tatsächlichen Druck nicht einzuschließen. In diesem Fall können Sie es durch "(++" \ n ") = <<" ersetzen und 2 Bytes speichern. Möglicherweise mehr.
MarLinn

@MarLinn: Nein, das glaube ich nicht. Golf-Sprachen wurden unter Berücksichtigung des impliziten Drucks entwickelt und die meisten anderen Antworten haben einen Druckbefehl. Übrigens unlinesist noch kürzer als (++"\n")=<<.
nimi

7

PowerShell, 49 43 Byte

TimmyDs Remix:

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

war, 49 Bytes:

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

Beispielausgabe


6

Python 2, 70 68 54 Bytes

Listenbasierte Lösung:

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

Aber warum eine Liste erstellen? Danke 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,,"")

Vielen Dank an @ Giuseppe für die zusätzlichen 4 Bytes!

Alte rep-basierte Lösung bei 60 Bytes:

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

Sehen Sie hier auf einem Online-Dolmetscher. Vielen Dank an @ user5957401 für die zusätzlichen 7 Bytes!

Alte matrixbasierte Lösung mit 72 Bytes:

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

Sehen Sie hier auf einem Online-Dolmetscher.


1
Wenn Sie den Indext in i in 1:26und dann die Buchstabenauswahl in ändern , können LETTERS[c(i,i%%26+1)]Sie 6 oder 7 Bytes
ablegen

1
@ user5957401 arf Ich habe so hartnäckig gehandelt, (i+1)%%26dass es mir nicht eingefallen ist , das Gegenteil zu tun! Vielen Dank!
Plannapus

1
56 Bytes mit Matrizen wieder :)
Giuseppe

5

MATL , 13 Bytes

1Y2tn:!to~!+)

Probieren Sie es 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

Qualle , 26 Bytes

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

Beachten Sie die nachfolgenden nicht druckbaren Zeichen in den letzten beiden Zeilen. Probieren Sie es online!

Erläuterung

Dies ist im Grunde ein arithmetischer Manipulationsansatz: Erstelle ein 26 × 26-Gitter mit alternierendem 0-1-Muster, addiere den Index jeder Zeile zu jedem Element der Zeile, reduziere Mod 26 und addiere den ASCII-Wert von A. Zeichen in Jellyfish sind nur Zahlen mit einer speziellen Flagge, und alle Berechnungen funktionieren erwartungsgemäß mit ihnen.

Von unten nach oben:

  • Die 's sind Zeichenliterale; Es folgen nicht druckbare Zeichen mit dem ASCII-Code 26, die für diese Zeichen stehen.
  • Der untere rberechnet den Zeichenbereich von 0 bis 25.
  • Sie ,bilden aus den beiden nicht druckbaren Zeichen ein Paar.
  • Das höhere rArgument wird gegeben 2und bildet den Bereich [0 1].
  • Der $nimmt diesen Bereich und formt ihn in die Form um, die durch sein anderes Argument gegeben ist, nämlich das Paar der nicht druckbaren Elemente. Dies ergibt eine 26 × 26-Matrix alternierender Zeilen0 1 0 1 0 1 ...
  • Der untere +Wert fügt der Matrix den Zeichenbereich 0-25 hinzu. Die Additions vertreibt auf den Zeilen, so Zeile i durch inkrementiert wird i . Es wird auch in eine Zeichenmatrix konvertiert, da das südliche Argument aus Zeichen besteht.
  • Das ~|Is-Modul mit gespiegelten Argumenten: Das South-Argument (die obige Char-Matrix) ist modulo auf das East-Argument reduziert (das Swendet den Argument-Suchprozess nach Süden, das ist also das nicht druckbare Literal 26).
  • Der höhere +Wert fügt das Literal Azu jeder Koordinate der resultierenden Matrix hinzu.
  • Das Pdruckt das Ergebnis im Matrixformat, dh jede Zeile in einer eigenen Zeile ohne Anführungszeichen.

1
Ich wollte versuchen, Golf zu spielen, aber dann sah ich den Namen desjenigen, der den Code geschrieben hat.
Undichte Nonne

@LeakyNun Du kannst es trotzdem versuchen! Obwohl 26 Bytes für diese Herausforderung geeignet sind.
Zgarb

5

Vim, 31 Bytes

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

Wo ist die Return-Taste.

Bildbeschreibung hier eingeben


5

Perl, 26 Bytes

Lösung von @Dom Hastings . (12 Byte kürzer als meins!)
-1 Byte dank @Ton Hospel

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

Laufen Sie mit -M5.010oder -E:

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

Schaffte es, dies auf 33: zu bringen say+($_++,$_--=~/^./g)x13for A..Z, aber ich bin sicher, es gibt eine Möglichkeit, eine kürzere zu bekommen von: say+($_++,$_--)x13for A..Z...
Dom Hastings

Nicht sicher, warum ich das --da drin habe, es wird nicht benötigt! O_o. 27:say+($_++,/^./g)x13for A..Z
Dom Hastings

@DomHastings Schön gemacht! Ich habe zuerst versucht, say+($_,$_++)x13for A..Zwas nicht funktioniert hat, aber es scheint, ich hätte weiter in diese Richtung drängen sollen!
Dada

1
say+($_++,chop)x13for A..Zspeichert ein weiteres Byte
Ton Hospel

@TonHospel toll, danke dafür.
Dada

5

T-SQL 133 Bytes (Golf von: @ 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

Verwenden von CTE zum Generieren einer Zahlenfolge

;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

Ich habe Ihre Antwort auf 113 Zeichen reduziert . Ich gab eine ganz andere Antwort in TSQL
t-clausen.dk

@ t-Clausen.dk Das ist hervorragend. Bitte posten Sie Ihre Antwort. Ich würde meine löschen.
Anuj Tripathi

Kein Grund, Ihre Antwort zu löschen. Sie können einfach meine Geige verwenden, um Ihre Antwort zu verbessern. Ich habe bereits vor einer Stunde gepostet. Wenn Sie TSQL mögen, sollten Sie sich meine anderen Antworten ansehen. Ich habe für die meisten Fiddles gemacht
t-clausen.dk


4

Pyth, 10 Bytes

jCm.<G~!ZG

Demonstration

Erläuterung:

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

Schön, ich wünschte, ich wüsste so viel wie Sie über Pyth
Stan Strum

4

Brainfuck, 88 86 Bytes

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

Benötigt einen Interpreter mit 8-Bit-Zellen und einem nicht links begrenzten Band. Probieren Sie es 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

Mit Hilfe von Leaky Nun

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

Lua ist eine ziemlich ineffiziente Sprache in Bezug auf den Umgang mit Strings und so weiter.


Willkommen bei PPCG! Schöner erster Beitrag! Sie können 5 Bytes sparen, wenn Sie unnötige Leerzeichen entfernen: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(nicht getestet)
Leaky Nun

Denn string.rep(x,13)im Grunde istx:rep(13)
Leaky Nun

Recht! Ich habe vergessen, dass die Zeichenfolge, die metatable ist, standardmäßig die Zeichenfolgenbibliothek indiziert.
ATaco

Obwohl gut, zählen Zahlen wie 65+ (i% 26) nicht als Zeichenfolgen, es sei denn, sie werden als solche gespeichert. Ich werde an einem Weg arbeiten, um das zum Teufel zu machen.
ATaco


3

05AB1E, 12 Bytes

ADÀ)øvyJ5Ø×,

Erläuterung

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

Probieren Sie es online aus


Ich weiß, dass dies eine alte Frage ist, aber ich kann mir einfach nicht helfen. ADÀ)ø13×»Funktioniert auch mit 9 Bytes.
Datboi

@Datboi: Das funktioniert jetzt tatsächlich, aber leider hat es nicht funktioniert, als diese Frage gepostet wurde :(
Emigna

3

Mathematica, 82 75 67 66 Bytes

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

Technisch gesehen kürzer, obwohl es in Kleinbuchstaben statt in Großbuchstaben gedruckt wird:

Mathematica, 64 Bytes

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

1
Netter Trick mit PadLeft.
Undichte Nonne


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))

Der erste Befehl erstellt ein Spaltenarray des Alphabets in ASCII, fügt eine verschobene Kopie als Spalte nach rechts hinzu, repliziert das resultierende 26 * 2-Array 13-mal spaltenweise, wandelt es in ein Zeichenarray um und druckt standardmäßig.

Die Sekunde macht ein 2 * 26-Array aus Alphabet und verschobenem Alphabet, transponiert es und fährt dann wie oben fort.


Sie können ein Byte mit [... '']anstelle von speichern char(...).
Pajonk

Und Sie können einfach [65:90;66:90 65]zwei Bytes speichern.
Pajonk



1

PHP, 102 Bytes

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

Sie können die Anführungszeichen aus der alphabetischen Zeichenfolge entfernen. Ersetzen Sie \ n durch eine tatsächliche Eingabe anstelle von \ n. Habe diese Idee von @insertusernamehere gestohlen. Also überprüfe seine Antwort auf das, was ich meine. Bearbeiten: Verwenden Sie auch die Kurzbezeichnung <?. Sie brauchen auch kein Leerzeichen nach <?. So <?$a='ABC'funktioniert das auch.
Jeroen

1

Ruby, 41 Bytes

26.times{|i|puts [*?A..?Z,?A][i,2]*''*13}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.