Dada a entrada de uma sequência que representa uma definição de função, imprima a sequência com novas linhas e espaços inseridos para que os argumentos da função sejam separados por novas linhas e alinhados.
A sequência de entrada seguirá o seguinte padrão:
Primeiro, ele começará com um prefixo, que sempre tem pelo menos um caractere e não contém nenhum dos caracteres
,()
.Um parêntese aberto (
(
) marcará o início da lista de argumentos.Uma lista de zero ou mais argumentos será seguida. Estes são separados pela cadeia de caracteres
", "
(uma vírgula e depois um espaço). Nenhum dos argumentos conterá nenhum dos caracteres,()
.Um parêntese próximo (
)
) marcará o final da lista de argumentos.Por fim, pode ser encontrado um postfix, que tem zero ou mais caracteres e pode conter os caracteres
,()
.
A sequência de entrada consistirá apenas em ASCII imprimível (o que significa que nunca conterá uma nova linha).
A saída deve ser:
O prefixo, copiado literalmente, e o parêntese aberto.
A lista de argumentos, desta vez separada não por
", "
vírgula, nova linha e quantos espaços forem necessários para alinhar verticalmente o primeiro caractere de cada argumento.O ponto final e o pós-fixos (se existir) literalmente.
Como esse é o código-golfe , o código mais curto em bytes será vencedor.
Casos de teste (formato: entrada de linha única seguida de saída seguida de nova linha dupla):
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>>" "
é realmente inteligente ...