Debe producir una función que anida una cadena sdentro de una matriz, nveces
>>> N("stackoverflow",2)
[['stackoverflow']]
Parámetros:
- s- Una cuerda ascii
- n- un entero- >= 0
Reglas
- El código más corto gana.
- La salida será una anidada array,listotuple(tipo o similar basado fuera una matriz)
Casos de prueba
>>> N("stackoverflow",0)
'stackoverflow'
>>> N("stackoverflow",1)
['stackoverflow']
>>> N("stackoverflow",5)
[[[[['stackoverflow']]]]]
Inspirado por: Anidar una cadena dentro de una lista n veces, es decir, lista de una lista de una lista

"? P.ejN("stack\"overflow",5)Respuestas:
Jalea , 2 bytes
Ligeramente confuso, ya que: (1) Jelly no tiene cadenas, solo listas de caracteres; y 2); la salida no mostrará el anidamiento. Para ver que esto realmente está haciendo lo que se le pide, mire una representación en cadena de Python del resultado con:
Un par adicional de
[]estará presente ya que la cadena en sí será una lista de caracteres. Por ejemplo¿Cómo?
El código de prueba de concepto agrega:
fuente
Java y C #, 62 bytes
Debería funcionar sin modificaciones tanto en Java como en C #.
fuente
05AB1E , 3 bytes
Código
Explicación
Esto significa que esto también funciona para el caso de prueba 0 , ya que la cadena ya está en la pila.
Pruébalo en línea!
fuente
JavaScript (ES6), 20 bytes
Aunque la gente normalmente me molesta para que modifique mis funciones para el ahorro de 1 byte, este es un caso en el que realmente contribuye a la solución.
fuente
d=>g=n=>n?[g(n-1)]:dMathematica, 13 bytes
fuente
CJam ,
76 bytesIntérprete en línea
Esta es una función sin nombre que toma sus argumentos de la pila como
S N,Ssiendo la cadena yNlas envolturas. Puede ejecutarlo con el~operador, lo que significa evaluar.Explicación:
fuente
{{a}*}o{'a*~}.{a}n veces) en lugar del segundo (producir una cadena de nsay ejecutarlo).Javascript ES6, 23 bytes
Función recursiva
Resultados de curry en la misma longitud
fuente
Brachylog , 10 bytes
Pruébalo en línea!
Explicación
Esto sería de 3 bytes si no se corrigió. Aquí necesitamos todo esto para obtener la lista
[String, T, built-in_group], aunque[String, T]ya es nuestra entrada.Desafortunadamente,
:gresulta directamente[[String, T], built-in_group], lo que no se reconoce correctamenteiporque el número enteroTestá dentro de la primera lista.fuente
MATL, 6 bytes
Esto produce una matriz de celdas anidadas como salida. Sin embargo, con la pantalla predeterminada de MATL, no es necesario ver que es lo que es, ya que no mostrará todas las llaves. La demostración a continuación es una versión ligeramente modificada que muestra la representación de cadena de la salida.
Pruébalo en línea
Explicación
fuente
Pyke, 3 bytes
Pruébalo aquí!
fuente
Pyth , 3 bytes
Enlace permanente
Esto generará algo como
...[[[[['string']]]]].... No va a citar para la profundidad cero:string.Explicación:
Si desea citar en profundidad cero, use esta solución de 4 bytes (explicación):
fuente
PHP, 60 bytes
48 Bytes si solo se parece a la tarea
fuente
function f($s,$n){return$n?[f($s,$n-1)]:$s;}.print_r()y, si no le gusta esa opción,serialize()ambas son más cortas quejson_encode()la diferenciación de la salida.')al final del código parece extraño.Rubí: 23 bytes
Esto se actualiza para convertirlo en un Proc invocable en lugar del fragmento original. Me interesaría saber si hay una manera de haber
sdevuelto implícitamente en lugar de tener que devolverlo explícitamente.fuente
->s,n{...}.C,
44 bytes, 41 bytesPuede probarlo haciendo lo siguiente:
La salida:
Por supuesto, recibirás advertencias. Esto funciona en
gccbash en mi máquina Windows (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)así como en una verdadera máquina Linux (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)).fuente
int*n(s,a)int*s;{return!a?s:n(&s,a-1);}funciona con gcc.cc -v->Apple LLVM version 8.0.0 (clang-800.0.38).!de la condición ternaria y cambiar el ordensyn(&s,a-1)guardar un byte?n(s,6), debe cambiar***a******la declaración de variable y usar. Esto es necesario exactamente porque la función hace lo que se espera que haga: anidar la cadena en una matriz varias (aquí: 6) veces. Por supuesto, todavía obtendría tres niveles de[]porque están codificados. Creo que el programa no debería generarlos en absoluto. Este desafío no se trata de corchetes, se trata de anidar. Algunos lenguajes imprimen matrices con corchetes, C no tiene ninguna función integrada para imprimirlos. ¿Y qué? No es necesario aquí.*de la firma en la función?Python, 32 bytes
fuente
Ruby, 25 caracteres.
Reescribe la solución Python de jamylak .
Ejecución de muestra:
fuente
C # 6, 50 bytes
fuente
n<1? También -2 bytes si usa enobjectlugar dedynamic.Rubí, 24 bytes.
Llamado igual que en la respuesta de manatwork , pero una implementación más extraña.
*senvuelve la entrada (una cadena posiblemente anidada) en una matriz. Entonces, sines cero,s[n]devuelve el primer elemento des, convirtiendo la función en un no-op. De lo contrario, regresanilyasque solo tendrá un elemento, por lo que pasamos a la llamada recursiva.fuente
V , 6 bytes
Pruébalo en línea!
Explicación:
fuente
Perl 6 , 23 bytes
Expandido:
fuente
Agda, 173 bytes
Dado que el tipo de retorno de la función depende del número dado como argumento, este es claramente un caso en el que se debe usar un lenguaje de tipo dependiente. Desafortunadamente, jugar al golf no es fácil en un idioma en el que tienes que importar productos naturales y listas para usarlos. En el lado positivo, usan
sucdonde hubiera esperado lo detalladosucc. Entonces aquí está mi código:(Espero haber encontrado todos los lugares donde se pueden omitir espacios).
LEs una función de tipo que dada una naturalny un tipoadevuelve el tipo denveces de listas anidadasa, porL 3 Boollo que sería el tipo de listas de listas de listas deBool(si tuviéramos importadoBool). Esto nos permite expresar el tipo de nuestra función como(n : ℕ) -> {a : Set} -> a -> L n a, donde las llaves hacen implícito ese argumento. El código usa una forma más corta de escribir este tipo. La función ahora se puede definir de una manera obvia mediante la coincidencia de patrones en el primer argumento.Cargado este archivo con una
.agdaextensión en emacs permite el usoC-c C-n(evaluar término de forma normal), de entrada, por ejemplo,f 2 3y obtener la respuesta correcta en una forma incómoda:(3 ∷ []) ∷ []. Ahora, por supuesto, si quieres hacer eso con cadenas, tienes que importarlas ...fuente
→lugar de->, pero por supuesto eso aumenta el tamaño de un archivo codificado UTF-8.k, 3 bytes
Tomado como una función diádica,
/aplicará iterativamente la función de la izquierda,:(enlist) n veces al segundo argumento.Ejemplo:
fuente
PHP, 44 bytes
nada sofisticado, solo una función recursiva
fuente
Python 2, 32 bytes
Pone
nlos corchetes abiertos antes de la cadena yncierra los corchetes antes de ella, luego evalúa el resultado. Si se permite una salida de cadena,evalse puede eliminar.fuente
En realidad , 4 bytes
La entrada es
stringentoncesn. Sugerencias de golf bienvenidas. Pruébalo en línea!Ungolfing
fuente
R,
3940 bytesEDITAR: se corrigió el
n=0problema gracias a @rturnbull.Función que toma dos entradas
s(cadena) yn(anidamiento) y genera la lista anidada. Tenga en cuenta que la clase Rlistimprime de forma nativa la salida de manera diferente a la mayoría de los otros idiomas, sin embargo, es funcionalmente similar a un mapa de clave / valor (con claves posiblemente sin nombre) o una lista en Python.Ejemplo
fuente
n=0. Antes de ver su respuesta, se me ocurrió una solución recursiva que puede manejarn=0, pero es 1 byte más larga que su solución (40 bytes):f=function(s,n)if(n)list(f(s,n-1))else sn=0caso. Sin embargo, su solución es en realidad38bytes que excluyen el nombre de la función y, por lo tanto, son más cortos. Gran capturaf(s,n-1)llamada dentro de él.) Las funciones anónimas recursivas no son posibles en R, que yo sepa.f=function(s,n)'if'(n,list(f(s,n-1)),s).Raqueta 83 bytes
Sin golf:
Pruebas:
Salida:
fuente
Haskell,
4038 bytesEl estricto sistema de tipos de Haskell evita la devolución de diferentes tipos (cadenas frente a lista de cadenas frente a lista de cadenas, ...), por lo que tengo que definir mi propio tipo que se adapte a todos esos casos. La función principal
fllama recursivamentenveces al constructorCpara anidar yNpara el caso base.Ejemplo de uso (con
deriving (Show)agregado al nuevodatatipo para poder imprimirlo):f 4 "codegolf"->C (C (C (C (N "codegolf")))).Editar: @Christian Sievers guardó 2 bytes reescribiendo la función en un estilo sin puntos para el argumento de cadena. ¡Gracias!
fuente
derivingcláusula adicional : los padres no son necesarios. - No estoy seguro de si está bien anidar solo elCconstructor que no es como una lista. Mi intento muy similar se basó en un tipo de datos definido comodata D x=J x|L[D x].f 0=N;f n=C. f(n-1)1:(2:(3:([])))con C (C (C (N "codegolf"))).Ces cons (:),Nes nulo ([]).Cno contras, solo incrusta, su tipo de datos no puede expresarse[["a","b"],["c"]]. Pero tal vez eso está bien ya que este problema solo necesita singletons. -f n=...No es un punto libre. ¿Punto reducido?Either. Ej. ) Incluso si eso significara que los constructores son un poco más detallados?tinylisp (repl), 34 bytes
Define una función
F. Técnicamente, tinylisp no tiene cadenas, pero este código funcionará para cualquier tipo de datos que se le dé.Sin golf (clave para construir:
d= definir,q= citar,i= si,c= contras,s= restar):Ejemplo de uso:
fuente
Clojure, 24 bytes
Clojure es algo competitivo aquí.
iteratecrea una secuencia dex, (f x), (f (f x)) ...,nthdevuelve el elemento necesario.Véalo en línea: https://ideone.com/2rQ166
fuente