var QUESTION_ID=68504,OVERRIDE_USER=40695;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:
Pitão, 8 bytes
@xnor sugeriu essa abordagem mais simples na resposta Pyth de @ FryAmTheEggman, depois a traduzi para Pyth.
Isso usa o comportamento prático de
X
(translate) quando são fornecidos apenas dois argumentos: ele traduz do segundo argumento para o segundo argumento invertido. Fazemos isso primeiro com o alfabeto minúsculo (G
) e depois com maiúsculasG
.fonte
C, 59 bytes
Desculpe por trazer C novamente, mas fiquei um pouco decepcionado ao ver apenas as funções C aqui. Fiquei com a impressão de que o OP estava procurando um produto utilizável.
Compilado no Ubuntu 14.04 com um simples:
O executável resultante lê qualquer número de linhas de stdin e grava o resultado em stdout.
Obrigado a muitos outros pôsteres pelo truque do XOR.
fonte
CJam, 17 bytes
Eu queria ajudar a GamrCorps a desenvolver sua solução CJam, mas o resultado foi tão diferente que decidi fazer uma resposta separada.
Experimente online.
Explicação
fonte
JavaScript (ES6),
6967 bytesUsa a mesma estratégia da minha resposta Japt :
Amaldiçoe seus nomes de propriedades incrivelmente longos, JS ...
fonte
document.getElementById
document.getElementsByClassName
ou, no Firefox e Chrome, #document.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
Retina ,
171413 bytesCódigo:
Explicação:
Isso faz algumas coisas mágicas e completa a tarefa.
Experimente aqui .
fonte
\
. Infelizmente, não consegui adicionar classes de caracteres para letras e classes de caracteres invertidas ainda.\T`lL`RlRL
.Pitão,
109Agradecemos a Jakube por salvar um byte com o novo recurso do
;
!Suíte de teste
Uma explicação rápida: reduza começando com a entrada sobre os números 0 e 1. A operação a ser executada é converter o alfabeto em minúsculas com uma
r...0
our...1
quais são as funções inferior e superior do python, respectivamente, aplicadas a ele e depois revertidas.fonte
uXGr;H)2z
X
com o alfabeto e depois com o alfabeto maiúsculo?XXzG)rG1
? Isso parece funcionar.Julia,
746147 bytesEsta é uma função lambda que aceita uma string e retorna uma string. Para chamá-lo, atribua-o a uma variável.
Combinamos cada letra usando uma expressão regular e substituímos cada letra pelo caractere ASCII correspondente a 31 XOR o código ASCII da letra, menos 4.
fonte
$
que você possa atualizar isso para⊻
. Não sabia que você pode usar uma função noreplace
.C,
150129 bytesEssa função apenas converte char para int e adiciona o deslocamento apropriado ao int antes da impressão. Eu sei que não é o mais curto, mas não vi uma implementação em C.
Exemplo de uso
UPDATE: reduziu o nome de uma variável.
fonte
temp
) exatamente com um caractere.i,t;r(char*s){for(;i<strlen(s);i++){t=s[i]+25;t=t<116?180-t:244-t;isalpha(s[i])?putchar(t):putchar(s[i]);}}
Japonês,
2322 bytesExperimente online!
Como funciona
fonte
C, 64
Uma função nula que modifica a string no lugar.
Teste: ideone
fonte
c;t(char*p){for(;c=*p;)*p++=c>64&c<91|c>96&c<123?(c^31)-4:c;}
R,
6961 bytesAgradecemos a @ Giuseppe por remover alguns bytes extras:
Versão anterior:
Esta é uma função anônima. Uso:
fonte
intToUtf8(c(122:97,90:65))
em vez dasraw
conversões, e você também pode se livrarcat
delas. Eu estou fazendo um pouco de um hábito de vir de golfe 1+ ano velhas respostas de vocês ...Sério, 31 bytes (não concorrente)
Hex Dump:
Experimente Online
Expl:
Acabei de perceber que as especificações dizem que não há espaço em branco adicional, mas não há como suprimir novas linhas à saída do Seriously, portanto, não há uma solução seriamente.
fonte
ESACREPPUesacrewol
significa isso ?Ruby, 40 bytes
Nova solução: roubou esse pouco lançando mágica de alguns dos outros posts aqui:
Ruby,
5546 bytes9 bytes de desconto graças a @manatwork
execução de teste:
fonte
Jolf, 15 bytes
Conjunto de teste ou tente com sua própria entrada
fonte
𝔼𝕊𝕄𝕚𝕟 2, 12 caracteres / 26 bytes (não competitivo)
Try it here (Firefox only).
Adicionada função transliterada após o lançamento do desafio.
Explicação
fonte
CJam, 21 bytes
Ainda não é uma solução ideal ... Experimente online
É difícil de explicar sem agrupar as coisas, então aqui está uma explicação geral: obtém entrada, empurra o alfabeto maiúsculo e minúsculo duas vezes, gira as coisas ao redor, combina cadeias maiúsculas e minúsculas, inverte uma e usa transliteração (semelhante à resposta da Retina).
fonte
C (função), 50
Esta baseia-se em todos os três anteriores respostas C, então crédito para @Ruud, @Danwakeem e @ edc65.
Esta função modifica uma matriz de caracteres no lugar.
Meu entendimento é que entradas de função são permitidas, a menos que seja explicitamente proibido na pergunta.
Experimente online.
fonte
PostgreSQL,
118125 bytesSqlFiddleDemo
Resultado:
Entrada:
SELECT text'...'s
EDITAR:
Entrada como tabela:
SqlFiddleDemo
Resultado:
fonte
Python 3,
195169168166 bytesGraças a @TrangOul por -2 bytes!
Como eu não vi que eu poderia ter jogado isso antes?
(sorta) ungolfed:
Experimente no Ideone!
fonte
[]
dejoin
.generator object <genexpr> at...
, mas vou testá-lostr
valores] pode ser passado para ajoin()
função.Python, 61 bytes
Uma função anônima. Nas letras, faz a operação de reversão na representação de bits adicionando 4 e depois invertendo os últimos cinco bits, semelhante à resposta Javascript da ETHproductions .
fonte
Haskell,
119104 bytesEconomizou 15 bytes graças a @nimi.
Uso:
Explicação
Eu sou novo em Haskell ... em programação funcional ... e no site, e sei que existem (muitas) respostas melhores para essa pergunta, mas tenha paciência comigo.
fonte
let
. Comece diretamente comc=fromEnum
. Use(155-c x)
e(219-c x)
. c)True
pode ser substituído por1<2
. - O código falha ao carregar para mim o erro "variável do tipo ambigioso" para funçõesc
es
(ghci 7.10.2), mas isso pode ser facilmente corrigido com, emf[]=""
vez def[]=[]
.Perl 6 , 28 bytes
Uso:
fonte
Warning: Use of "ord" without parentheses is ambiguous at (eval 8)[/System/Library/Perl/5.18/perl5db.pl:732] line 2.
Não sei nada sobre perl, então estou fazendo algo errado? Como eu correria isso?m: my &swap = {S:g/\w/{chr $/.ord+4+^31}/}; say swap ('a'..'z').join
Java, 136 bytes
Exemplo de uso:
Provavelmente o pior idioma comumente usado em termos de tamanho de bytes.
fonte
void x(String i){for(Character c:i.toCharArray())System.out.print(c.isLetter(c)?(char)(c<91?90-(c-65):122-(c-97)):c);}
( 118 bytes )void y(String i){for(int c:i.getBytes())System.out.print((char)(c>65&c<91|c>96&c<123?c<91?90-(c-65):122-(c-97):c));}
( 116 bytes )90-(c-65)
em-c+65+90
e122-(c-97)
em-c+97+122
, o que economiza um byte cada.Shell Unix + tr + printf, 35 bytes
Aqui está você, uma resposta canônica em tr. Eu pensei como poderia uma questão de transliteração do movimento alfabeto sem uma resposta canônica para tr ansliterate o alfabeto?
O tr por si só nem faz um "Olá, mundo!" e como tal não é uma linguagem de programação,
marquei a resposta como não-competitiva[1] .[1]: Edit: Na verdade, o shell Unix é a linguagem e tr é a biblioteca padrão . Agradeço ao Downgoat e ao Digital Trauma por me ajudarem a descobrir isso.
fonte
tr
está no coreutils) como a biblioteca padrão. Veja inúmeras das minhas respostas ;-)tr: range-endpoints of 'Z-A' are in reverse collating sequence order
. Eu acho que você tem que fazer algo assimtr A-Za-z $(printf %s {Z..A} {z..a})
(e substituir$( )
com acentos graves)printf
- afinal, é especificado pelo Posix . Também é um builtin no bash que é bastante onipresente nos dias de hoje. Independentemente disso, ter algo pré-instalado no sistema de todos não é um pré-requisito para o código-golf - nem todos têm CJam em seu sistema, quer ;-)}
e{
é necessário - caso contrário, a expansão se tornará algo parecido comZz Zy Zx ... Za Yz ... Aa
05AB1E , 5 bytes [não concorrente]
Usa o conjunto de caracteres CP-1252 .
Experimente online!
Explicação:
fonte
MATL , 21
28bytesUsa a versão 6.0.0 , que é anterior a esse desafio. O código é executado em oitava.
Exemplo
Explicação
Abordagem antiga, 28 bytes
fonte
MATLAB, 61 bytes
Eu tentei
f=@ismember
, e tornando o intervaloa=65:90
uma variável e o faço32+a
na segundaismember
chamada. Tudo isso encurtou o código, mas resultaria em um programa e, portanto, exigem tantodisp
einput
.Isto dá:
fonte
Braquilog , 66 bytes
A falta de built-ins realmente dói aqui, então temos que recorrer a bons cálculos antigos de códigos ASCII.
O predicado
brachylog_main
espera que uma sequência de códigos de caracteres seja entrada e não saída, por exemplobrachylog_main(`Hello, World!`,_).
Explicação
fonte
Perl 6,
4039 bytesComo todo mundo está executando funções anônimas:
(Obrigado @ b2gills pela dica)
Usa o mesmo trecho de vodu que alguns dos outros posts. Eu não tinha certeza se incluiria a declaração de variável / função na contagem de bytes, por isso fiz apenas por precaução. Sem ela, esta solução tem apenas 34 bytes.
Uso:
fonte
*.trans(…)
para torná-lo mais curto.Python 3,
164159 bytesfonte