var QUESTION_ID=165314,OVERRIDE_USER=8478;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:
Python 3 ,
2725 bytesExperimente online!
fonte
Gelatina , 4 bytes
Experimente online!
Como funciona
fonte
APL (Dyalog) , 5 bytes
Experimente online!
Referência útil
∧=⌊
: Retorna1
se o múltiplo comum mais baixo for igual ao mínimo. Isso só é verdade se um dos valores for zero ou ambos forem iguais. Alternativamente, eu poderia ter=*⌊
⌈×
: O máximo multiplicado pelo acima.fonte
Linguagem de programação de Shakespeare , 296 bytes
Experimente online!
Primeira participação em um desafio de código-golfe, então vamos começar com uma das minhas linguagens de piadas favoritas!
Explicação: Declaração das duas variáveis Ford e Ajax (nomes de variáveis mais curtos disponíveis)
Primeira cena: coloque os dois valores na variável, depois teste-os quanto à igualdade, depois teste o Ajax contra 0. Se o valor que precisamos retornar estiver armazenado na variável Ford, vá para a cena C.
Se Ford for 0, imprima Ajax, então defina Ajax como 0 e imprima Ajax. Então vá para o final do programa.
Cena C: Impressão Ford
Cena V: Fim do programa.
fonte
Ruby , 21 bytes
Experimente online!
Porque Ruby
Breve explicação:
a|b
é bitwse OU, portanto, nos dá o número certo se a == b ou um deles for zero.O número mágico
531
é 2 ^ 9 + 2 ^ 4 + 2 ^ 1 + 2 ^ 0 e o operador [] extrai um único bit. Isso significa: multiplique por 1 se a * b for 0, 1, 2, 4 ou 9, multiplique por 0 caso contrário.fonte
Haskell , 25 bytes
Experimente online!
fonte
JavaScript (Node.js) , 17 bytes, porta de alguma forma da resposta do Python
Experimente online!
JavaScript (Node.js) , 21 bytes
Experimente online!
fonte
?0:
... Você poderia||
, ou a precedência estraga tudo??0:
retorno médio zero se cond não é zero,||
retornar diferente de zero se cond não é zeroPitão ,
87 bytesExperimente online!
Caso 1 - Ambos os valores são diferentes de zero e iguais
Caso 2 - Valores diferentes de zero e desiguais
Caso 3 - Exatamente um valor zero
Caso 4 - Ambos os valores zero
Solução alternativa, também 7 bytes
Experimente online
Versão anterior, 8 bytes
fonte
@{+0Q3
trabalha para 6 bytes.Java 8, 20 bytes
Lambda ao curry. Roubado daqui .
fonte
Stax , 8 bytes
Execute e depure
Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte
Brain-Flak , 32 bytes
Experimente online!
fonte
(primeira submissão, por favor, não chute muito)
Python 2 ,
57 4443 bytesExperimente online!
(compactado um pouco depois de analisar a primeira resposta python )
fonte
C (gcc), 25 bytes
f(a,b){a=a^b&&a*b?0:a|b;}
pseudo-código:
fonte
C (gcc), 26 bytes
Experimente online!
Expanation / Ungolfed:
fonte
MATL , 9 bytes
Experimente online!
Explicação:
fonte
t?td~*]X>
GNU sed, 23 bytes
(deve ser executado com
-r
sinalizador)Experimente online!
fonte
QBasic, 34 bytes
Abordagem diferente!
Observe que os valores diferentes de zero na grade de saída são todos os bits
OR
dos dois números de entrada. Isso é apenasa OR b
no QBasic. Queremos gerar esse valor quandoa*b=0 OR a=b
, e0
caso contrário, o que podemos fazer multiplicando pelo negativo do condicional mencionado acima (negativo, pois a verdade está-1
em QBasic).fonte
brainfuck, 25 bytes
A entrada tem dois valores de bytes (não ascii)
fonte
Rápido , 118 bytes
fonte
!=
o ternário.n1
e usarn2
caracteres únicos para encurtá-los; remova alguns espaços em branco e parênteses e remova alguns espaços. Além disso,==0
pode ser<1
e!=0
pode ser>0
, pois sabemos que apenas as entradas0,1,2,3
são possíveis. Nunca programei no Swift antes, mas eu o reduzi para 91 bytes como este:func c(a:Int,b:Int){a==b ?print("\(a)"):a*b>0 ?print("0"):a<1 ?print("\(b)"):print("\(a)")}
Experimente online.func c(a:Int,b:Int){print(a==b||a*b<1 ?max(a,b):0)}
Experimente online. Mais uma vez bem-vindo ao PPCG, e aproveite a sua estadia!{$0==$1||1>$0*$1 ?max($0,$1):0}
Experimente online!Lote,
38363530 bytesResposta da porta do @ Dennis's Python, pois os condicionais são muito caros no lote.
fonte
Braquilog , 10 bytes
Experimente online!
fonte
J ,
87 bytes1 byte salvo pelo H.PWiz.
Experimente online!
Porta AJ da solução APL da H.PWiz
=
os números são iguais? (resulta em 1 ou 0)^
ao poder de<.
o número menor*
multiplicado por>.
o número maiorfonte
>.*=^<.
para 7 bytes=
e^
!05AB1E ,
98 bytes-1 byte graças a @MagicOctopusUrn .
Experimente online ou verifique todos os casos de teste .
Explicação:
Explicação generalizada:
fonte
Ës0å~iZë0
era meu; Agradável. Na verdade, não tenho certeza de que você pode vencer 9 bytes por muito.à®Ë®P_+*
onde_
é logicamente equivalente a>Θ
_
Acontece 0 para 1, todos os outros valores em 0.== 0
comando, não sabia que_
faz exatamente isso. Também deve ser útil para outros desafios no futuro. TIL. :)Javascript, 35 bytes
fonte
05AB1E , 6 bytes
Experimente online!
Porto (ish) da minha resposta Pyth .
Cabeçalho / rodapé do TIO retirado da resposta de Emigna
fonte
Javascript ES6,
25222120 bytes1413 bytes , se os argumentos forem fornecidos em ordem classificadafonte
Python 2 ,
3428 bytesExperimente online!
-6 com agradecimentos a @Dennis
fonte
[0<i!=j>0]
salva alguns bytes.QBasic,
383635 bytesParcialmente inspirado na
IF ... THEN ... ELSE
resposta de Erik , aqui está uma solução apenas matemática.Como cheguei aqui
Nota importante para entender matemática com condicionais: no QBasic, os resultados dos operadores de comparação são
0
e-1
, não0
e1
.Começamos com o código de Erik:
Em outras palavras, se
a
eb
são ambos diferentes de zero, então imprimaa*-(a=b)
(a
sea=b
, caso contrário0
); else (pelo menos um dea
eb
é zero), outputa+b
(o número diferente de zero ou0
se ambos são zero).Já existe alguma matemática com condicionais acontecendo aqui. Vamos dar um passo adiante e ver se conseguimos eliminar
IF
completamente a afirmação. Teremos que usara*b>0
a condição externa:a*b
pode ter vários valores de verdade diferentes, o que é bom,IF
mas causa problemas para a matemática.Este é o truque padrão da
IF
eliminação. Quandoc
é verdade,c*a*(a=b)
é-a*(a=b)
e(c+1)*(a+b)
é0
; Quandoc
é falso,c*a*(a=b)
é0
e(c+1)*(a+b)
éa+b
. Portanto, essa expressão fornece os mesmos resultados que oIF ... THEN ... ELSE
. O único problema é que ele torna o nosso programa 40 bytes em vez de 38. Talvez possamos reduzi-lo reorganizando a matemática.Ainda 40 bytes ...
Agora, nosso programa voltou aos 38 bytes. Mas como estamos usando apenas
c
uma vez, não precisamos mais atribuí-lo a uma variável:Agora estamos com 36 bytes.
Mas espere, tem mais ... Essa
a+b+a*(a=b)
expressão parece um pouco redundante.a*(a=b)
é-a
sea=b
e0
caso contrário. Quando o adicionamosa
, obtemos0
sea=b
e dea
outra forma. Talvez possamos conseguir a mesma coisa em menos bytes, revertendo a condição.No começo, isso não parece mais curto. Mas podemos salvar um byte subtraindo em vez de adicionar um negativo:
E aqui temos a nossa solução de 35 bytes.
fonte
Limpo ,
464342 bytesExperimente online!
Composição anônima
:: [Int] -> Int
, classifica o par e depois corresponde ao primeiro membro.Fazê-lo como um lambda composto tem o mesmo comprimento:
fonte
Geléia ,
76 bytesExperimente online! ou Experimente todas as combinações!
Quão?
Usando o método na resposta da APL , obtemos a mesma contagem de bytes. Um byte a mais que essa resposta, porque o múltiplo comum mais baixo é de dois bytes.
6 bytes
Experimente online!
fonte
∧=⌊
e=*⌊
. O segundo dos quais é preferido pela geléia=*⌊
faz?⌊
é mínimo. Ou pode-se usar×
em ambas as línguas