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>
Réponses:
05AB1E / MATL ,
109 caractèresDans 05AB1E, cela palindromise . En MATL, il dépalindromise .
Explication dans 05AB1E
Cette partie du code ne fait rien (globalement):
C'est la partie qui fait le travail:
Explication en MATL
C'est la partie qui fait le travail:
Ceci est ignoré:
la source
05AB1E / Gelée , 6 personnages
Palindromise dans 05AB1E.
Dépalindromise en gelée.
Essayez-le dans 05AB1E
05AB1E Explication
Essayez-le dans Jelly
Explication de la gelée
la source
Python 3 / JavaScript, 83 caractères
Enregistré 2 octets grâce à @LevitatingLion
Python palindromise , JavaScript dépalindromise .
J'ai essayé de garder plus de code constant entre les deux, mais je n'ai pas pu trouver un bon moyen de me faufiler
.slice
dans Python. Voici une autre méthode:la source
x[::-1][1:]
parx[-2::-1]
pour enregistrer deux caractères.Scala / Javascript, 106 octets
Palindromise en scala et dépalindromise en javascript.
Essayez-le sur ideone (scala) - Attention: mauvaise coloration syntaxique
Essayez-le sur jsfiddle (javascript).
Explication:
Scala, comme java, traite les échappements unicode avant tout, donc scalac voit le code comme ceci:
Le javascript est analysé comme ceci:
la source
CJam / MATL , 18 caractères
Dans CJam, cela palindromise . En MATL, il dépalindromise .
Explication dans CJam
Partie de travail:
Partie factice:
Explication en MATL
Partie factice:
Partie de travail:
Une autre partie factice:
la source
𝔼𝕊𝕄𝕚𝕟 / Javascript ES6, 55 caractères
Try it here (ES6 browsers only).
Palindromise en 𝔼𝕊𝕄𝕚𝕟, dépalindromise en Javascript ES6.
Je pensais que cela allait être facile, car 𝔼𝕊𝕄𝕚𝕟 se compile en ES6 et la plupart d'ES6 peuvent être exécutés en 𝔼𝕊𝕄𝕚𝕟. Apparemment, je me trompe complètement.
Explication
this._
vérifie si la variable_
existe dans la portée globale; 𝔼𝕊𝕄𝕚𝕟 utilise Lodash et a donc_
stocké, mais pas ES6 pur.Le segment - -
Σ(`ï+ï.Ħ⬮.Đ1`)
- évalue à partir d'une chaîne le code qui palindromise l'entrée. Normalement, le code seraitï+ïĦ⬮Đ1
, mais j'ai mis les points pour rendre le compilateur heureux .Le segment Javascript -
(x=prompt()).slice(0,-x.length/2)
- dépalindromise une chaîne à partir d'une invite.J'allais utiliser une fonction (donc je n'avais pas à m'en occuper
prompt
), mais la fonction d'évaluation de didn't n'aimait pas ça, alors j'ai utiliséprompt
et aucune fonction pour rendre le compilateur heureux .la source
JavaScript ES6 / JavaScript ES3, 143 octets
Palindromise dans JavaScript ES6, dépalindromise dans JavaScript ES3. Non compétitif , c'est juste un essai de faire un polyglotte pour deux versions de la même langue.
Dans ES3, les fonctions sont autorisées dans les blocs, mais comme les blocs ne définissent pas les étendues, la nouvelle fonction remplace simplement la première fonction. En mode strict ES5, il échoue car il ne permet pas de définir des fonctions dans des blocs. Dans ES6, c'est autorisé et, comme les blocs définissent désormais les étendues, la première fonction n'est pas remplacée.
Testé dans Internet Explorer 5 (émulé) pour ES3 et Node.JS et Firefox pour ES6.
la source
Jelly / CJam,
1514 caractères-1 char grâce à 42545 (ETHproductions)
Essayez-le en ligne! (Gelée) (Palindromisation)
Interprète CJam (Depalindromization)
Explication de la gelée:
Dans Jelly,
¶
c'est la même chose\n
, c'est donc ce que Jelly voit:Explication CJam:
Dans CJam, tout ce qui suit
e#
sur une ligne est un commentaire. Voici donc ce que CJam voit:la source
Perl / JavaScript, 73 octets
Perl renvoie un palindrome et JavaScript «dé-palindromise» la chaîne d'entrée.
Javascript
Suppose que la chaîne est déjà un palindrome valide.
Tout le travail se passe dans la première section:
Stocke l'entrée dans
s
, puis retourne la première moitié (arrondie) de la chaîne. Le reste du script est des affectations de variables inutiles:Essayez-le ici:
Perl
Doit être exécuté avec
-pl
, par exemple:Le code est essentiellement deux substitutions (
s///
), mais en utilisant=
comme délimiteur au lieu de/
:Le premier, remplaçant
prompt();console.log(s.slice(0,-s.length\/2));eg
(qui, certes, gâchera votre chaîne s'il contient quelque chose comme"prompt;console.logs.slice0,-s.length/2;eg"
...) avec1;t
lequel esteval
édité, retournantt
, le second remplace la fin de la chaîne ($
) parreverse$_
laquelle est égalementeval
éditée et ajoute la source d'origine chaîne inversée.Essayez-le en ligne!
la source
Python 2 / Nim ,
7674 octetsPalindromise en Python, dépalindromise en Nim. Abuse la syntaxe des commentaires.
Python et Nim utilisent tous les deux
#
pour les commentaires. Python ne prend pas du tout en charge les commentaires de bloc (sauf pour les chaînes multilignes avec"""
), mais Nim le fait avec#[ comment ]#
.Nous en abusons pour commenter le Python (au début) pour Nim, puis utilisons la fin
]
du Python pour démarrer le code Nim, ressemblant à un commentaire pour Python.Le code Python nécessite son entrée entourée de guillemets. Le code Nim n'a pas cette restriction.
Testé sur Python 2.7.8 et Nim 0.14.2.
Ideone it! - Python 2, palindromisant
Ideone it! - Nim, depalindromizingApparemment, la version de Nim Ideone utilise (0.11.2) ne prend pas en charge les commentaires multilignes. Fonctionne sur Nim 0.14.2.la source
Jelly / Pyth,
1514 caractèresCrédit lorsque le crédit est dû.
Essayez-le en ligne! (Gelée) (Palindromise)
pyth.herokuapp.com (Pyth) (Depalindromizes) (fin de ligne)
la source
05AB1E / V , 14 octets
Essayez-le en ligne!
Palindromise dans 05AB1E
Essayez-le en ligne!
Dépalindromise en V, en utilisant cette réponse de DrMcMoylex.
la source
Japt / JavaScript, 63 caractères
Leçon du jour: les polyglottes Japt / JavaScript sont toujours une mauvaise idée ...
Javascript
La première ligne définit la variable
$Oq
sur 1, puis effectue un no-op avec$Oq &&0
.La deuxième ligne invite l'utilisateur à saisir une chaîne d'entrée, l'affectant à la variable
$U
, puis la tranche d'index0*$U
(toujours 0) à index-$U.length/2
. Cela effectue la dépalindromisation nécessaire; le résultat est ensuitealert
édité. Le programme se termine sur une ReferenceError car la variable$Uê
n'est pas définie.Japt
Dans Japt, tout ce qui se trouve entre les signes dollar est inséré directement dans le code source transpilé. En dehors de cela, chaque lettre minuscule transpile par exemple
.q(
, sauf si le caractère précédent était une autre lettre minuscule, auquel cas elle devient"q"
. Un espace est transpilé)
et toutes les parenthèses manquantes sont automatiquement ajoutées. Le programme ci-dessus se transforme approximativement en:Ceci est ensuite exécuté en JavaScript.
Oq=1;
définit la variableOq
sur 1. Ceci n'est plus jamais utilisé, c'est donc un no-op.O.q()
est une fonction qui efface STDOUT et renvoieundefined
; c'est faux, donc tout&&0 .a("l".e(...
partie n'est pas exécutée.La seule partie qui compte vraiment est
U.ê()
. L'entrée implicite place la chaîne d'entréeU
, la.ê()
transforme en palindrome et la sortie implicite envoie le résultat à STDOUT.Si les entrées de fonction sont autorisées, les éléments suivants fonctionneront pour 34 caractères:
La première partie définit une fonction ES6, mais c'est toujours un programme complet dans Japt. Testez-le en ligne!
la source
Java / Brainfuck, 71 octets
Palindromise en BF, dépalindromise en Java.
Par souci de clarté, c'est ce qui compte pour l'interprète BF:
où la dernière boucle contenant des caractères de la lambda Java est ignorée car le pointeur pointe vers un caractère nul à ce point.
la source
05AB1E / Java 8, 102 caractères
Palindromisez en 05AB1E.
Depalindromize dans Java 8.
Explication 05AB1E:
Explication Java 8:
la source