Ziel dieser Herausforderung ist es, ein Programm zu schreiben, das die folgenden Bedingungen erfüllt:
Das Programm ist nicht palindromisch oder im Wesentlichen palindromisch (was bedeutet, dass es möglich ist, Zeichen zu entfernen, um es zu einem Palindrom zu machen, ohne die Effekte des Programms zu ändern).
Das Programm ist keine Involution (was bedeutet, dass es nicht seine ursprüngliche Eingabe erzeugt, wenn es auf seiner Ausgabe ausgeführt wird)
Das Programm mit umgekehrter Polarität ist das Gegenteil des normalen Programms. Wenn also das umgekehrte Programm auf der Ausgabe des normalen Programms ausgeführt wird, wird die ursprüngliche Eingabe zurückgegeben.
Was bedeutet Verpolung ? Nun, es unterscheidet sich zwischen den Sprachen.
- Für die meisten Nicht-Esolangs bedeutet dies, die Reihenfolge der Unteroperationen in einer einzelnen Operation umzukehren, die Reihenfolge der Argumente umzukehren und den Inhalt von hartcodierten Listen / Arrays / Tupeln / Wörterbüchern / Stapeln / Warteschlangen / usw. umzukehren als Umkehrung der Reihenfolge von Code-Blöcken und eigenständigen Zeilen (aber nicht Zeilen innerhalb von Blöcken)
Beispiele:
Haskell :
x`mod`y-> y`mod`x; zipWith ((*3).(+)) [1,2,3] [4,5,6]->zipWith ((+).(*3)) [6,5,4] [3,2,1]
Python : 2**3-> 3**2; for x,y in [(1,2),(3,4),(5,6)]->for y,x in [(6,5),(4,3),(2,1)]
Für Sprachen mit 1-Zeichen-Funktionen (wie Pyth, APL) kehren Sie einfach die Anweisungsfolge um
Für eindimensionale Esolangs wie BF kehren Sie die Anweisungen um oder tauschen Sie die Polarität aus. Polaritätswechsel sind
[]->{},+->-,-->+,>-><,<->>,.->,und,->.(aber nicht beide)Für zweidimensionale Esolangs wie Befunge können Sie entweder eine Reflexion über die x- oder y-Achse oder eine Diagonale ausführen, um 180 Grad drehen oder eine Kombination aus einer Reflexion und einer Drehung ausführen
Kommutative Operationen sind erlaubt, palindrome jedoch nicht: 2*xist in Ordnung, aber x+xschlecht. Die Definition einer Polaritätsumkehr ist ziemlich locker, aber urteilen Sie, was Sinn macht. es geht nicht darum, die klügste lücke zu finden, sondern die klügste lösung.
Dies ist ein Beliebtheitswettbewerb, daher mag eine sehr clevere Lücke beliebt sein, aber versuchen Sie, im Geiste dieser Herausforderung zu bleiben. Der Gewinner wird bekannt gegeben, wenn mindestens 10 Lösungen mit mindestens 1 positiven Bewertung vorliegen und mindestens eine Lösung mit mehr positiven Bewertungen vorliegt als Einsendungen mit mindestens 1 positiven Bewertung; oder in 1 Monat, je nachdem, was zuerst eintritt. Dies ist meine erste Herausforderung. Versuchen Sie also, fair zu sein und mir konstruktives Feedback zu geben. Lassen Sie mich jedoch auch wissen, ob dies eine unangemessene Herausforderung ist oder in irgendeiner Weise falsch kategorisiert oder nicht eindeutig ist. Wenn Sie Fragen zu einer Sprache haben, die nicht in eine der von mir hier aufgeführten Schubladen passt, kommentieren Sie, und ich werde mich dem Willen der Community anschließen, wenn ein starker Aufschrei nach einer bestimmten Klarstellung oder Änderung der Regeln besteht.
AKTUALISIEREN
Es ist genau 1 Monat her, seit dieser Wettbewerb gestartet wurde (ich habe es nur zufällig überprüft, ohne zu wissen, dass ich tatsächlich pünktlich war). Da dies ein Beliebtheitswettbewerb ist, ist der Gewinner (durch einen Erdrutsch) Pietu1998-Befunge . Auch wenn die unteren Komponenten (der Textumkehrer und das Rückwärtsalphabet) beide Involutionen sind, ist dies beim Encoder / Decoder nicht der Fall, sodass es dort kein Problem gibt. Bonuspunkte (meiner Meinung nach) für das Schreiben von "BEFUNGE" in die Mitte. Ich persönlich mochte die Neuheit von Zgarbs Theseus-Lösung , weil die Sprache cool aussieht (wenn sie eingeschränkt ist). Vielen Dank für die Teilnahme und während der Gewinner ausgewählt wurde, lasse ich diesen Wettbewerb völlig offen und begrüße zukünftige Einsendungen.
()palindromisch? Technisch ist das Gegenteil der Fall )(.