Die Herausforderung besteht hier darin, eine Implementierung von Palindrom unter Berücksichtigung der folgenden Eingaben zu erweitern:
n > 1
und eine Listel
.
Ihr Programm muss die Liste sowohl vertikal als auch horizontal palindromieren, dh es muss zuerst die Liste selbst palindromieren und dann jedes Element in der Liste danach. oder umgekehrt. Vor der Palindromisierung wird sichergestellt, dass alle Elemente gleich lang sind. Die Palindrom-Aktion muss dann n
nacheinander ausgeführt werden, bis die gewünschte Ausgabe erreicht ist. Die einfachste Möglichkeit, die erwarteten Ausgaben anzuzeigen, besteht darin, einige Beispiele durchzugehen:
Eine Iteration durchgeführt am [123,456,789]
:
Zuerst palindromisieren Sie die Liste zu [123,456,789,456,123]
.
- Während dies kein Palindrom ist, wenn es zusammengefügt wird, ist es in Bezug auf die Liste ein Palindrom.
[a,b,c]
wurde[a,b,c,b,a]
, so wurde die LIST palindromisiert.
Anschließend palindromisieren Sie jedes Listenelement [12321,45654,78987,45654,12321]
.
So wird jede Iteration durchgeführt, es ist im Wesentlichen ein omnidirektionales Palindrom.
Gegeben n=1 and l=[123,456,789]
:
12321
45654
78987
45654
12321
Gegeben n=2 and l=[123,456,789]
123212321
456545654
789878987
456545654
123212321
456545654
789878987
456545654
123212321
Gegeben n=1 and l=[3,2,1]
:
3
2
1
2
3
Gegeben n=2 and l=["hat","mad"," a "]
:
hatahatah
madamadam
a a a a
madamadam
hatahatah
madamadam
a a a a
madamadam
hatahatah
Gegeben 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
Gegeben 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
Gegeben n=3 and l=["_|__","__|_","___|"]
:
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
__|_|___|_|___|_|___|_|__
___|_____|_____|_____|___
__|_|___|_|___|_|___|_|__
_|___|_|___|_|___|_|___|_
Gegeben n=2 and l=["---|---","__|","___|","____|"]
:
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
__| |__ __| |__
___| |___ ___| |___
____| |____ ____| |____
___| |___ ___| |___
__| |__ __| |__
---|-----|-----|-----|---
Regeln
n
wird immer größer als 1 sein.l
wird immer mehr als 1 Element haben.- Alle Elemente von
l
sind gleich lang. - Dies ist Code-Golf kürzeste Lösung wird als Gewinner markiert.
Antworten:
05AB1E , 4 Bytes
Beachten Sie, dass
n=1
das Programm das Palindrom ist , wenn nur eine einzige Iteration erforderlich ist ( )û€û
.Probieren Sie es online aus
Wenn das Auffüllen der Eingabe noch ein erforderlicher Teil des Programms war (11 Bytes):
Ich konnte keinen kürzeren Weg finden, um richtig zu rechtfertigen. Linksbündigkeit und Zentrierung waren alle einfach, aber dies war aus irgendeinem Grund länger. Verwenden von
E
oder²
anstelle vonI
funktioniert auch.quelle
Python 2 ,
7163 BytesProbieren Sie es online!
Weisen Sie eine Palindrom-Funktion zu
f
, generieren und bewerten Sie das folgende Muster (fürn=4
)f(map(f,f(map(f,f(map(f,f(map(f,<input>))))))))
quelle
Gelee , 6 Bytes
Dyadic Link oder komplettes Programm unter der Liste und
n
.Probieren Sie es online!
Mit beiden Versionen von Lynns fantastischem eingebautem "Bounce".
quelle
Python 2 , 64 Bytes
Probieren Sie es online! - footer druckt jedes Element der resultierenden Liste aus, eines pro Zeile, ein "hübscher Ausdruck".
h
Wenn es sich um die Palindomisierungsfunktion handelt, werden alle Elemente einer Liste vom vorletzten Index -2 bis zum Anfang in Schritten der Größe -1 an die Eingabe angehängt.f
rufth
mit dem Ergebnis des Aufrufsh
jedes Elements abwechselnd auf, reduziert sichn
um eins und ruft sich selbst auf, bisn
0 erreicht ist, an welchem Punkta
das fertige Produkt ist.quelle
f=
für rekursive Funktionen, eines Tages werde ich mich erinnern.APL, 15 Bytes
Erläuterung:
(
...)⍣⎕⊢⎕
: lies die Liste undN
als Eingabe, und laufeN
mal:⊢,1↓⌽
: die Liste, gefolgt vom Ende der umgekehrten ListeZ←
: Speichern Sie diese Funktion inZ
Z¨
: und wende es auch auf jedes Element der Liste anPrüfung:
quelle
Groovy, 66 Bytes
quelle
Haskell, 51 Bytes
Anwendungsbeispiel:
["123","456","789"] ? 1
->["12321","45654","78987","45654","12321"]
. Probieren Sie es online! .(++)<*>reverse.init
macht aus einer Liste ein Palindrom,iterate(...)x
wiederholt dies immer wieder und sammelt die Zwischenergebnisse in einer Liste,!!n
wählt das n-te Element dieser Liste aus.(%n)<$>x%n
macht aus jedem Element des n-Palindroms von ein n-Palindromx
.quelle
JavaScript (ES6), 87 Byte
quelle
Pip , 25 Bytes
24 Byte Code, +1 für
-l
Flag.Übernimmt die Liste als Befehlszeilenargumente und die Nummer n aus stdin. Probieren Sie es online!
Erläuterung
quelle