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>
Respostas:
05AB1E / MATL ,
109 caracteresEm 05AB1E, isso palindromiza . Em MATL ele despaliza .
Explicação em 05AB1E
Esta parte do código não faz nada (globalmente):
Esta é a parte que faz o trabalho:
Explicação em MATL
Esta é a parte que faz o trabalho:
Isso é ignorado:
fonte
05AB1E / Jelly , 6 caracteres
Palindromiza em 05AB1E.
Despalindromiza em geléia.
Experimente em 05AB1E
05AB1E Explicação
Experimente em Jelly
Explicação da geléia
fonte
Python 3 / JavaScript, 83 caracteres
Guardado 2 bytes graças a @LevitatingLion
Python palindromiza , JavaScript despalindromiza .
Tentei manter mais código constante entre os dois, mas não consegui descobrir uma boa maneira de me infiltrar
.slice
no Python. Aqui está um método alternativo:fonte
x[::-1][1:]
porx[-2::-1]
para salvar dois caracteres.Scala / Javascript, 106 bytes
Palindromiza em scala e despalindromizes em javascript.
Experimente no ideone (scala) - Aviso: realce de sintaxe incorreto
Experimente no jsfiddle (javascript).
Explicação:
Scala, como java, processa escapes unicode antes de tudo, então o scalac vê o código assim:
O javascript é analisado assim:
fonte
CJam / MATL , 18 caracteres
No CJam, isso palindromiza . Em MATL ele despaliza .
Explicação em CJam
Parte de trabalho:
Parte fictícia:
Explicação em MATL
Parte fictícia:
Parte de trabalho:
Outra parte fictícia:
fonte
𝔼𝕊𝕄𝕚𝕟 / Javascript ES6, 55 caracteres
Try it here (ES6 browsers only).
Palindromiza em 𝔼𝕊𝕄𝕚𝕟, despalindromiza em Javascript ES6.
Eu pensei que isso seria fácil, já que 𝔼𝕊𝕄𝕚𝕟 compila no ES6 e a maioria do ES6 pode ser executada no 𝔼𝕊𝕄𝕚𝕟. Aparentemente, estou completamente errado.
Explicação
this._
verifica se a variável_
existe no escopo global; 𝔼𝕊𝕄𝕚𝕟 usa Lodash e, portanto, possui_
armazenou, mas o ES6 puro não.O segmento - -
Σ(`ï+ï.Ħ⬮.Đ1`)
- avalia a partir da string o código que palindromiza a entrada. Normalmente, o código seriaï+ïĦ⬮Đ1
, mas eu coloco os pontos para deixar o compilador feliz .O segmento Javascript -
(x=prompt()).slice(0,-x.length/2)
- despaliza uma string de um prompt.Eu ia usar uma função (então não precisava lidar com isso
prompt
), mas a função de avaliação de didn't não gostava disso, então useiprompt
e nenhuma função para fazer o compilador feliz .fonte
JavaScript ES6 / JavaScript ES3, 143 bytes
Palindromiza no JavaScript ES6, despalindromiza no JavaScript ES3. Não competindo , é apenas uma tentativa de fazer um poliglota para duas versões do mesmo idioma.
No ES3, as funções são permitidas em blocos, mas como os blocos não definem escopos, a nova função apenas substitui a primeira. No modo estrito do ES5, ele falha porque não permite que funções sejam definidas em blocos. No ES6, é permitido e, como os blocos agora definem escopos, a primeira função não é substituída.
Testado no Internet Explorer 5 (emulado) para ES3 e Node.JS e Firefox para ES6.
fonte
Geléia / CJam,
1514 caracteres-1 char graças a 42545 (ETHproductions)
Experimente online! (Gelatina) (Palindromização)
Intérprete CJam (Despalindromization)
Explicação da geléia:
Em Jelly,
¶
é o mesmo que\n
, então é isso que Jelly vê:Explicação CJam:
No CJam, tudo o que está
e#
em uma linha é um comentário. Então, é isso que CJam vê:fonte
Perl / JavaScript, 73 bytes
Perl retorna um palíndromo e o JavaScript 'des-palindromiza' a sequência de entrada.
Javascript
Assume que a string já é um palíndromo válido.
Todo o trabalho acontece na primeira seção:
Armazena a entrada
s
e retorna a primeira metade (arredondada) da string. O restante do script são atribuições de variáveis inúteis:Experimente aqui:
Perl
Deve ser executado com
-pl
, por exemplo:O código é basicamente duas substituições (
s///
), mas usando=
como delimitador em vez de/
:A primeira, substituindo
prompt();console.log(s.slice(0,-s.length\/2));eg
(que, reconhecidamente, atrapalhará sua string se contiver algo como"prompt;console.logs.slice0,-s.length/2;eg"
...) pela1;t
qual éeval
ed, retornandot
, a segunda substituirá o final da string ($
) pelareverse$_
qual também seráeval
ed e anexará a fonte original string invertida.Experimente online!
fonte
Python 2 / Nim ,
7674 bytesPalindromiza em Python, despalindromiza em Nim. Abusa de sintaxe de comentário.
Python e Nim usam
#
para comentários. O Python não suporta comentários de bloco (exceto para cadeias de linhas múltiplas com"""
), mas o Nim suporta#[ comment ]#
.Nós abusamos disso para comentar o Python (no começo) para o Nim, depois usamos o seguinte
]
no Python para iniciar o código do Nim, parecendo um comentário para o Python.O código Python requer sua entrada entre aspas. O código Nim não tem essa restrição.
Testado em Python 2.7.8 e Nim 0.14.2.
Ideone it! - Python 2, palindromizante
Ideone it! - Nim, despalindromizingAparentemente, a versão do Nim Ideone usa (0.11.2) não suporta comentários de várias linhas. Trabalhos em Nim 0.14.2.fonte
Geléia / Pyth,
1514 caracteresCrédito onde o crédito é devido.
Experimente online! (Gelatina) (Palindromiza)
pyth.herokuapp.com (Pyth) (Despalindromizes) (nova linha à direita)
fonte
05AB1E / V , 14 bytes
Experimente online!
Palindromiza em 05AB1E
Experimente online!
Despalindromiza em V, usando esta resposta do DrMcMoylex.
fonte
Japonês / JavaScript, 63 caracteres
Lição do dia: os poliglotas Japt / JavaScript são sempre uma má ideia ...
Javascript
A primeira linha define a variável
$Oq
como 1 e, em seguida, executa um no-op com$Oq &&0
.A segunda linha solicita ao usuário uma sequência de entrada, atribuindo-a à variável e
$U
, em seguida, cortando-a do índice0*$U
(sempre 0) para o índice-$U.length/2
. Isso realiza a despalindromização necessária; o resultado é entãoalert
ed. O programa termina em um ReferenceError porque a variável$Uê
não está definida.Japt
No Japt, qualquer coisa entre cifrões é inserida diretamente no código-fonte transpilado. Fora isso, cada letra minúscula transpila para
.q(
, por exemplo , a menos que o caractere anterior seja outra letra minúscula; nesse caso, ela se torna"q"
. Um espaço é transpilado para)
e todas as parênteses ausentes são adicionadas automaticamente. O programa acima transpila aproximadamente para:Isso é executado como JavaScript.
Oq=1;
define a variávelOq
como 1. Isso nunca é usado novamente, por isso é um no-op.O.q()
é uma função que limpa STDOUT e retornaundefined
; isso é falso, então a&&0 .a("l".e(...
parte inteira não é executada.A única parte que realmente importa é
U.ê()
. A entrada implícita coloca a sequência de entradaU
,.ê()
transforma-a em um palíndromo e a saída implícita envia o resultado para STDOUT.Se entradas de função forem permitidas, o seguinte funcionará para 34 caracteres:
A primeira parte define uma função ES6, mas ainda é um programa completo em japonês. Teste online!
fonte
Java / Brainfuck, 71 bytes
Palindromiza em BF, despalindromiza em Java.
Por uma questão de clareza, é isso que importa para o intérprete de BF:
em que o último loop que contém caracteres do Java lambda é ignorado porque o ponteiro aponta para um caractere nulo nesse ponto.
fonte
05AB1E / Java 8, 102 caracteres
Palindromize em 05AB1E.
Despalindromize em Java 8.
Explicação 05AB1E:
Explicação Java 8:
fonte