Texto de sabor
El esolang basado en pila baja carga tiene algunos vínculos interesantes a la programación funcional. Uno de ellos es su tratamiento del tipo de datos numéricos: como el cálculo lambda, usted representa el número natural N por una función que realiza una acción N veces.
Para simplificar las cosas, solo consideraremos el siguiente subconjunto de comandos de Subcarga:
:- Este comando duplica el elemento superior en la pila.*- Este comando concatena los dos primeros elementos de la pila en un solo elemento.
Definimos un número N de subcarga como una cadena de :y *que, cuando se ejecuta, consume el elemento superior de la pila y produce N copias de ese elemento concatenados juntos. Algunos ejemplos:
- No hay números de subcarga 0, -1, 1/2, π.
- La cadena vacía
es el número 1 de baja carga, porque deja la pila intacta. :*es el número 2 de Subcarga, porque duplica el elemento superior y luego concatena esas dos copias en un solo elemento:(A):*=(A)(A)*=(AA).::**es el número de subcarga 3:(A)::**=(A)(A):**=(A)(AA)*=(AAA).:::***es el número de subcarga 4.:*:*es también el número de subcarga 4:(A):*:*=(AA):*=(AA)(AA)*=(AAAA).
En general, encontrará que, si My Nson los números de Subcarga M y N, entonces :N*es el número N + 1, y MNes el número M × N.
El reto
Su tarea es escribir el programa más corto (tomando entrada en STDIN) o la función (tomando entrada a través del argumento) que produce la representación más corta del número de Subcarga para su entrada como una cadena. Es decir, si la entrada es un número natural positivo N> 1, debe producir un número de subcarga N cuya longitud en caracteres es menor o igual que la de cualquier otro número de subcarga N.
Muestra de entradas y salidas: ("Entrada - OUTPUT.")
- 1 -
. - 2 -
:*. - 5 -
::*:**(2 × 2 + 1). - 7 -
::*::***(2 × 3 + 1) o:::**:**(3 × 2 + 1). - 33 -
::*:*:*:*:**(2 × 2 × 2 × 2 × 2 + 1). - 49 -
::*:*:*:*::***(16 × 3 + 1, longitud 14) pero no::*::***::*::***(7 × 7, longitud 16).
Si la entrada no es un número natural positivo, puede devolver un error, producir un comportamiento indefinido o incluso no terminar. Se agradece una explicación del método de su presentación para encontrar la respuesta.
Se aplican restricciones de laguna estándar: sin entrada adicional, sin solicitudes web, el valor de salida / retorno debe ser exactamente la respuesta y no un flujo aleatorio infinito de :y *, etc.
xes 2*A117498(x)donde A117498 proporciona la combinación óptima de métodos binarios y factoriales para encontrar una cadena de suma.