En APL, puede escribir funciones tácitas, llamadas trenes . Cómo funcionan es irrelevante para este desafío. Estas son las diferentes formas en que se pueden agrupar, utilizando ⍴
como función:
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
El orden sigue siendo el mismo. El procedimiento es que, siempre que haya estrictamente más de 3 funciones, las últimas 3 funciones se agrupan en una función. Si nos encontramos con un tren anidado, lo paréntesis primero, antes de continuar. Aquí está el procedimiento aplicado a ⍴⍴⍴⍴⍴⍴
:
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Aquí está el mismo procedimiento aplicado a ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
Entrada
Para este desafío, la entrada se simplificará. Esto significa que puede elegir 2 caracteres diferentes para abrir y cerrar paréntesis y 1 carácter para funciones, diferentes de los elegidos para paréntesis. Los caracteres que elija deben ser consistentes. La entrada no estará vacía y no contendrá paréntesis sin contenido (es decir ()
).
Salida
De nuevo, puede elegir 3 caracteres diferentes, 2 para paréntesis y 1 para funciones. Tenga en cuenta que no necesitan ser los mismos que los elegidos para la entrada, pero deben ser consistentes.
Reglas
- Si hay paréntesis que solo encierran una función dentro de ellos en la entrada, debe eliminarlos en la salida. Es posible que su salida no contenga paréntesis innecesarios (es decir, que encierra solo una función o que encierra toda la salida).
- No necesita implementar el algoritmo utilizado aquí, siempre que su solución sea válida para este desafío.
- Entrada y salida son cadenas en el formato explicado en las secciones de Entrada y Salida. La entrada tendrá al menos un carácter.
- El uso de las lagunas estándar está estrictamente prohibido.
- Este es el código de golf , por lo que gana la respuesta más corta. Sin embargo, no habrá una respuesta aceptada, ya que esta es una competencia por idioma, y para alentar la respuesta en idiomas en los que esta tarea resultaría en un código más largo en comparación con el código escrito en otros idiomas.
Casos de prueba
Los caracteres utilizados aquí son ()⍴
, debe reemplazarlos con los caracteres elegidos.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
Este desafío ha sido publicado en el Sandbox. Si tiene el privilegio requerido, puede ver la publicación de sandbox aquí .