PowerShell v3 +, 60 78 67 байт
-join(65..90|%{[char]$_+'.,'[$_-le89]+" "+"`n"*($_-in71,80,83,86)})
ХОРОШО. На самом деле я прочитал, понял и следовал спецификации на этот раз. Promise. : 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])/