PowerShell v3 +, 60 78 67 bytes
-join(65..90|%{[char]$_+'.,'[$_-le89]+" "+"`n"*($_-in71,80,83,86)})
ESTÁ BEM. Eu realmente li, entendi e acompanhei as especificações dessa vez. Promessa. : D
Pega a matriz 65..90
e faz um loop sobre cada elemento |%{...}
. A cada iteração, estamos construindo uma nova string usando concatenação, indexação e multiplicação.
Primeiro, pegamos o número atual e o char
convertemos para torná-lo uma letra ASCII. Isso é concatenado com outro caractere, com base na indexação na cadeia de caracteres, '.,'
quer estejamos 90
ou não (ou seja, contabilizar Z.
enquanto o resto é vírgula). Essa é a sequência concatenada " "
para separar as letras em espaço e a multiplicação de sequência com "`n"
base no valor booleano para saber se o elemento atual é -in
a matriz especificada (ou seja, se precisamos concatenar em um caractere de nova linha). A sequência resultante é deixada no pipeline.
Essas strings são encapsuladas em parênteses e -join
agrupadas em uma nova string, que também é deixada no pipeline e implícita Write-Output
no final, imprime o resultado. Como temos `n
a string, ela é automaticamente convertida em novas linhas após a impressão.
Requer v3 + para o -in
operador. Tem um espaço à direita em cada linha, o que é bom para as especificações do desafio.
Exemplo
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])/