Biorąc pod uwagę ciąg znaków reprezentujący definicję funkcji, wypisz ciąg z wstawionymi znakami nowej linii i spacjami, tak aby argumenty funkcji były oddzielone znakiem nowej linii i wyrównane.
Łańcuch wejściowy będzie zgodny z następującym wzorem:
Po pierwsze, rozpocznie się od prefiksu, który zawsze ma co najmniej jeden znak i nie zawiera żadnego ze znaków
,().Otwarty nawias (
() oznacza wtedy początek listy argumentów.Następnie pojawi się lista zero lub więcej argumentów. Są one oddzielone ciągiem
", "(przecinek, a następnie spacja). Żaden z argumentów nie będzie zawierał żadnego ze znaków,().Zamknięty nawias (
)) oznacza koniec listy argumentów.Na koniec może zostać znaleziony postfiks, który ma zero lub więcej znaków i może zawierać znaki
,().
Łańcuch wejściowy będzie się składał wyłącznie z drukowalnego ASCII (co oznacza, że nigdy nie będzie zawierał nowej linii).
Dane wyjściowe muszą być:
Prefiks, skopiowany dosłownie i otwarty nawias.
Lista argumentów, tym razem oddzielona nie
", "przecinkiem, lecz przecinkiem, znakiem nowej linii i tyloma spacjami, ile potrzeba do wyrównania w pionie pierwszego znaku każdego argumentu.Zamknięty paren i postfiks (jeśli istnieje) dosłownie.
Ponieważ jest to code-golf , wygra najkrótszy kod w bajtach.
Przypadki testowe (format: wejście jednowierszowe, następnie wyjście, a następnie podwójna nowa linia):
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>>" "jest naprawdę sprytny ...