Dada una entrada de una cadena que representa una definición de función, envíe la cadena con líneas nuevas y espacios insertados para que los argumentos de la función estén separados y alineados con la línea nueva.
La cadena de entrada seguirá el siguiente patrón:
Primero, comenzará con un prefijo, que siempre tiene al menos un carácter y no contiene ninguno de los caracteres
,().Un paréntesis abierto (
() marcará el comienzo de la lista de argumentos.Seguirá una lista de cero o más argumentos. Estos están separados por la cadena
", "(una coma y luego un espacio). Ninguno de los argumentos contendrá ninguno de los caracteres,().Un paréntesis cerrado (
)) marcará el final de la lista de argumentos.Por último, se puede encontrar un postfix, que tiene cero o más caracteres y puede contener los caracteres
,().
La cadena de entrada consistirá únicamente en ASCII imprimible (lo que significa que nunca contendrá una nueva línea).
La salida debe ser:
El prefijo, copiado literalmente, y el paréntesis abierto.
La lista de argumentos, esta vez separada no por
", "una coma, una nueva línea y tantos espacios como sea necesario para alinear verticalmente el primer carácter de cada argumento.El cierre paren y postfix (si existe) textualmente.
Como se trata de code-golf , ganará el código más corto en bytes.
Casos de prueba (formato: entrada de una sola línea seguida de salida seguida de una nueva línea doble):
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>>" "es realmente inteligente ...