var QUESTION_ID=98776,OVERRIDE_USER=12537;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Antworten:
05AB1E / MATL ,
109 ZeichenIn 05AB1E wird dies palindromisiert . In MATL wird es depalindromisiert .
Erklärung in 05AB1E
Dieser Teil des Codes bewirkt (global) nichts:
Dies ist der Teil, der die Arbeit erledigt:
Erklärung in MATL
Dies ist der Teil, der die Arbeit erledigt:
Dies wird ignoriert:
quelle
05AB1E / Jelly , 6 Zeichen
Palindromiert in 05AB1E.
Depalindromiert in Gelee.
Versuchen Sie es in 05AB1E
05AB1E Erläuterung
Probieren Sie es in Jelly
Jelly Erklärung
quelle
Python 3 / JavaScript, 83 Zeichen
2 Bytes dank @LevitatingLion gespart
Python palindromisiert , JavaScript depalindromisiert .
Ich habe versucht, mehr Code zwischen den beiden konstant zu halten, aber ich konnte keinen guten Weg finden, um mich
.slice
in Python einzuschleichen. Hier ist eine alternative Methode:quelle
x[::-1][1:]
mitx[-2::-1]
zu speichern zwei Zeichen.Scala / Javascript, 106 Bytes
Palindromizes in Scala und Depalindromizes in Javascript.
Versuchen Sie es auf Ideone (Scala) - Warnung: falsche Syntax Hervorhebung
Probieren Sie es auf jsfiddle (Javascript).
Erläuterung:
Scala verarbeitet, wie Java, Unicode-Escape-Zeichen, bevor alles andere passiert, daher sieht scalac den Code so:
Das Javascript wird folgendermaßen analysiert:
quelle
CJam / MATL , 18 Zeichen
In CJam wird dies palindromisiert . In MATL wird es depalindromisiert .
Erklärung in CJam
Arbeitsteil:
Dummy-Teil:
Erklärung in MATL
Dummy-Teil:
Arbeitsteil:
Ein weiteres Dummy-Teil:
quelle
𝔼𝕊𝕄𝕚𝕟 / Javascript ES6, 55 Zeichen
Try it here (ES6 browsers only).
Palindromiert in 𝔼𝕊𝕄𝕚𝕟, depalindromiert in Javascript ES6.
Ich dachte, dass dies einfach sein würde, da 𝔼𝕊𝕄𝕚𝕟 auf ES6 kompiliert wird und die meisten ES6-Anwendungen in 𝔼𝕊𝕄𝕚𝕟 ausgeführt werden können. Anscheinend liege ich völlig falsch.
Erläuterung
this._
prüft, ob eine Variable_
im globalen Bereich existiert; 𝔼𝕊𝕄𝕚𝕟 verwendet Lodash und hat daher_
gespeichert, reines ES6 jedoch nicht.Das 𝔼𝕊𝕄𝕚𝕟-Segment -
Σ(`ï+ï.Ħ⬮.Đ1`)
- wertet aus der Zeichenfolge den Code aus, der die Eingabe palindromisiert. Normalerweise wäre das der Codeï+ïĦ⬮Đ1
, aber ich habe die Punkte eingefügt, um den Compiler glücklich zu machen .Das Javascript-Segment -
(x=prompt()).slice(0,-x.length/2)
- depalindromiert eine Zeichenfolge an einer Eingabeaufforderung.Ich wollte eine Funktion verwenden (damit musste ich mich nicht befassen
prompt
), aber die Bewertungsfunktion von 𝔼𝕊𝕄𝕚𝕟 mochte das nicht, also benutzte ichprompt
und keine Funktion, um den Compiler glücklich zu machen .quelle
JavaScript ES6 / JavaScript ES3, 143 Byte
Palindromiert in JavaScript ES6, depalindromiert in JavaScript ES3. Nicht konkurrierend , es ist nur ein Versuch, einen Polyglott für zwei Versionen derselben Sprache zu erstellen.
In ES3 sind Funktionen in Blöcken zulässig, aber da Blöcke keine Bereiche definieren, ersetzt die neue Funktion nur die erste Funktion. Im strikten ES5-Modus schlägt dies fehl, da Funktionen nicht in Blöcken definiert werden können. In ES6 ist dies zulässig, und da Blöcke jetzt Bereiche definieren, wird die erste Funktion nicht ersetzt.
Getestet in Internet Explorer 5 (emuliert) für ES3 und Node.JS sowie Firefox für ES6.
quelle
Gelee / Marmelade,
1514 Zeichen-1 Zeichen dank 42545 (ETHproductions)
Probieren Sie es online! (Gelee) (Palindromisierung)
CJam Interpreter (Depalindromization)
Jelly Erklärung:
In Jelly
¶
ist dasselbe wie\n
, also sieht Jelly Folgendes:CJam Erklärung:
In CJam ist alles nach
e#
einer Zeile ein Kommentar. Das sieht CJam also so:quelle
Perl / JavaScript, 73 Bytes
Perl gibt ein Palindrom zurück und JavaScript deaktiviert die Eingabezeichenfolge.
JavaScript
Angenommen, die Zeichenfolge ist bereits ein gültiges Palindrom.
Die ganze Arbeit findet im ersten Abschnitt statt:
Speichert die Eingabe in
s
und gibt dann die erste Hälfte (aufgerundet) der Zeichenfolge zurück. Der Rest des Skripts besteht aus sinnlosen Variablenzuweisungen:Probieren Sie es hier aus:
Perl
Muss ausgeführt werden mit
-pl
zB:Der Code besteht im Grunde aus zwei Substitutionen (
s///
), die jedoch=
als Begrenzer verwendet werden anstelle von/
:Das erste Ersetzen
prompt();console.log(s.slice(0,-s.length\/2));eg
(was zugegebenermaßen Ihre Zeichenkette durcheinander bringt, wenn es etwas wie"prompt;console.logs.slice0,-s.length/2;eg"
... enthält ), mit1;t
demeval
ed zurückgegeben wirdt
, das zweite Ersetzen das Ende der Zeichenkette ($
), mitreverse$_
dem dann aucheval
Ersetzen ed und die ursprüngliche Quelle angehängt wird Zeichenfolge umgekehrt.Probieren Sie es online!
quelle
Python 2 / Nim ,
7674 BytesPalindromiert in Python, depalindromiert in Nim. Missbrauch der Kommentarsyntax.
Python und Nim werden beide
#
für Kommentare verwendet. Python unterstützt überhaupt keine Blockkommentare (mit Ausnahme von mehrzeiligen Zeichenfolgen mit"""
), Nim jedoch mit#[ comment ]#
.Wir missbrauchen dies, um das Python (am Anfang) für Nim auszukommentieren und dann das Trailing zu verwenden
]
im Python, um den Nim-Code zu starten, der wie ein Kommentar für Python aussieht.Der Python-Code muss in Anführungszeichen gesetzt werden. Der Nim-Code hat diese Einschränkung nicht.
Getestet auf Python 2.7.8 und Nim 0.14.2.
Ideone es! - Python 2, palindromisierend
Ideone es! - Nim, depalindromizingAnscheinend unterstützt die von Nim Ideone verwendete Version (0.11.2) keine mehrzeiligen Kommentare. Funktioniert auf Nim 0.14.2.quelle
Jelly / Pyth,
15 bis14 ZeichenKredit wo Kredit fällig ist.
Probieren Sie es online! (Gelee) (Palindromizes)
pyth.herokuapp.com (Pyth) (Depalindromizes) (nachfolgende Newline)
quelle
05AB1E / V , 14 Byte
Probieren Sie es online!
Palindromiert in 05AB1E
Probieren Sie es online!
Depalindromiert in V unter Verwendung dieser Antwort von DrMcMoylex.
quelle
Japt / JavaScript, 63 Zeichen
Lektion des Tages: Japt / JavaScript-Polyglots sind immer eine schlechte Idee ...
JavaScript
Die erste Zeile setzt die Variable
$Oq
auf 1 und führt dann ein No-Op mit aus$Oq &&0
.In der zweiten Zeile wird der Benutzer aufgefordert
$U
, eine Eingabezeichenfolge einzugeben, diese der Variablen zuzuweisen und dann vom Index0*$U
(immer 0) zum Index zu verschieben-$U.length/2
. Dies führt die notwendige Depalindromisierung durch; Das Ergebnis wird dannalert
bearbeitet. Das Programm endet bei einem ReferenceError weil Variable$Uê
keine definiert ist.Japt
In Japt wird alles zwischen Dollarzeichen direkt in den transpilierten Quellcode eingefügt. Davon abgesehen wird jeder Kleinbuchstabe zu z. B. transpiliert
.q(
, es sei denn, das vorherige Zeichen war ein anderer Kleinbuchstabe, und in diesem Fall wird es"q"
. Ein Leerzeichen wird transpiliert)
und alle fehlenden Parens werden automatisch hinzugefügt. Das obige Programm überträgt sich ungefähr auf:Dies wird dann als JavaScript ausgeführt.
Oq=1;
Setzt die VariableOq
auf 1. Dies wird nie wieder verwendet, es ist also ein No-Op.O.q()
ist eine Funktion, die STDOUT löscht und zurückgibtundefined
. Dies ist falsch, daher&&0 .a("l".e(...
wird nicht der gesamte Teil ausgeführt.Der einzige Teil, der wirklich zählt, ist
U.ê()
. Implizite Eingabe fügt die Eingabezeichenfolge einU
,.ê()
verwandelt sie in ein Palindrom, und implizite Ausgabe sendet das Ergebnis an STDOUT.Wenn Funktionseinträge zulässig sind, funktioniert Folgendes für 34 Zeichen:
Der erste Teil definiert eine ES6-Funktion, aber es ist immer noch ein volles Programm in Japt. Testen Sie es online!
quelle
Java / Brainfuck, 71 Bytes
Palindromiert in BF, depalindromiert in Java.
Aus Gründen der Klarheit ist dies für den BF-Interpreter wichtig:
Dabei wird die letzte Schleife, die Zeichen aus dem Java-Lambda enthält, übersprungen, da der Zeiger an dieser Stelle auf ein Nullzeichen zeigt.
quelle
05AB1E / Java 8, 102 Zeichen
Palindromize in 05AB1E.
Depalindromize in Java 8.
Erläuterung 05AB1E:
Erklärung Java 8:
quelle