PowerShell v3 +, 60 78 67 byte
-join(65..90|%{[char]$_+'.,'[$_-le89]+" "+"`n"*($_-in71,80,83,86)})
OK. Questa volta ho letto, compreso e seguito le specifiche. Promettere. : D
Prende l'array 65..90
e passa su ogni elemento |%{...}
. Ogni iterazione, stiamo costruendo una nuova stringa usando concatenazione, indicizzazione e moltiplicazione.
Innanzitutto, prendiamo il numero corrente e lo char
lanciamo per renderlo una lettera ASCII. Questo è concatenato con un altro carattere, basato sull'indicizzazione nella stringa, '.,'
indipendentemente dal fatto che ci troviamo 90
o meno (vale a dire, da tenere in considerazione Z.
mentre tutte le altre sono virgole). Questa è una stringa concatenata " "
per separare le lettere nello spazio e la moltiplicazione di stringhe in "`n"
base al valore booleano per stabilire se l'elemento corrente è -in
l'array specificato (ovvero se dobbiamo concatenare un carattere di nuova riga). La stringa risultante viene lasciata sulla pipeline.
Quelle stringhe sono incapsulate in parentesi e -join
riunite in una nuova stringa, che viene quindi lasciata sulla pipeline e implicita Write-Output
alla fine stampa il risultato. Dal momento che abbiamo `n
nella stringa, viene automaticamente convertito in newline al momento della stampa.
Richiede v3 + per l' -in
operatore. Ha uno spazio finale su ogni riga, il che è OK per le specifiche della sfida.
Esempio
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.
/(?=[HQTW])/