Le défi ici consiste à étendre une implémentation du palindrome compte tenu des éléments suivants en entrée:
n > 1
et une listel
.
Votre programme doit palindrome la liste à la fois verticalement et horizontalement, c'est-à-dire qu'il doit d'abord palindrome la liste elle-même, puis chaque élément de la liste après; ou l'inverse. Avant la palindromisation, tous les éléments sont garantis de longueur égale. L'action palindrome doit alors être exécutée plusieurs n
fois de suite jusqu'à ce que la sortie souhaitée soit atteinte. Le moyen le plus simple d'afficher les résultats attendus consiste simplement à parcourir quelques exemples:
Une itération effectuée sur [123,456,789]
:
Commencez par palindromiser la liste [123,456,789,456,123]
.
- Bien que ce ne soit pas un palindrome s'il est réuni, c'est un palindrome en termes de liste.
[a,b,c]
est devenu[a,b,c,b,a]
, donc la LISTE a été palindromisée.
Ensuite, vous palindromisez chaque élément de la liste [12321,45654,78987,45654,12321]
.
C'est ainsi que chaque itération est effectuée, c'est essentiellement un palindrome omnidirectionnel.
Étant donné n=1 and l=[123,456,789]
:
12321
45654
78987
45654
12321
Donné n=2 and l=[123,456,789]
123212321
456545654
789878987
456545654
123212321
456545654
789878987
456545654
123212321
Étant donné n=1 and l=[3,2,1]
:
3
2
1
2
3
Étant donné n=2 and l=["hat","mad"," a "]
:
hatahatah
madamadam
a a a a
madamadam
hatahatah
madamadam
a a a a
madamadam
hatahatah
Étant donné 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
Étant donné 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
Étant donné n=3 and l=["_|__","__|_","___|"]
:
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
Étant donné n=2 and l=["---|---","__|","___|","____|"]
:
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
Règles
n
sera toujours supérieur à 1.l
aura toujours plus d'un élément.- Tous les éléments de
l
sont de la même longueur. - Il s'agit de la solution la plus courte de code-golf qui sera marquée comme gagnante.
Réponses:
05AB1E , 4 octets
Notez que si une seule itération était requise (
n=1
), le programme serait le palindromeû€û
.Essayez-le en ligne
Si le remplissage de l'entrée faisait toujours partie du programme (11 octets):
Je n'ai pas pu trouver un moyen plus court de justifier à droite. La justification à gauche et le centrage étaient tous faciles, mais c'était plus long pour une raison quelconque. Utiliser
E
ou²
au lieu deI
fonctionne également.la source
Python 2 ,
7163 octetsEssayez-le en ligne!
Attribuer une fonction palindrome à
f
, générer et évaluer le motif suivant (pourn=4
)f(map(f,f(map(f,f(map(f,f(map(f,<input>))))))))
la source
Gelée , 6 octets
Lien dyadique, ou programme complet reprenant la liste et
n
.Essayez-le en ligne!
Utilisation des deux versions du fantastique "rebond" intégré de Lynn.
la source
Python 2 , 64 octets
Essayez-le en ligne! - footer imprime chacun des éléments de la liste résultante, un par ligne, une "jolie impression".
h
est la fonction de palindomisation, elle ajoute à l'entrée, tous les éléments d'une liste du dernier sauf un, index -2, au début par pas de taille -1.f
appelleh
avec le résultat d'appelerh
à tour de rôle chaque élément, réduitn
de un et s'appelle jusqu'à ce qu'iln
atteigne 0, auquel pointa
le produit fini.la source
f=
fonctions récursives, un jour je m'en souviendrai.APL, 15 octets
Explication:
(
...)⍣⎕⊢⎕
: lire la liste etN
en entrée, et exécuterN
temps d' :⊢,1↓⌽
: la liste, suivie de la fin de la liste inverséeZ←
: stocker cette fonction dansZ
Z¨
: et l'appliquer également à chaque élément de la listeTester:
la source
Groovy, 66 octets
la source
Haskell, 51 octets
Exemple d'utilisation:
["123","456","789"] ? 1
->["12321","45654","78987","45654","12321"]
. Essayez-le en ligne! .(++)<*>reverse.init
crée un palindrome à partir d'une liste, leiterate(...)x
répète encore et encore et recueille les résultats intermédiaires dans une liste,!!n
sélectionne le nième élément de cette liste.(%n)<$>x%n
fait un n-palindrome de chaque élément du n-palindrome dex
.la source
JavaScript (ES6), 87 octets
la source
Pip , 25 octets
24 octets de code, +1 pour l'
-l
indicateur.Prend la liste comme arguments de ligne de commande et le nombre n de stdin. Essayez-le en ligne!
Explication
la source