З огляду на введення рядка, що представляє визначення функції, виведіть рядок з новими рядками та пробілами, щоб аргументи функції були розділені на новий рядок та вирівняні.
Рядок введення буде відповідати наступному шаблону:
По-перше, він розпочнеться з префікса, який завжди має принаймні один символ і не містить жодного символу
,().Відкрита дужка (
() позначатиме початок списку аргументів.Після цього вийде список нульових або більше аргументів. Вони розділені рядком
", "(комою, а потім пробілом). Жоден із аргументів не містить жодного символу,().Близька дужка (
)) позначатиме кінець списку аргументів.Нарешті, може бути знайдено постфікс, який дорівнює нулю або більше символів і може містити символи
,().
Вхідний рядок буде складатися виключно з друкованого ASCII (це означає, що він ніколи не буде містити новий рядок).
Вихід повинен бути:
Префікс, скопійований дослівно, і відкриті дужки.
Список аргументів цього разу розділений не
", "комою, новим рядком, а стільки пробілів, скільки потрібно для вертикального вирівнювання першого символу кожного аргументу.Близький батьківський і постфікс (якщо він існує) дослівно.
Оскільки це код-гольф , найкоротший код у байтах виграє.
Тестові приклади (формат: однолінійний вхід з подальшим результатом з подвійним новим рядком):
def foo(bar, baz, quux):
def foo(bar,
baz,
quux):
int main() {
int main() {
fn f(a: i32, b: f64, c: String) -> (String, Vec<i32>) {
fn f(a: i32,
b: f64,
c: String) -> (String, Vec<i32>) {
function g(h) {
function g(h) {
def abc(def, ghi, jkl, mno)
def abc(def,
ghi,
jkl,
mno)
x y z(x, y, z) x, y, z)
x y z(x,
y,
z) x, y, z)
a>>" "справді розумний ...