Jetzt kenne ich meine ABCs, willst du nicht mit mir Golf spielen?

46

Schreiben Sie ein Programm oder eine Funktion, die genau diesen Text ausgibt, wobei die Groß- und Kleinschreibung keine Rolle spielt:

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.

(Basierend auf dem Alphabet-Song , den viele amerikanische Kinder lernen, das Alphabet auswendig zu lernen, obwohl es für mehr Komprimierbarkeit bearbeitet wurde.)

Die Ausgabe muss genau so aussehen wie oben (Groß- / Kleinschreibung wird nicht berücksichtigt ), darf jedoch nachgestellte Leerzeichen in jeder Zeile und / oder nachgestellten Zeilenumbrüchen enthalten. Beachten Sie den Punkt am Ende.

Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes.

ETHproductions
quelle
4
Für auf Regex basierende Sprachen wird ein Lookahead mit einer Breite von 0 in Betracht gezogen .../(?=[HQTW])/
Magic Octopus Urn
29
Ich dachte es wäre H, I, J, K, LMNO, P?
Setzen Sie Monica
7
Sollte die letzte Zeile nicht mit "Y und Z" enden?
KM.
@KM. Dies wurde im Sandkasten besprochen , und wir entschieden uns, bei dieser Version zu bleiben, um die Herausforderung zu vereinfachen.
ETHproductions
6
Golf scheint langweilig. Cricket ist besser.
Manoj Kumar

Antworten:

15

Vim, 42 , 40 Tastenanschläge / Byte

:h<_<cr>jjYZZP:s/./&, /g<cr>7f r<cr>9;.3;.3;.$ch.

Vielen Dank an Lynn und ihre großartige Antwort für den Tipp, das Alphabet aus der Hilfe zu holen.

Danke an RomanGräf für das Speichern von zwei Bytes!

Erläuterung:

:h<_<cr>                                      " Open up vim-help
        jj                                    " Move down two lines
          Y                                   " Yank this line (containing the alphabet)
           ZZ                                 " Close this buffer
             P                                " Paste the line we just yanked
              :s/./&, /g<cr>                  " Replace every character with that character followed by a comma and a space
                            7f                " Find the seven space on this line
                               r<cr>          " And replace it with a newline
                                    9;        " Repeat the last search (space) 9 times
                                      .       " Repeat the last edit (replace with a newline)
                                       3;     " Third space
                                         .    " Replace with newline
                                          3;  " Third space
                                            . " Replace with newline

Dann verschieben wir das Ende der Zeile mit $, ändern ein Zeichen mit zurück chund fügen einen Punkt ein.

DJMcMayhem
quelle
2
Sie dürfen nicht in Großbuchstaben konvertieren. Das OP sagte "dieser genaue Text, Groß- und Kleinschreibung wird nicht berücksichtigt".
Roman Gräf
@ RomanGräf Danke für den Tipp!
DJMcMayhem
Ha! Das Alphabet von vim help zu bekommen ist genial! Wussten Sie, dass oder haben Sie es für diese Herausforderung nachgeschlagen?
Christian Rondeau
3
@christianRondeau Ich habe es mir nicht ausgedacht. Lynn hat in dieser Antwort
DJMcMayhem
@ RomanGräf +1 für die Verwendung muss nicht
FantaC
12

05AB1E , 16 Bytes

Code

A',â79334S£»¨'.J

Erläuterung:

A                  # Push the alphabet.
 ',â               # Cartesian product with ','.
    79334S         # Push [7, 9, 3, 3, 4].
          £        # Contigious substring, pushes the substrings [0:7], [7:7+9], 
                     [7+9:7+9+3], [7+9+3:7+9+3+3], [7+9+3+3:7+9+3+3+4].
           »       # Gridify, join the inner arrays with spaces and join those arrays
                     with newlines.
            ¨      # Remove the last character.
             '.J   # Append a '.'-character.

Verwendet die CP-1252- Codierung. Probieren Sie es online!

Adnan
quelle
11

Bash + GNU-Dienstprogramme, 36

  • 5 Bytes gespart dank Neil.
echo {A..Y}, Z.|sed 's/[HQTW]/\n&/g'

Ideone.

Digitales Trauma
quelle
2
Warum nicht einfach echo {A..Y}, Z.|sed 's/[HQTW]/\n&/g'?
Neil
@ Neil Ooh sehr gut! Vielen Dank!
Digital Trauma
11

JavaScript (ES6), 66 65 Bytes

