Eklatante Abzocke einer Abzocke . Geht und stimmt denen zu!
Ihre Aufgabe ist es, ein Programm / eine Funktion zu schreiben, das / die seine ganzzahligen Eingaben / Argumente ausgibt / zurückgibt, wenn Sie dies akzeptieren möchten. Der schwierige Teil ist, dass, wenn ich Ihren Quellcode umkehre, die Ausgabe die ursprüngliche Ganzzahl sein muss, die negiert wird.
Beispiele
Nehmen wir an, Ihr Quellcode ist ABC
und seine Eingabe ist 4
. Wenn ich CBA
stattdessen schreibe und es laufen lasse, muss die Ausgabe sein -4
.
Nehmen wir an, Ihr Quellcode ist ABC
und seine Eingabe ist -2
. Wenn ich CBA
stattdessen schreibe und es laufen lasse, muss die Ausgabe sein 2
.
Ein Eingang 0
kann geben 0
oder -0
aber, wenn Sie Unterstützung Null tun unterzeichnet, -0
geben soll 0
.
Antworten:
PowerShell ,
18 bis14 ByteProbieren Sie es online! ! enilno ti yrT
Erste der trivialen Antworten auf Kommentare und Missbrauch
quelle
J , 3 Bytes
Probieren Sie es online!
-&0
ist "Argument minus 0"0&-
ist "0 minus Argument"quelle
][-
Ähnliches.JavaScript, 11 Bytes
Probieren Sie es online! | Rückgängig gemacht
quelle
x86-Maschinencode, 3 Byte
Die obigen Code-Bytes definieren eine No-Op-Funktion: Sie gibt einfach die Kontrolle an den Aufrufer zurück. Dieser Funktion folgen zwei Müllbytes, die nicht ausgeführt werden, da sie nach einer Rückkehr kommen - sie befinden sich im "Niemandsland". In Assembler Mnemonics:
Okay, jetzt kommt ein Troll vorbei und kehrt die Reihenfolge der Bytes um:
Diese Bytes definieren jetzt eine Funktion, die ein ganzzahliges Argument in das
EAX
Register aufnimmt , es negiert und die Kontrolle an den Aufrufer zurückgibt. In Assembler Mnemonics:Also ... das war einfach. :-)
Beachten Sie, dass wir die Anweisung "negation" beliebig machen können , da sie niemals in der Ausrichtung "forward" und nur in der Ausrichtung "reverse" ausgeführt wird. Daher können wir dem gleichen Muster folgen, um willkürlich kompliziertere Dinge zu tun. Hier nehmen wir zum Beispiel ein ganzzahliges Argument in ein anderes Register (zum Beispiel, um
EDI
die auf * nix-Systemen übliche System V-Aufrufkonvention zu befolgen), negieren es und geben es in das herkömmlicheEAX
Register zurück:↓ ↓
quelle
Gelee , 2 Bytes
Probieren Sie es online! und sein Gegenteil .
quelle
ḷN
, keine Notwendigkeit für die ODER-Logik. : DNa
, Worte gebenaN
ästhetische Wirkung :)Haskell , 8 Bytes
Anonyme Identitätsfunktion, die
0
bei Umkehrung in Subtraktion umgewandelt wird .Probieren Sie es online!
Rückgängig gemacht:
Probieren Sie es online!
quelle
Leerzeichen , 48 Bytes
Buchstaben
S
(Leerzeichen),T
(Tabulator) und (Zeilenvorschub) werdenN
nur als Hervorhebungen hinzugefügt.Kleinere Änderungen an meiner Whitespace-Antwort für das Umkehren des Quellcodes, negieren Sie die Ausgabe! herausfordern .
Probieren Sie es online oder umgekehrt aus (nur mit Leerzeichen, Tabulatoren und Zeilenumbrüchen).
Erläuterung:
Mit Hilfe der Exit - Programm builtin eine kurze Palindrom ist
NNN
.Das reguläre Programm wird:
Das umgekehrte Programm wird:
Kleine zusätzliche Erklärung zum Drücken einer Nummer:
S
: Aktivieren Sie die StapelmanipulationS
: Schieben Sie eine Zahl auf den StapelS
oderT
: positiv / negativS
/T
gefolgt von einer abschließendenN
: Zahl in binär, woS=0
undT=1
Dh
SSTTSTSN
drückt-10
. Für die0
brauchen wir keinen explizitenS=0
, also einfachSSSN
oderSSTN
reicht.quelle
Perl 6 / Raku, 3 Bytes
Probieren Sie es online!
Erstellt einen Whatever-Codeblock. Normalerweise wird das Standard-Blockäquivalent eingelesen
-> \x {x - 0}
, umgekehrt jedoch-> \x {0 - x}
.quelle
C (clang) , 23 Bytes
Probieren Sie es online!
quelle
Brain-Flak , 7 Bytes
Probieren Sie es online!
Rückgängig gemacht:
Probieren Sie es online!
Hinweis: Funktioniert nur in Interpreten, die Kommentare unterstützen (z. B. in Rain-Flak, aber nicht in BrainHack)
Wenn wir auch öffnende / schließende Klammern tauschen, anstatt nur die Bytes umzukehren, können wir dies in 8 Bytes tun, ohne Kommentare zu verwenden:
Probieren Sie es online!
Versuchen Sie es umgekehrt!
quelle
#
einen Kommentar, sodass die Klammern in der Originalversion ignoriert werden.Labyrinth / Hexagonie , 6 Bytes
Labyrinth:
Probieren Sie es online! und sein Gegenteil .
Hexagonie:
Probieren Sie es online! und sein Gegenteil .
Wie?
quelle
Python 3 , 22 Bytes
Probieren Sie es online!
Ein Lambda, das die Identitätsfunktion (oder Negation) implementiert
quelle
MarioLANG , 22 Bytes
Probieren Sie es online!
Er gibt die Nummer nur ein und aus, bevor er zu EOF fällt
rückgängig gemacht:
Probieren Sie es online!
Er durchläuft eine Schleife, bis der Eingabewert 0 und der Ausgabewert -input ist, und sagt dann die Zahl.
quelle
R , 23 Bytes
Ich habe beschlossen, es ohne Kommentar zu versuchen.
Nach vorne
Probieren Sie es online!
Umkehren
Probieren Sie es online!
In der Vorwärtsversion
+
handelt es sich um einen binären Operator und-
um einen unären Operator.Umgekehrt
+
wird das unär und das-
binär. Die Scan-Funktion übernimmt also die Argumente:file=""
das heißt stdin undwhat=0
, das sind auch Standardwerte. Wenn das+
unär ist, befindet sich das erste Argument rechts, wenn es binär ist, befindet sich das erste Argument links.Das
Ein Teil des Codes ist nicht wirklich nützlich, so dass mein Code in gewisser Weise nicht viel aussagekräftiger ist als die Verwendung des Kommentar-Tricks.
quelle
+
Neudefinition gesehen habe , die sowohl als unär als auch als binär verwendet werden kann. Ich brauchte eine Minute, um zu verstehen, wie das analysiert wurde ... Kein anderer Operator hätte die Arbeit erledigt.Haskell, 12 Bytes
Probieren Sie es online! Umkehren:
Probieren Sie es online!
Nicht so kurz wie die Antwort von Ørjan Johansen , aber ohne Kommentar.
quelle
Perl 5 (
-p
),76 Bytes-1 danke an @primo
TIO
Ein Kommentar ändert die Eingabe nicht
Negiere die Eingabe
TIO
quelle
$_*=$#
TIO . Beachten Sie, dass#
dies das allerletzte Byte des Programms sein muss, da es sonst als Variable$#
und nicht als letzter Index des Arrays mit dem Namen <leer> interpretiert wird .$#
entweder einen Fehler (wenn # nicht das letzte Zeichen ist) oder nichts gibt-p
oder zu arbeiten-n
. Ich vermute , die vorformulierten etwas damit zu tun hat ...-p/-n
ein;
nach dem Code. Das heißt, das$#
ist eigentlich$#;
: die Größe des Arrays@;
. Wenn sich die Größe@;
ändert, ist das Ergebnis nicht mehr korrekt ( TIO ). Wie auch immer, das ist super schlau, gut gemacht! :)perl -MO=Deparse -p <(echo -n '$_*=$#')
, weil esperl -MO=Deparse -pe '$_*=$#'
eine neue Zeile hinzufügtGaia , 2 Bytes
Probieren Sie es online!
Rückgängig gemacht:
quelle
Rückhand ,
65 BytesProbieren Sie es online! Probieren Sie es doppelt aus!
Aufgrund der Art des Zeigers in der Rückhand etwas komplexer gemacht.
Ich glaube nicht, dass es möglich ist, kürzer zu werden,haha, ich habe mich geirrt. Dies dupliziert Nr Anweisung und verwendet sowohl die Eingabe- als auch die Ausgabe- und die Beendigungsbefehle zwischen den beiden Programmen. Jetzt denke ich, dass es optimal ist, da Sie alleIO-@
Befehle benötigen, um zu arbeiten, und in einem 4-Byte-Programm können Sie nur zwei dieser Befehle ausführen.Erläuterung:
Der Zeiger in der Rückhand bewegt sich um drei Zellen pro Häkchen und springt von den Grenzen der Zelle ab, was bedeutet, dass sich die allgemeine Logik überlappt. Sie können diese Geschwindigkeit jedoch mit der Taste ändern
v
^
Befehlen und ändern.Das ursprüngliche Programm führt die Anweisungen aus
IO-@
, die als Zahl eingegeben, als Zahl ausgegeben, subtrahiert und beendet werden. Offensichtlich ist der Abzug überflüssig. Im Code sind dies:Das umgekehrte Programm wird ausgeführt
v-I-vO-@
. Dasv
verringert die Zeigerschritte zwischen Ticks und-
subtrahiert vom unteren Ende des Stapels, der implizit Null ist. Die zusätzlichen-
Befehle machen nichts. Das Programm läuft wie folgt abquelle
Wolfram-Sprache (Mathematica) , 9 Bytes
Probieren Sie es online!
Weiterleiten: read
((1)&*0+#-0)&*1
=#&
Rückwärts: read
((1)&*0-#+0)&*1
=-#&
quelle
R , 14 Bytes
Probieren Sie es online!
Ein vollständiges Programm, das eine Zahl liest oder eine Zahl liest und negiert. Die umgekehrte Funktionalität wird durch einen Inline-Kommentar geschützt
quelle
Python 3 ,
2214 BytesProbieren Sie es online!
Verwendet den
int
Konstruktor der Klasse und eine integrierte pseudo-private Methode.quelle
0.
wird als Zahl interpretiert, auf die ein Symbol folgt05AB1E , 2 Bytes
Probieren Sie es online!
Rückgängig gemacht
quelle
Befunge-98 (FBBI) , 6 Bytes
Probieren Sie es online! Versuchen Sie es umgekehrt!
quelle
APL (Dyalog Unicode) ,
133 BytesProbieren Sie es online!
Triviale Antwort. Rückgabe
arg
oder¯arg
.Sparte 10 Bytes, indem du nicht dumm bist (danke Adám).
Der resultierende 3-Byte-Wert wurde zu einer passenderen Funktion geändert.
quelle
Turing Maschinensprache , 39 Bytes
Das Positive
Das negative
Dieser war etwas kniffliger als ich dachte, hauptsächlich, weil ich meine Vorurteile überwinden musste, Code zu haben, der mit Kompilierungsfehlern ausgeführt wird.
quelle
> <> ,
54 BytesVerwendet Stack-Initialisierung mit der
-v
Option, setzen Sie Ihre Eingabevariable dort ab.Probieren Sie es online!
Oder versuchen Sie die Umkehrung
Erläuterung
quelle
Stapel Katzen
-mn
, 2 BytesProbieren Sie es online!
Versuchen Sie das Gegenteil!
Erläuterung
Es stellt sich heraus, dass dies viel einfacher ist als die vorherige Herausforderung in Stack Cats. Das vollständige Programm (nach der Bewerbung
-m
) finden Sie hier-X-
.X
wird verwendet, um die Stapel links und rechts vom Bandkopf zu vertauschen, dh, der ursprüngliche Stapel wird überhaupt nicht beeinflusst, sodass wir ihn ignorieren können. Aber dann ist das Programm effektiv gerecht--
(negieren Sie die Oberseite des Stapels zweimal), was nichts tut.Für das inverse Programm Anwendung
-m
gibtX-X
. WiederX
tut nichts, so ist das Programm effektiv nur-
, was die Oberseite des Stapels negiert.Die einzige andere 2-Byte-Lösung ist
-=
, aber es ist praktisch das gleiche. Der einzige Unterschied besteht darin, dass=
nur die Oberseiten der benachbarten Stapel ausgetauscht werden, nicht die gesamten Stapel.Aber auch hier
-m
fühlt sich das Verwenden ein bisschen wie Schummeln an. Im Folgenden finden Sie eine Lösung, die ein vollständig gespiegeltes Programm verwendet.Stapel Katzen
-n
, 7 BytesProbieren Sie es online!
Versuchen Sie das Gegenteil!
Erläuterung
Die Überlegungen aus der vorherigen Antwort gelten weiterhin : Für jede gültige Lösung müssen die gepaarten Zeichen und verwendet werden
I
. Die sechs möglichen Lösungen (im TIO-Link enthalten) sind praktisch alle gleich.-
und_
sind in diesem Programm äquivalent und:
können durch|
oder ersetzt werdenT
(die dasselbe für Nicht-Null-Eingänge tun und zufällig auch für Null-Eingänge funktionieren). Ich habe gerade dieses ausgewählt, um zu erklären, weil es am einfachsten ist.Denken Sie also daran, dass der Anfangsstapel die Eingabe über a
-1
(über unendlich viele Nullen) hält, während alle anderen Stapel auf dem Band nur Nullen enthalten. Stack Cats hat auch die Eigenschaft, dass jedes Programm mit gerader Länge nichts tut (vorausgesetzt, es wird beendet, aber wir können für diese Herausforderung ohnehin keine Schleifen verwenden). Dasselbe gilt dann natürlich auch für Programme ungerader Länge, deren zentrales Zeichen nichts bewirkt ... mal sehen:Daher macht die zweite Hälfte des Programms genau die erste Hälfte rückgängig und wir haben die Eingabe wieder oben auf einem
-1
.Das inverse Programm ist
:I>-<I:
. Mal sehen, wie sich die Dinge ändern:quelle
Batch, 34 Bytes
Echoes (
ECHO.
) die Eingabe (%1
). Der Rest der ersten Zeile leitet technischSTDERR
zu einer Datei mit dem Namen weiterMER@
, dies hat jedoch keine Auswirkungen.Die zweite Zeile ist auskommentiert (
REM...
).Rückgängig gemacht
Verwendet den arithmetischen Modus des Befehls set (
SET /a
), um-=
die Eingabe (%1
) von einer undefinierten Variablen (a
) zu subtrahieren ( ), die äquivalent zu ist0 - input
. Auch hier wird der Rest der ersten Zeile technischSTDERR
zu einer Datei mit dem Namen umgeleitetMER@
, dies hat jedoch keine Auswirkungen.Die zweite Zeile ist auskommentiert (
REM...
).quelle
Brachylog , 2 Bytes
Brachylog gibt implizit von links und von rechts ein.
&
Ignoriert alles links und leitet die Eingabe nach rechts an die Funktion weiter.ṅ
zwingt jede Seite davon, negierte Versionen voneinander zu sein.Probieren Sie es online aus
quelle
Dreieckig ,
87 BytesProbieren Sie es online!
Ungolfed:
Rückgängig gemacht:
Probieren Sie es online!
Vorherige Version (8 Bytes):
quelle