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>
Respuestas:
05AB1E / MAT ,
109 caracteresEn 05AB1E esto palindromiza . En MATL se despalindromiza .
Explicación en 05AB1E
Esta parte del código no hace nada (globalmente):
Esta es la parte que hace el trabajo:
Explicación en MATL
Esta es la parte que hace el trabajo:
Esto se ignora:
fuente
05AB1E / Jelly , 6 caracteres
Palindromiza en 05AB1E.
Despalindromiza en gelatina.
Pruébalo en 05AB1E
05AB1E Explicación
Pruébalo en gelatina
Explicación de gelatina
fuente
Python 3 / JavaScript, 83 caracteres
Guardado 2 bytes gracias a @LevitatingLion
Python palindromiza , JavaScript despalindromiza .
Traté de mantener más código constante entre los dos, pero no pude encontrar una buena manera de colarse
.slice
en Python. Aquí hay un método alternativo:fuente
x[::-1][1:]
conx[-2::-1]
para guardar dos caracteres.Scala / Javascript, 106 bytes
Palindromizes en Scala y Depalindromizes en JavaScript.
Pruébalo en ideone (scala) - Advertencia: resaltado de sintaxis incorrecta
Pruébalo en jsfiddle (javascript).
Explicación:
Scala, como Java, procesa escapes Unicode antes que todo lo demás, por lo que Scalac ve el código de esta manera:
El JavaScript se analiza de esta manera:
fuente
Cjam / MAT , 18 caracteres
En CJam esto palindromiza . En MATL despalindromiza .
Explicación en CJam
Parte de trabajo:
Parte ficticia:
Explicación en MATL
Parte ficticia:
Parte de trabajo:
Otra parte ficticia:
fuente
𝔼𝕊𝕄𝕚𝕟 / Javascript ES6, 55 caracteres
Try it here (ES6 browsers only).
Palindromiza en 𝔼𝕊𝕄𝕚𝕟, despalindromiza en Javascript ES6.
Pensé que esto iba a ser fácil, ya que 𝔼𝕊𝕄𝕚𝕟 compila a ES6 y la mayoría de ES6 se puede ejecutar en 𝔼𝕊𝕄𝕚𝕟. Aparentemente, estoy completamente equivocado.
Explicación
this._
comprueba si_
existe una variable en el ámbito global; 𝔼𝕊𝕄𝕚𝕟 usa Lodash y por lo tanto tiene_
almacenado, pero el ES6 puro no.El segmento - -
Σ(`ï+ï.Ħ⬮.Đ1`)
- evalúa desde la cadena el código que palindromiza la entrada. Normalmente, el código seríaï+ïĦ⬮Đ1
, pero puse los puntos para hacer feliz al compilador .El segmento Javascript -
(x=prompt()).slice(0,-x.length/2)
- depalindromiza una cadena de una solicitud.Iba a usar una función (por lo que no tenía que lidiar
prompt
), pero la función de evaluación de 𝔼𝕊𝕄𝕚𝕟 no me gustó, así que uséprompt
y ninguna función para hacer feliz al compilador .fuente
JavaScript ES6 / JavaScript ES3, 143 bytes
Palindromizes en JavaScript ES6, despalindromizes en JavaScript ES3. No competidor , es solo un intento de hacer un políglota para dos versiones del mismo idioma.
En ES3, las funciones están permitidas en bloques, pero como los bloques no definen ámbitos, la nueva función simplemente reemplaza a la primera función. En el modo estricto ES5 falla porque no permite que las funciones se definan en bloques. En ES6 está permitido y, dado que los bloques ahora definen ámbitos, la primera función no se reemplaza.
Probado en Internet Explorer 5 (emulado) para ES3 y Node.JS y Firefox para ES6.
fuente
Jelly / CJam,
1514 caracteres-1 char gracias a 42545 (ETHproductions)
Pruébalo en línea! (Gelatina) (Palindromización)
Intérprete de CJam (despalindromización)
Explicación de gelatina:
En Jelly,
¶
es lo mismo que\n
, así que esto es lo que Jelly ve:Explicación de CJam:
En CJam, todo lo que sigue
e#
en una línea es un comentario. Entonces, esto es lo que ve CJam:fuente
Perl / JavaScript, 73 bytes
Perl devuelve un palíndromo y JavaScript 'despalindiza' la cadena de entrada.
JavaScript
Asume que la cadena ya es un palíndromo válido.
Todo el trabajo sucede en la primera sección:
Almacena la entrada
s
, luego devuelve la primera mitad (redondeada) de la cadena. El resto del script son asignaciones de variables sin sentido:Pruébalo aquí:
Perl
Debe ejecutarse con
-pl
, por ejemplo:El código es básicamente dos sustituciones (
s///
), pero se usa=
como delimitador en lugar de/
:El primero, reemplazando
prompt();console.log(s.slice(0,-s.length\/2));eg
(que, sin duda, estropeará su cadena si contiene algo así como"prompt;console.logs.slice0,-s.length/2;eg"
...) con el1;t
que seeval
edita, regresandot
, el segundo reemplaza el final de la cadena ($
) con elreverse$_
que también seeval
edita y agrega la fuente original cuerda invertida.Pruébalo en línea!
fuente
Python 2 / Nim ,
7674 bytesPalindromiza en Python, despalindromiza en Nim. Abusa de la sintaxis de comentarios.
Python y Nim ambos usan
#
para comentarios. Python no admite comentarios en bloque (excepto para cadenas multilínea con"""
), pero Nim sí#[ comment ]#
.Abusamos de esto para comentar el Python (al principio) para Nim, luego usamos el seguimiento
]
en Python para iniciar el código de Nim, como un comentario para Python.El código Python requiere su entrada rodeada de comillas. El código Nim no tiene esta restricción.
Probado en Python 2.7.8 y Nim 0.14.2.
Ideone it! - Python 2, palindromizante
Ideone it! - Nim, despalindromizandoAparentemente, la versión de Nim Ideone utiliza (0.11.2) no admite comentarios multilínea. Funciona en Nim 0.14.2.fuente
Jelly / Pyth,
1514 caracteresCrédito a quien crédito merece.
Pruébalo en línea! (Gelatina) (Palindromiza)
pyth.herokuapp.com (Pyth) (Depalindromizes) (nueva línea final)
fuente
05AB1E / V , 14 bytes
Pruébalo en línea!
Palindromiza en 05AB1E
Pruébalo en línea!
Despalindromiza en V, usando esta respuesta de DrMcMoylex.
fuente
Japt / JavaScript, 63 caracteres
Lección del día: los políglotas de Japt / JavaScript son siempre una mala idea ...
JavaScript
La primera línea establece la variable
$Oq
en 1, luego realiza una operación no con$Oq &&0
.La segunda línea solicita al usuario una cadena de entrada, asignándola a la variable
$U
, luego la corta del índice0*$U
(siempre 0) al índice-$U.length/2
. Esto realiza la despalindromización necesaria; El resultado es entoncesalert
ed. El programa termina en un ReferenceError porque variable$Uê
no está definida.Japt
En Japt, cualquier cosa entre signos de dólar se inserta directamente en el código fuente transpilado. Aparte de eso, cada letra minúscula se transmite a
.q(
, por ejemplo , a menos que el carácter anterior fuera otra letra minúscula, en cuyo caso se convierte"q"
. Se transpira un espacio)
y todos los parentes faltantes se agregan automáticamente. El programa anterior se transmite aproximadamente a:Esto luego se ejecuta como JavaScript.
Oq=1;
establece la variableOq
en 1. Esto nunca se usa de nuevo, por lo que es un no-op.O.q()
es una función que borra STDOUT y regresaundefined
; esto es falso, entonces todo el&&0 .a("l".e(...
no se ejecuta parte.La única parte que realmente importa es
U.ê()
. La entrada implícita coloca la cadena de entradaU
, la.ê()
convierte en un palíndromo y la salida implícita envía el resultado a STDOUT.Si se permiten entradas de funciones, lo siguiente funcionará para 34 caracteres:
La primera parte define una función ES6, pero sigue siendo un programa completo en Japt. ¡Pruébalo en línea!
fuente
Java / Brainfuck, 71 bytes
Palindromiza en BF, despalindromiza en Java.
En aras de la claridad, esto es lo que le importa al intérprete de BF:
donde se omite el último bucle que contiene caracteres de la lambda de Java porque el puntero apunta a un carácter nulo en ese punto.
fuente
05AB1E / Java 8, 102 caracteres
Palindromizar en 05AB1E.
Depalindromize en Java 8.
Explicación 05AB1E:
Explicación Java 8:
fuente