@Neil zu schlagen war unmöglich ... Deshalb habe ich es getan. :-)

f=(i=10)=>i>34?"z.":i.toString(++i)+","+` 
`[9568512>>i-9&1]+f(i)

1 Byte dank eines Tricks von @LevelRiverSt . Using String.fromCharCodeist 7 Bytes länger:

f=(i=65)=>i>89?"Z.":String.fromCharCode(i,44,i%86%83%80%71?32:10)+f(i+1)

Wie es funktioniert

Dies erzeugt rekursiv jedes Zeichen des Alphabets von abis ymit .toString(). Nach jedem Buchstaben wird ein Komma sowie ein Zeilenumbruch, wenn 9568512>>i-9&11, oder ein Leerzeichen angehängt . Wenn die Rekursion über 34 hinausgeht, dh bis z, kehrt die Funktion einfach zurück "z.".

ETHproductions
quelle
Warten Sie, was, wie funktioniert das überhaupt? : 3
Downgoat
10

Python 2.7, 67 66 63 Bytes

a=65;exec"print'%c'%a+',.'[a>89]+'\\n'[a%42%39%9^2:],;a+=1;"*26

Dennis hat ein Byte gespeichert.

Lynn
quelle
Verwenden Sie execstatt forsollte ein Byte speichern.
Dennis
6

Jelly , 19 18 Bytes

ØAp”,ṁ79334DR¤GṖ”.

Vielen Dank an @Adnan für das Golfen ab 1 Byte!

Probieren Sie es online!

Wie es funktioniert

ØAp”,ṁ79334DR¤GṖ”.  Main link. No arguments.

ØA                  Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
  p”,               Cartesian product with ','; append a comma to each letter.
             ¤      Combine the two links to the left into a niladic chain.
      79334D          Decimal; yield [7, 9, 3, 3, 4].
            R         Range; yield [[1, 2, 3, 4, 5, 6, 7], ..., [1, 2, 3, 4]].
     ṁ              Mold; reshape the array of letters with commata like the
                    generated 2D array.
              G     Grid; separate rows by spaces, columns by linefeeds.
               Ṗ    Pop; discard the last comma.
                ”.  Print the previous result and set the return value to '.'.
                     (implicit) Print the return value.
Dennis
quelle
11
31 Sekunden? Dang ...
ETHproductions
5

JavaScript (ES6), 80 bis 74 Byte

_=>[...`ABCDEFGHIJKLMNOPQRSTUVWXYZ`].join`, `.replace(/[HQTW]/g,`
$&`)+`.`

Möglicherweise kann dies mit atob / btoa verkürzt werden, wenn Sie die Verwendung der ISO-8859-1-Codierung kennen. Bearbeiten: 6 Bytes dank @RickHitchcock gespeichert.

Neil
quelle
1
@RickHitchcock Ja, ich habe das erst selbst gemerkt, nachdem ich die PHP-Antwort gelesen habe.
Neil
@ RickHitchcock Sie wollten .join`, `? Setzen Sie Backslashes vor die Backticks. (Ja, Kommentar Abschrift ist anders, seufz ...)
Neil
5

Pyke, 23 19 17 Bytes

G\,J\.+2cu  /P

Probieren Sie es hier aus!

G\,J\.+        -    ",".join(alphabet)+"."
       2c      -   split(^, size=2)
            /  -  split_sized(^, V)
         u     -   yield list [7,9,3,3] (actual bytes `u%04%07%09%03%03`)
             P - print(^)
Blau
quelle
5

R 83 71 Bytes

a=rbind(LETTERS[-26],","," ");a[3,7+3*c(0,3:5)]="\n";cat(a,"Z.",sep="")

Probieren Sie es online!

Erstellt eine Matrix aus 3 Zeilen (eine mit den Buchstaben, eine mit den Kommas und die andere mit einem Leerzeichen oder einer Newline).

Edit : Danke Billywob!

Plannapus
quelle
cat(a,sep="")spart ein paar Bytes:a=rbind(LETTERS,","," ");a[3,7+3*c(0,3:5)]="\n";cat(a[,-26],"Z.",sep="")
Billywob
Vielen Dank! Das hat sehr geholfen! Durch die direkte Verwendung von [-26]on LETTERSwird ein weiteres Byte gespeichert.
Plannapus
4

CJam, 26 Bytes

'A79333Ab{{',S2$)}*N\}/'.@

Online-Dolmetscher

