El desafío aquí es extender una implementación de palindrome dado lo siguiente como entradas:
n > 1
y una listal
.
Su programa debe palindrome la lista tanto vertical como horizontalmente, es decir, primero debe palindrome la lista misma, luego cada elemento de la lista; O al revés. Antes de la palindromización, se garantiza que todos los elementos tengan la misma longitud. La acción del palíndromo se realizará entonces n
en secuencia hasta que se cumpla la salida deseada. La forma más fácil de mostrar los resultados esperados es simplemente ejecutar algunos ejemplos:
Una iteración realizada en [123,456,789]
:
Primero palindromizas la lista [123,456,789,456,123]
.
- Si bien esto no es un palíndromo si se une, es un palíndromo en términos de la lista.
[a,b,c]
se convirtió[a,b,c,b,a]
, por lo que la LISTA fue palindromizada.
Luego, palindromizas cada elemento de la lista [12321,45654,78987,45654,12321]
.
Así es como se realiza cada iteración, es esencialmente un palíndromo omnidireccional.
Dado n=1 and l=[123,456,789]
:
12321
45654
78987
45654
12321
Dado n=2 and l=[123,456,789]
123212321
456545654
789878987
456545654
123212321
456545654
789878987
456545654
123212321
Dado n=1 and l=[3,2,1]
:
3
2
1
2
3
Dado n=2 and l=["hat","mad"," a "]
:
hatahatah
madamadam
a a a a
madamadam
hatahatah
madamadam
a a a a
madamadam
hatahatah
Dado n=2 and l=[" 3 ","2000"," 100"]
:
3 3 3 3
2000002000002
100 00100 001
2000002000002
3 3 3 3
2000002000002
100 00100 001
2000002000002
3 3 3 3
Dado n=4 and l=["3 ","20","1 "]
:
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
20202020202020202
1 1 1 1 1 1 1 1 1
20202020202020202
3 3 3 3 3 3 3 3 3
Dado n=3 and l=["_|__","__|_","___|"]
:
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
Dado n=2 and l=["---|---","__|","___|","____|"]
:
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
Reglas
n
siempre será mayor que 1.l
siempre tendrá más de 1 elemento.- Todos los elementos
l
son de la misma longitud. - Esta es la solución más corta de código de golf que se marcará como ganador.
Respuestas:
05AB1E , 4 bytes
Tenga en cuenta que si solo se requiere una única iteración (
n=1
), entonces el programa sería el palíndromoû€û
.Pruébalo en línea
Si el relleno de la entrada seguía siendo una parte requerida del programa (11 bytes):
No pude encontrar una forma más corta de justificar correctamente. La justificación hacia la izquierda y el centrado fueron fáciles, pero esto fue más largo por alguna razón. Usar
E
o en²
lugar deI
también funciona.fuente
Python 2 ,
7163 bytesPruébalo en línea!
Asigne una función de palíndromo para
f
generar y evaluar el siguiente patrón (paran=4
)f(map(f,f(map(f,f(map(f,f(map(f,<input>))))))))
fuente
Jalea , 6 bytes
Enlace diádico, o programa completo tomando la lista y
n
.Pruébalo en línea!
Usando ambas versiones del fantástico "rebote" incorporado de Lynn.
fuente
Python 2 , 64 bytes
Pruébalo en línea!- pie de página imprime cada uno de los elementos de la lista resultante, uno por línea, una "impresión bonita".
h
es la función de palindomización, se agrega a la entrada, todos los elementos de una lista desde el último excepto uno, índice -2, al inicio en pasos de tamaño -1.f
llamah
con el resultado de llamarh
a cada elemento por turno, se reducen
en uno y se llama a sí mismo hastan
llegar a 0, momento en el que sea
encuentra el producto terminado.fuente
f=
funciones recursivas, un día lo recordaré.APL, 15 bytes
Explicación:
(
...)⍣⎕⊢⎕
: lea la lista yN
como entrada, y losN
tiempos de ejecución :⊢,1↓⌽
: la lista, seguida de la cola de la lista invertidaZ←
: almacena esta función enZ
Z¨
: y aplicarlo a cada elemento de la lista tambiénPrueba:
fuente
Groovy, 66 bytes
fuente
Haskell, 51 bytes
Ejemplo de uso:
["123","456","789"] ? 1
->["12321","45654","78987","45654","12321"]
. Pruébalo en línea! .(++)<*>reverse.init
crea un palíndromo de una lista,iterate(...)x
repite esto una y otra vez y recopila los resultados intermedios en una lista,!!n
selecciona el enésimo elemento de esta lista.(%n)<$>x%n
hace un n-palíndromo de cada elemento del n-palíndromo dex
.fuente
JavaScript (ES6), 87 bytes
fuente
Pip , 25 bytes
24 bytes de código, +1 para
-l
bandera.Toma la lista como argumentos de línea de comandos y el número n de stdin. Pruébalo en línea!
Explicación
fuente