Ihre Aufgabe ist einfach. Das Programm liest eine Textzeile aus der Standardeingabe ein und druckt denselben Text in einer zeichenumgekehrten Form aus. Es ist nicht gestattet, etwas anderes zu drucken.
Beispielsweise:
Eingabe: "Hallo!", Ausgabe: "! olleH"
Der Haken ist , dass Ihr Programm in der Lage sein muss, genau dasselbe zu tun, wenn der Quellcode selbst zeichenumgekehrt ist!
Wertung: Es gilt die Standard-Code-Golf-Wertung mit der folgenden Änderung, um die Langeweile zu begrenzen
//margorp
program//
Stilantworten: Für jede Lösung, die ein Palindrom ist, wird eine Strafe von + 25% auf die aufgerundete Punktzahl erhoben. Diese Strafe gilt auch dann, wenn Sie beispielsweise Zeichen in das Programm einfügen, die keine nützlichen Auswirkungen haben, nur um das Palindrom zu brechen.
-1%#%1-/1
oder-1%#%(0
?Antworten:
APL, 5
Dies kehrt (
⌽
entlang der letzten Achse) die Eingabe (⍞
) um, gefolgt von einem Kommentar (⍝
markiert einen Zeilenkommentar). Umgekehrt kehrt das Programm⊖
die Eingabe um ( entlang der ersten Achse), gefolgt von einem Kommentar. Da die Eingabe in diesem Fall immer eindimensional ist⌽
und⊖
funktional äquivalent ist. Es ist vielleicht sogar hinterhältiger als die GolfScript-Lösung, daher hier eine sauberere Lösung (keine Kommentare), die mit 9 bewertet wird .Dies fasst zuerst einen leeren Vektor (
⍬
), glättet ihn (monadisch,
) und kehrt ihn um (⊖
entlang der ersten Achse). Dies lässt immer noch einen leeren Vektor. Dann verkettet es sich (dyadisch,
) mit der Eingabe (⍞
) und lässt die Eingabe unberührt. Anschließend wird,
die bereits flache Eingabe geglättet (monadisch ) und umgekehrt (⌽
entlang der letzten Achse). Dann wird ein,
weiterer leerer Vektor (⍬
) mit der umgekehrten Eingabe verkettet (dyadisch ) . Dies tut nichts und lässt die umgekehrte Eingabe zurück. Umgekehrt macht dieses Programm das Gleiche, wiederum basierend auf der Tatsache, dass⌽
und⊖
funktional mit eindimensionalen Argumenten äquivalent sind.Man kann wirklich nicht sagen, dass ich nutzlose Zeichen hinzufüge, um das Palindrom zu durchbrechen (die zwei unterschiedlichen Umkehrfunktionen unterscheiden sich bei zwei- oder mehrdimensionalen Eingaben; ich nutze nur die Tatsache, dass sie bei ein und derselben Eingabe gleich wirken). dimensionale Eingabe)
quelle
Unix-Shell - 8 + 25% = 10
Vorherige Antwort von
cat|tac
hat nicht wirklich funktioniert,tac
kehrt die Reihenfolge der Zeilen um, nicht die Reihenfolge der Zeichen in einer Zeile.quelle
Haskell, 53
Technisch gesehen kein Palindrom, aber da die Reihenfolge der Funktionsdeklaration keine Rolle spielt, haben Sie nach dem Umkehren genau das gleiche Programm.
quelle
main=niam
Deklaration in die Mitte, und Sie erhalten ein Palindrom.Rubin, 37
Rückgängig gemacht:
quelle
Tcl, 78
Kein Palindrom.
quelle
exit
in um#
(das # ist ein Parameter, nicht der Beginn eines Kommentars).\#
in der nächsten zeile wird ausgeführt#
(nicht anfang des kommentars weil escaped) was das neue istexit
.gs2, 2
(Ja, diese Sprache wurde vor der Herausforderung erstellt. Nein, es ist kein Witz oder eine Lücke. ASCII-Leerzeichen (0x20
) sind umgekehrt .)EDIT: aw, man, diese Frage ist super alt? Wenn ich mich nur früher verpflichtet hätte. : <Ich lasse diese Antwort offen, nur weil es zu schön ist, darauf zu verzichten.
quelle
Golfscript 9 (7 * 1,25 = 8,75)
dreckig, dreckig, dreckig, aber extrem kurz.
-1%
bedeutet "jedes Element auswählen (Zeichen), rückwärts" und#
bedeutet "Zeilenkommentar". Der Rest ist nur ein kleiner Teil der I / O-Magie von GolfScript.Dies ist die kürzeste "saubere" (keine Kommentare) Lösung, die ich gefunden habe ( 14 * 1,25 = 17,5 ):
Das heißt: eine leere Zeichenkette verschieben, fallen lassen, die Eingabe umkehren, zweimal klonen, für sich teilen (zwei Kopien verbrauchen und ein leeres Array erzeugen), alle aus der leeren Zeichenkette entfernen, die leere Zeichenkette löschen, eine leere Zeichenkette verschieben und (implizit) den Stapel drucken.
quelle
Rubin, 44
Nur ein Kommentar am Ende eines normalen Programms: P
35 Zeichen, + 25% = 44
quelle
Tcl, 75,25
Diesmal ein Palindrom.
quelle
]]
und]]
ist das Zeichen \ x1A.)Python 3, 42
Credits
:-)
) von mir erstelltquelle
print(input()[::-1])#)]1-::[)(tupni(tnirp
stattdessen Python 3 verwenden, um die Punktzahl auf 51,25 zu reduzieren.;
eine solche Einfügung ist, die keinen nützlichen Effekt hat.Rebmu : 9 (mit Strafe) oder 13 (ohne)
Die langweilige Rebmu-Lösung ist 9 und trägt die palindromische Strafe. Ich zeige es trotzdem "nur weil":
Mit dem Trick, Großbuchstaben nicht zu überdecken, werden separate Wörter gebildet, und das Fehlen eines führenden Großbuchstaben bedeutet, dass wir kein festes Wort bilden, sondern fünf gewöhnliche Wörter produzieren:
Was ist eine Abkürzung für den entsprechenden Code (auch legal Rebmu):
Die Tatsache, dass vr und nr bedeutungslos sind, spielt keine Rolle, da sie trotz fehlender Zuordnung gültige Wörter sind. Der Evaluator führt also nur das aus
return reverse a
... es funktioniert in beide Richtungen. Aber dies ist in gewissem Sinne analog zum langweiligen Cheat: Der Code ist nicht auskommentiert, aber er ist tot und wird nicht auf einem Pfad ausgeführt.Für etwas Aufregenderes, für das es keine Strafe gibt, wie wäre es mit dieser 13-Zeichen-Lösung:
Schauen wir uns an, wie dies auf den Vorwärts- und Rückwärtspfaden verarbeitet wird, wenn es erweitert wird. Nach vorne:
Rückwärts als
ArvA vr: RV a
:Auf der anderen Seite überschreibt die Rückwärtsvariante die Abkürzung für Reverse. Aber hey, es ist kein Palindrom und es sind nur 13 Charaktere. :-)
(Hinweis: Dies setzt voraus, dass Sie Rebmu im / args-Modus ausführen, wobei a das Standardargument für das Programm ist, das an den Interpreter in der Befehlszeile übergeben wird, und Sie das Ergebnis akzeptieren. Wenn das Lesen von der Standardeingabe tatsächlich eine Voraussetzung ist, sind die Dinge B. von 9 auf 11 Zeichen für die einfache Lösung:
rnRVrArVRnr
Und wenn Sie aus dem Programm heraus auf die Standardausgabe drucken müssen, anstatt die Ausdrucksausgabe des Interpreters zu akzeptieren, bei der auch ein paar Zeichen hinzugefügt würden.)quelle
JavaScript, 62 * 1,25 = 78
Nicht zu kreativ, aber das Beste, was ich mir einfallen lassen konnte. (setzt voraus, dass die Eingabe in Variable gespeichert ist
i
)Ich habe folgendes bekommen:
63 Zeichen, kein Palindrom
aber es fühlte sich zu sehr nach Schummeln an. : PI könnte noch viel mehr triviale Änderungen vornehmen (z. B. Verwenden
i['split']
anstelle voni.split
), aber alle, die dies möchten, haben immer noch das Gefühl, zu schummeln: Pquelle
(p=a=>a&&p()==`(p=${p})(i)`?i:i.split``.reverse().join``)(i)
(60 Bytes) macht das Ding.Pyke, 2 (+ 25%), nicht konkurrierend
Pyke nimmt implizit Eingaben und gibt sie implizit aus.
_
ist die umgekehrte Funktion.quelle
Tcl, 99
Wenn ein nicht vorhandener Befehl aufgerufen wird, wird ein spezieller
unknown
Befehl aufgerufen, der den Befehl laden kann. Oder andere lustige Sachen machen.quelle
T-SQL, 86 * 1,25 = 108
Hier ist ein langweiliger palindromischer Eintrag für SQL Server 2008 (und neuer), um zu zeigen, dass dies möglich ist.
@ enthält den eingegebenen Text, wobei die Beispielzeichenfolge "Hi" ist. Die Zeichenanzahl dieses Eintrags gilt für eine Eingabezeichenfolge mit zwei Zeichen.
quelle
Keg , ceil (1 + 0,25) = 2 Bytes
Dies nimmt Eingaben und Umkehrungen vor und implizite Ausgaben geben sie wörtlich aus. TIO
quelle
Befunge-98 (PyFunge) , 17 Bytes
Probieren Sie es online!
Probieren Sie es online! (Rückgängig gemacht)
quelle
QBIC , 14 + 25% = 18 Bytes
Verwendet einen palindromischen Quellcode. Die Verwendung von zwei verschiedenen Methoden dauert etwas länger (34 Byte):
Erläuterung:
quelle
Pushy , 7 Bytes (5 + 25%)
Probieren Sie es online!
Dies führt zu einer Strafe von 25%, da es sich um ein Palindrom handelt, aber es ist das Beste, was ich tun kann. Unabhängig davon, in welcher Richtung das Programm ausgeführt wird, werden die folgenden 3 Befehle ausgeführt:
Das Ersetzen
i
vonc
(Stapel löschen) oder\
(Kommentar) hat den gleichen Effekt.quelle
05AB1E , 1 + 25% = 2 Byte
Probieren Sie es online!
quelle
R , 65 Bytes
EDIT: Hat die 25% Strafe dank einer für mich unsichtbaren Änderung durch Grimy abgeschafft.
Probieren Sie es online!
Begrüßen Sie Rs abgründige Fähigkeit, mit Strings umzugehen, selbst wenn Sie Pakete verwenden, die für Strings wie
stringi
... barf entwickelt wurdenquelle