'A                             Push 'A'
  79333Ab                      Push [7 9 3 3 3]
         {           }/        For each number n in the previous array...
          {      }*              Execute n times...
           ',S                     Push a comma and a space
              2$)                  Copy last letter and increment
                   N\            Place a newline under the letter on top
                       '.@     Push '.' and rotate
Sp3000
quelle
4

Brainfuck, 117 Bytes

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

Die ersten vier Zeilen haben jeweils ein Leerzeichen am Ende, und das Programm geht von 8-Bit-Zellen aus. Probieren Sie es online!

(Die Behandlung der letzten Zeile ist schwierig ...)

Sp3000
quelle
4

Perl, 37 Bytes

Dank an @Dom Hastings für diese Lösung (3 Bytes kürzer als meine, siehe unten).

say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."

Mit -E(oder -M5.010) Flag ausführen:

perl -E 'say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."'

Meine vorherige Version, 3 Bytes länger (insgesamt 40 Bytes):

perl -E '$_=join", ",A..Z;s/[HQTW]/\n$&/g;say"$_."'
Dada
quelle
1
Etwas anderer Ansatz (verwendet immer noch die Regex ...) für 37 Bytes:say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
Dom Hastings
@ DomHastings Schön, gut gemacht. Und es ist schöner, eine Aussage zu haben als drei! ;-)
Dada
4

JavaScript (ES6), 66 64 Bytes

_=>`ABCDEFG
HIJKLMNOP
QRS
TUV
WXY`.replace(/./g,"$&, ")+"Z."

Regex stimmt mit den Zeichen überein, aber nicht mit den Zeilenumbrüchen. Mit Regex Replace kann ich jedem Zeichen das "," hinzufügen.

Bearbeiten: 2 Zeichen dank ETHProductions entfernt

Grax32
quelle
1
Ich habe keine Ahnung, warum sich die anderen JS-Golfer nicht zuerst für diese Lösung entschieden haben. Hier, hab eine positive Stimme.
Mama Fun Roll
1
Mist, schöne! Ich denke , man kann die Pars in der Regex entfernen , wenn Sie ändern $1zu $&.
ETHproductions
3

Cheddar, 70 Bytes

->[65@"71,72@"80,"QRS","TUV","WXYZ"].map(@.chars.join(", ")).vfuse+'.'

Sieht so aus, als würde es nicht kürzer werden. Ich habe andere Versionen davon gemacht, die ziemlich interessante Methoden verwenden, aber dies ist die kürzeste

Probieren Sie es online!

Erläuterung

->                        // Function with no arguments
  [                       // Array, each item represents a line
   65@"71,                // See below on what @" does
   72@"80,
   "QRS",
   "TUV",
   "WXYZ"
  ].map(                  // On each item...
    @.chars.join(", ")    // Join the characters on ", "
  ).vfuse                 // Vertical fuse or join by newlines
  + '.'                   // The period at the end

Der @"Operator wird verwendet, um Zeichenfolgenbereiche zu generieren. Es wird eine Zeichenfolge generiert, die vom linken Zeichencode bis zum rechten Zeichencode beginnt.

Zum Beispiel 65ist der Zeichencode für Aund 90für Z. Wenn Sie 65 @" 90dies tun , werden A bis Z oder das Alphabet generiert.

Downgoat
quelle
3

C, 112 102 81 Bytes

Vielen Dank an cleblanc & LevelRiverSt!

i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="‌​GPSVZ"[i]?++i,10:32)‌​;}
Musarithmie
quelle
Gute Lösung. Sie können ein paar Bytes speichern, da 44 1 weniger als ',' und 46 1 weniger als 'ist.'
Cleblanc
Es besteht keine Notwendigkeit, int zu deklarieren, und Sie können auch Ints implizieren, dies sind nur 101 Bytesi,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);}}
cleblanc
Sie können diesen Ansatz auf 82 Bytes herunterkommen : i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}. Beachten Sie, dass Sie absolut alles zwischen die ?:Zeichen eines ternären Operators setzen können, auch mehrere durch Kommas getrennte Ausdrücke (es wird bis zum letzten ausgewertet.)
Level River St
3

Brainfuck, 157 Bytes

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

Probieren Sie es online aus

gtwebb
quelle
3

Ruby, 56 54 Bytes

