O desafio aqui é estender uma implementação do palíndromo considerando o seguinte como entradas:
n > 1
e uma listal
.
Seu programa deve palindrome a lista vertical e horizontalmente, ou seja, primeiro palindrome a lista em si, depois cada elemento da lista depois; ou o contrário. Antes da palindromização, todos os elementos têm o mesmo comprimento. A ação do palíndromo deve então ser executada n
vezes em sequência até que a saída desejada seja alcançada. A maneira mais fácil de mostrar os resultados esperados é apenas executar alguns exemplos:
Uma iteração realizada em [123,456,789]
:
Primeiro você palindromize a lista para [123,456,789,456,123]
.
- Embora este não seja um palíndromo se reunido, é um palíndromo em termos da lista.
[a,b,c]
tornou-se[a,b,c,b,a]
, então a LIST foi palindromizada.
Em seguida, você palindromize cada elemento da lista [12321,45654,78987,45654,12321]
.
É assim que cada iteração é executada, é essencialmente um palíndromo omnidirecional.
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=["---|---","__|","___|","____|"]
:
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
Regras
n
sempre será maior que 1.l
sempre terá mais de 1 elemento.- Todos os elementos
l
têm o mesmo comprimento. - Esta é a solução mais curta do code-golf será marcada como vencedora.
Respostas:
05AB1E , 4 bytes
Observe que se apenas uma iteração fosse necessária (
n=1
), o programa seria o palíndromoû€û
.Experimente online
Se o preenchimento da entrada ainda era uma parte necessária do programa (11 bytes):
Não consegui encontrar uma maneira mais curta de justificar direito. A justificação à esquerda e a centralização eram fáceis, mas isso era mais demorado por algum motivo. Usar
E
ou em²
vez deI
também funciona.fonte
Python 2 ,
7163 bytesExperimente online!
Designe uma função palíndromo para
f
, gere e avalie o seguinte padrão (paran=4
)f(map(f,f(map(f,f(map(f,f(map(f,<input>))))))))
fonte
Gelatina , 6 bytes
Link diádico ou programa completo, levando a lista e
n
.Experimente online!
Usando as duas versões do fantástico "salto" interno de Lynn.
fonte
Python 2 , 64 bytes
Experimente online! - rodapé imprime cada um dos elementos da lista resultante, um por linha, uma "impressão bonita".
h
é a função de palindomização, ela anexa à entrada todos os elementos de uma lista desde o último, exceto o índice -2, até o início em etapas de tamanho -1.f
chamah
com o resultado de chamarh
cada elemento, por sua vez, reduzn
em um e chama a si próprio atén
atingir 0, quandoa
é o produto final.fonte
f=
funções recursivas, um dia lembrarei.APL, 15 bytes
Explicação:
(
...)⍣⎕⊢⎕
: leia a lista eN
como entrada e osN
tempos de execução :⊢,1↓⌽
: a lista, seguida pelo final da lista invertidaZ←
: armazene esta função emZ
Z¨
: e aplique-o a cada elemento da lista tambémTeste:
fonte
Groovy, 66 bytes
fonte
Haskell, 51 bytes
Exemplo de uso:
["123","456","789"] ? 1
->["12321","45654","78987","45654","12321"]
. Experimente online! .(++)<*>reverse.init
cria um palíndromo de uma lista,iterate(...)x
repete isso várias vezes e coleta os resultados intermediários em uma lista,!!n
escolhe o enésimo elemento dessa lista.(%n)<$>x%n
faz um n-palíndromo de cada elemento do n-palíndromo dex
.fonte
JavaScript (ES6), 87 bytes
fonte
Pip , 25 bytes
24 bytes de código, +1 para
-l
sinalizador.Leva a lista como argumentos de linha de comando e o número n de stdin. Experimente online!
Explicação
fonte