PowerShell v3 +, 60 78 67 байт
-join(65..90|%{[char]$_+'.,'[$_-le89]+" "+"`n"*($_-in71,80,83,86)})
ГАРАЗД. Я справді читав, розумів і дотримувався специфікації цього разу. Обіцяти. : D
Бере масив 65..90
і петлі над кожним елементом |%{...}
. Кожну ітерацію ми створюємо новий рядок, використовуючи конкатенацію, індексацію та множення.
Спочатку ми беремо поточне число і передаємо char
його, щоб зробити його буквою ASCII. Це об'єднано з іншим символом, заснованим на індексації в рядку, '.,'
чи ми знаходимось, 90
чи ні (тобто для обліку, Z.
поки всі інші будуть комами). Це рядок, з'єднаний з " "
пробілами, розділеними літерами, і множенням рядків на "`n"
основі булевого значення для того, чи є поточний елемент -in
вказаним масивом (тобто, чи потрібно нам об'єднуватися в символ нового рядка). Отримана струна залишається на конвеєрі.
Ці рядки інкапсульовані в паренах і -join
разом зведені в нову рядок, який також залишається на конвеєрі і неявно Write-Output
в кінці друкує результат. Оскільки у нас є `n
рядок, вона автоматично перетворюється в нові рядки після друку.
Потрібна v3 + для -in
оператора. На кожному рядку є пробіл, який відповідає нормам специфікації.
Приклад
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])/