$><<(?A..?Y).map{|c|c+('GPSV'[c]?",
":", ")}.join+"Z."

Die erste Zeile endet mit einem wörtlichen Zeilenumbruch.

Bearbeiten: speicherte zwei Bytes durch Ersetzen 'A'..'Y'durch ?A..?Y.

pgks
quelle
3

Vim, 32 Bytes

26o<C-V><C-V>64,<Esc>r.V{g<C-A>8Jj9Jj3Jj.j4JcH<C-R>"

Lässt am Ende eine leere Zeile, was erlaubt war, aber es ist seltsam, so ungeschickt zu sein. Schlimmer noch, ich ende im Einfügemodus. Ich habe einige andere Leute gesehen, die es hier gemacht haben, also denke ich, ist es erlaubt? Es fühlt sich schmutzig an.

  • 26o<C-V><C-V>64,<Esc>: Beim ersten <C-V>wird der zweite buchstäblich eingefügt. Die <C-V>64im Puffer verbleibenden Zeichen werden in ASCII-Codepunkte und dann in Buchstaben umgewandelt. Kommas schon in.
  • r.: Nie wieder am Ende sein, also mach das .jetzt.
  • V{g<C-A>: Verwendet visuelles Inkrement, um alle 64s in die ASCII-Codepunkte der Großbuchstaben umzuwandeln.
  • 8Jj9Jj3Jj.j4J: Die beliebige Leitung wird verbunden. Erstens ist 8Jstatt , 7Jweil wir mit der Leerzeile zu tun hat . Die wiederholten 3Js sind für eine Punktwiederholung geeignet.
  • cH<C-R>": Die Leute denken normalerweise an i<C-R>Einfügemodus Einfügen, aber es ist eher wie ein Einfügemodus Makro. Sachen wie <C-V>65laufen wie geschrieben und werden als Dezimalpunkt interpretiert. Dies lässt eine zusätzliche (erlaubte) Zeile am Ende und bleibt im Einfügemodus.
udioica
quelle
4
Wenn Sie ein Problem mit einer Richtlinie (oder einem Mangel daran) haben, greifen Sie diese auf Meta und nicht auf eine Antwort zurück.
Mego
2

PowerShell v3 +, 60 78 67 Bytes

-join(65..90|%{[char]$_+'.,'[$_-le89]+" "+"`n"*($_-in71,80,83,86)})

OKAY. Dieses Mal habe ich die Spezifikation tatsächlich gelesen, verstanden und befolgt. Versprechen. : D

Übernimmt das Array 65..90und durchläuft jedes Element |%{...}. Bei jeder Iteration wird eine neue Zeichenfolge mithilfe von Verkettung, Indizierung und Multiplikation erstellt.

Zuerst nehmen wir die aktuelle Nummer und charwandeln sie in einen ASCII-Buchstaben um. Das ist mit einem anderen Zeichen verknüpft, basierend auf der Indizierung in der Zeichenfolge, '.,'ob es sich um ein Komma handelt 90oder nicht Z.. Das ist eine Zeichenfolge, die verkettet wird " ", um die Buchstaben durch Leerzeichen zu trennen, und eine Zeichenfolgenmultiplikation "`n"basierend auf dem Booleschen Wert, um festzustellen, ob das aktuelle Element -indas angegebene Array ist (dh ob ein Zeilenumbruchzeichen verkettet werden muss). Die resultierende Zeichenfolge verbleibt in der Pipeline.

Diese Zeichenfolgen werden in Parens eingekapselt und -joinzu einer neuen Zeichenfolge zusammengefasst, die dann ebenfalls in der Pipeline verbleibt und Write-Outputam Ende implizit das Ergebnis ausgibt. Da `ndie Zeichenfolge vorhanden ist, wird sie beim Drucken automatisch in Zeilenumbrüche konvertiert.

Benötigt v3 + für den -inOperator. Verfügt über ein Leerzeichen in jeder Zeile, was gemäß den Herausforderungsspezifikationen in Ordnung ist.

Beispiel

PS C:\Tools\Scripts\golfing> .\now-i-know-my-abc.ps1
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. 
AdmBorkBork
quelle
1
Der Punkt am Ende fehlt.
Downgoat
Sollte am Ende der ersten vier Zeilen kein Komma stehen?
Neil
@ Neil Gute Soße. Ich werde dies löschen, bis ich die Spezifikation wirklich verstehen kann.
AdmBorkBork
2

PHP, 62 Bytes

<?=preg_filter("# ([HQTW])#","\n$1",join(", ",range(A,Z)));?>.

nur zum Vergleich 87 Bytes

<?="A, B, C, D, E, F, G,\nH, I, J, K, L, M, N, O, P,\nQ, R, S,\nT, U, V,\nW, X, Y, Z.";
Jörg Hülsermann
quelle
Sie können ein Byte speichern, indem Sie eine aktuelle Zeile anstelle von verwenden \n.
Alex Howansky
Da in jeder Zeile Leerzeichen nachgestellt werden dürfen, können Sie ein Byte speichern, indem Sie das Leerzeichen aus dem regulären Ausdruck entfernen. Sie können auch ein Byte speichern, indem Sie den (in 7.0 nicht mehr empfohlenen und entfernten) ereg_replace verwenden, da Sie die Begrenzer im regulären Ausdruck überspringen können.
user59178
@ user59178 Ich könnte 3 Bytes sparen, aber ich würde dies vermeiden. Ja, das nachfolgende Leerzeichen ist zulässig. Ich könnte als Regex schreiben "# (?=[HQTW])#"und das Ersetzen auf "\n"gleiche Bytes verkürzen und es übersichtlicher machen. Die Verwendung einer veralteten Funktion kann Anfänger verwirren. Und die physische Unterbrechung kann auf anderen Systemen als Unix falsch interpretiert werden. Sie können es als Ihren eigenen Vorschlag posten.
Jörg Hülsermann
2

MATL, 38 29 Bytes

9 Bytes gespart dank @Luis!

1Y2X{', '&Zc46h1[CEII]I*11hY{

Probieren Sie es online!

Erläuterung

1Y2     % Push the upper-case alphabet to the stack
X{      % Break the character array into a cell array (similar to a list)
        % where each element is a letter
', '&Zc % Combine back into a string with ', ' between each element
46h     % Append '.' (via ASCII code) to the end of the string
1       % Push the number 1
[CEII]  % Push the array: [7, 9, 3, 3]
I*      % Multiply this array by 3: [21, 27, 9, 9]  
llh     % Append an 11 to this array: [21, 27, 9, 9, 11] 
Y{      % Break our comma-separated list of characters into groups of this size
        % Implicitly display the result
Suever
quelle
2

R 146 Bytes

L=LETTERS
f=function(x,y=""){paste(x,collapse=paste0(", ",y))}
cat(f(c(f(L[1:7]),f(L[8:16]),f(L[17:19]),f(L[20:22]),f(L[23:26])),"\n"),".",sep="")

Erläuterung:

LETTERSist für Großbuchstaben vordefiniert.
Die fFunktion dient zum Verketten des Vektors x on ,mit additional y(wird für Zeilenumbrüche verwendet).
Die Katze wird verwendet, wenn sie \nals Zeilenumbruch gedruckt wird. fwird für die Buchstaben aufgerufen, um Zeilen zu bilden, und dann für die Zeilen erneut, um die gesamte Ausgabe zu bilden.

Wahrscheinlich golfen - ich mag die mehrfachen Anrufe von f nicht ...

pajonk
quelle
3
Die Raw-Ausgabe ist nur 77 Byte lang.
Lynn
@Lynn, ich weiß, aber hier sehe ich einige Golfmöglichkeiten.
Pajonk
2

CJam, 31 Bytes

'[,65>", "*7933Ab{3*/(\:+}%N*'.

Erläuterung:

'[,65>                             push uppercase alphabet
      ", "*                        ", " between all letters
           7933Ab                  push [7 9 3 3]
                 {3*/(\:+}%        slices of lengths 21, 27, 9, 9
                           N*'.    join slices with newlines, add final "."

Probieren Sie es online aus

Neorej
quelle
2

Julia, 71 Bytes

f()=join(join.(['A':'G','H':'P',"QRS","TUV","WXYZ"],[", "]),",\n")*"."

Benötigt 0,5 oder besser für den Rundfunk .()

Lyndon White
quelle
Zum einen hat dies derzeit keine Nachlaufzeit und benötigt es keine print/ -Funktionsdefinition? Wenn Sie jedoch nicht joinin einer Variablen speichern, wird ein Byte gespeichert.
Sp3000
Meinem Fehler fehlt das ".", Und danke für den Hinweis auf join. Ich habe falsch gezählt. Das Ausführen des Programms gibt die Zeichenfolge zurück. Ist ein Programm, das einen String zurückgibt, keine gültige Ausgabe? (Oder sind es nur Funktionen, die Dinge zurückgeben dürfen, die als Ausgabe gelten. Wenn dies f()=kürzer ist als print())
Lyndon White
Sicher, f()=oder ()->ist in Ordnung - ich denke, die Idee ist, dass Funktionen zuweisbar sind und mehrmals ausgeführt werden können, und im Gegensatz dazu wäre dies ein Code-Snippet.
Sp3000
2

Cheddar, 57 Bytes

->(65@"90).sub(/[GPSV]/g,"$0
").sub(/[^Z\n]/g,"$0, ")+"."

Probieren Sie es online! Ist das nicht schön Es ist ein schönes Rechteck.

Zwei Regex-Substitutionen. (65@"90)ist das Alphabet in Großbuchstaben, .sub(/[GPSV]/g,"$0\n")ersetzt GPSVdurch sich selbst und "\n", .sub(/[^Z\n]/g,"$0, ")ersetzt alle Nicht-Zeilenumbrüche und Z-Zeichen durch sich selbst ", "und "."fügt ein Finale hinzu ..

Conor O'Brien
quelle
1
Schöne Technik und gute Arbeit, die Downgoat übertrifft;)
ETHproductions
2

Japt, 24 Bytes

;B¬qJ+S r"[HQTW]"@R+XÃ+L

Online testen!

Wie es funktioniert

;                        // Reset various variables. B is set to "ABC...XYZ", J is set to ",", and L is set to ".".
 B¬                      // Take the uppercase alphabet and split into chars.
   qJ+S                  // Join with ", ".
        r"[HQTW]"        // Replace each H, Q, T, or W with
                 @R+XÃ   //   a newline plus the character.
                      +L // Append a period to the result.
                         // Implicit: output last expression
ETHproductions
quelle
2

Java, 116 109 105 104

String f(){String s="";for(char c=65;c<91;)s=s+c+(c>89?46:',')+("GPSV".indexOf(c++)<0?' ':10);return s;}

Ungolfed:

String f() {
  String s = "";
  for (char c = 65; c < 91;) {
    s = s + c
      + (c > 89 ? 46 : ',')
      + ("GPSV".indexOf(c++) < 0 ? ' ' : 10);
  }
  return s;
}

quelle
Sie können es mit 7 Bytes Golf spielen: Alle drei ||bis |(-3); Ändern c==90auf c>89(-1); Ändern '.'auf 46(-1); und '\n'zu 10(-2) wechseln .
Kevin Cruijssen
@ KevinCruijssen Danke, ich habe versucht, Dezimalzahlen zu verwenden, aber wenn ich beide Zeichenkonstanten in einem Ternär ersetze, ändert sich der Ausdruckstyp in eine Ganzzahl, was zu einem Bruch führte. Das Ändern einer Konstanten hat funktioniert und ein paar Bytes herausgedrückt.
2
@ KevinCruijssen danke. Wenn ich genug Kaffee in mir gehabt hätte, hätte ich daran gedacht, es selbst zu aktualisieren.
1
2 weitere Bytes: "GPSV".contains(""+c)statt c==71|c==80|c==83|c==86.
TNT
1
@ TNT Ich konnte etwas besser machen. Ich wusste, dass dieser Teil verbessert werden könnte, danke für den Schub in die richtige Richtung.
1

q, 46 Bytes

-1@'(", "sv/:0 7 16 19 22_,:'[.Q.A]),'",,,,.";
Skeevey
quelle
1

Retina, 43 Bytes


Z
{2`
$`
}T01`L`_L
.
$&, 
[HQTW]
¶$&
, $
.

Führender Zeilenumbruch ist von Bedeutung. Probieren Sie es online!

Ich benutze Retina zum ersten Mal, daher sind alle Golftipps willkommen ...

ETHproductions
quelle
1

Pyth, 25 Bytes

+Pjmj\ dc*G\,j94092 23)\.

Ein Programm, das das Ergebnis an STDOUT ausgibt.

Probieren Sie es online aus

Wie es funktioniert

+Pjmj\ dc*G\,j94092 23)\.  Program. Input: none
          G                Yield string literal'abcdefghijklmnopqrstuvwxyz'
         * \,              Cartesian product of that with ',', yielding a list of
                           characters with appended commas
             j94092 23)    Yield the integer 94092 in base-23, giving [7, 16, 19, 22]
        c                  Split the comma-appended character list at those indices
   mj\                     Join each element of that on spaces
  j                        Join that on newlines
 P                         All but the last element of that, removing trailing ','
+                      \.  Append '.'
                           Implicitly print
TheBikingViking
quelle