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>
Respuestas:
Python 3 ,
2725 bytesPruébalo en línea!
fuente
Jalea , 4 bytes
Pruébalo en línea!
Cómo funciona
fuente
APL (Dyalog) , 5 bytes
Pruébalo en línea!
Referencia útil
∧=⌊
: Devuelve1
si el mínimo común múltiplo es igual al mínimo. Esto solo es cierto si uno de los valores es cero o ambos son iguales. Alternativamente podría tener=*⌊
⌈×
: El máximo multiplicado por lo anterior.fuente
Lenguaje de programación Shakespeare , 296 bytes
Pruébalo en línea!
Primera participación en un desafío de código de golf, ¡comencemos con uno de mis idiomas de broma favoritos!
Explicación: Declaración de las dos variables Ford y Ajax (nombres de variables más cortos disponibles)
Primera escena: ponga los dos valores en la variable, luego pruébelos para determinar la igualdad, luego pruebe Ajax contra 0. Si el valor que tenemos que devolver está almacenado en la variable Ford, vaya a la Escena C.
Si Ford es 0, imprime Ajax, de lo contrario, configura Ajax como 0 y luego imprime Ajax. Luego ve al final del programa.
Escena C: Imprimir Ford
Escena V: Fin del programa.
fuente
Ruby , 21 bytes
Pruébalo en línea!
Porque Ruby
Breve explicación:
a|b
es bitwse OR, por lo que nos da el número correcto si a == bo uno de ellos es cero.El número mágico
531
es 2 ^ 9 + 2 ^ 4 + 2 ^ 1 + 2 ^ 0, y el operador [] extrae un solo bit. Esto significa: multiplique por 1 si a * b es 0, 1, 2, 4 o 9, de lo contrario, multiplique por 0.fuente
Haskell , 25 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 17 bytes, puerto de alguna manera desde la respuesta de Python
Pruébalo en línea!
JavaScript (Node.js) , 21 bytes
Pruébalo en línea!
fuente
?0:
... ¿Podría hacerlo||
, o la precedencia lo estropea??0:
retorno medio cero si cond no es cero,||
retorno no cero si cond no es ceroPyth ,
87 bytesPruébalo en línea!
Caso 1 - Ambos valores distintos de cero e iguales
Caso 2 - Ambos valores distintos de cero y desiguales
Caso 3 - Exactamente un valor cero
Caso 4 - Ambos valores cero
Solución alternativa, también 7 bytes.
Pruébalo en línea
Versión anterior, 8 bytes
fuente
@{+0Q3
Funciona para 6 bytes.Java 8, 20 bytes
Lambda al curry. Robado de aquí .
fuente
Stax , 8 bytes
Ejecutar y depurarlo
Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente
Brain-Flak , 32 bytes
Pruébalo en línea!
fuente
(primer envío, así que no patees demasiado fuerte)
Python 2 ,
57 4443 bytesPruébalo en línea!
(comprimido un poco después de mirar la primera respuesta de Python )
fuente
C (gcc), 25 bytes
f(a,b){a=a^b&&a*b?0:a|b;}
pseudocódigo:
fuente
C (gcc), 26 bytes
Pruébalo en línea!
Expansión / Sin golf:
fuente
MATL , 9 bytes
Pruébalo en línea!
Explicación:
fuente
t?td~*]X>
GNU sed, 23 bytes
(debe ejecutarse con
-r
bandera)Pruébalo en línea!
fuente
QBasic, 34 bytes
¡Enfoque diferente!
Observe que los valores distintos de cero en la cuadrícula de salida son todos los bits
OR
de los dos números de entrada. Esto es soloa OR b
en QBasic. Queremos generar este valor cuandoa*b=0 OR a=b
, y de lo0
contrario, lo que podemos hacer al multiplicar por el negativo del condicional antes mencionado (negativo, ya que la verdad está-1
en QBasic).fuente
brainfuck, 25 bytes
La entrada son valores de dos bytes (no ascii)
fuente
Rápido , 118 bytes
fuente
!=
y el ternario.n1
y cambiarn2
caracteres individuales para acortarlos; eliminar algunos espacios en blanco y paréntesis, y eliminar algunos espacios. Además,==0
puede ser<1
y!=0
puede ser>0
, ya que sabemos que solo las entradas0,1,2,3
son posibles. Nunca lo programé en Swift antes, pero lo reduje a 91 bytes de esta manera:func c(a:Int,b:Int){a==b ?print("\(a)"):a*b>0 ?print("0"):a<1 ?print("\(b)"):print("\(a)")}
Pruébelo en línea.func c(a:Int,b:Int){print(a==b||a*b<1 ?max(a,b):0)}
Pruébelo en línea. Nuevamente bienvenido a PPCG, y disfrute su estadía.{$0==$1||1>$0*$1 ?max($0,$1):0}
Pruébelo en línea!Lote,
38363530 bytesPuerto de la respuesta Python de @ Dennis, ya que los condicionales son demasiado caros en Batch.
fuente
Brachylog , 10 bytes
Pruébalo en línea!
fuente
J ,
87 bytes1 byte guardado por H.PWiz.
Pruébalo en línea!
Puerto AJ de la solución APL de H.PWiz
=
son iguales los numeros? (resultados en 1 o 0)^
al poder de<.
el número más pequeño*
multiplicado por>.
el mayor númerofuente
>.*=^<.
para 7 bytes=
y^
!05AB1E ,
98 bytes-1 byte gracias a @MagicOctopusUrn .
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Explicación generalizada:
fuente
Ës0å~iZë0
era mía; Buena esa. En realidad, no estoy seguro de que puedas superar los 9 bytes por mucho.à®Ë®P_+*
donde_
es lógicamente equivalente a>Θ
_
convierte 0 en 1, todos los demás valores en 0.== 0
comando, no sabía_
exactamente eso. También debería ser útil para otros desafíos en el futuro. TIL :)Javascript, 35 bytes
fuente
05AB1E , 6 bytes
Pruébalo en línea!
Puerto (ish) de mi respuesta Pyth .
TIO encabezado / pie de página tomado de la respuesta de Emigna
fuente
Javascript ES6,
25222120 bytes1413 bytes , si los argumentos se proporcionan en orden ordenadofuente
Python 2 ,
3428 bytesPruébalo en línea!
-6 con agradecimiento a @Dennis
fuente
[0<i!=j>0]
Guarda algunos bytes.QBasic,
383635 bytesEn parte inspirado por la
IF ... THEN ... ELSE
respuesta de Erik , aquí hay una solución matemática.Como llegué aquí
Nota importante para comprender las matemáticas con condicionales: en QBasic, los resultados de los operadores de comparación son
0
y-1
, no0
y1
.Comenzamos con el código de Erik:
En otras palabras, si
a
yb
son ambos distintos de cero, imprimaa*-(a=b)
(a
sia=b
, de lo contrario0
); de lo contrario (al menos uno dea
yb
es cero), salidaa+b
(el número distinto de cero, o0
si ambos son cero).Ya hay algunas matemáticas con condicionales pasando aquí. Avancemos un paso más y veamos si podemos eliminar la
IF
declaración por completo. Tendremos que usara*b>0
para la condición externa:a*b
puede tener múltiples valores de verdad diferentes, lo cual está bienIF
pero causa problemas para las matemáticas.Este es el truco estándar de la
IF
eliminación. Cuandoc
es verdad,c*a*(a=b)
es-a*(a=b)
y(c+1)*(a+b)
es0
; cuandoc
es falso,c*a*(a=b)
es0
y(c+1)*(a+b)
esa+b
. Entonces esta expresión da los mismos resultados que laIF ... THEN ... ELSE
. El único problema es que hace que nuestro programa sea de 40 bytes en lugar de 38. Tal vez podamos acortarlo reorganizando las matemáticas.Todavía 40 bytes ...
Ahora nuestro programa ha vuelto a 38 bytes. Pero como solo lo estamos usando
c
una vez, ya no tenemos que asignarlo a una variable:Ahora tenemos 36 bytes.
Pero espera, hay más ... Esa
a+b+a*(a=b)
expresión parece un poco redundante.a*(a=b)
es-a
sia=b
y de lo0
contrario. Cuando lo agregamosa
, obtenemos0
sia=b
y de loa
contrario. Quizás podamos lograr lo mismo en menos bytes invirtiendo la condición.Al principio, esto no parece más corto. Pero podemos guardar un byte restando en lugar de agregar un negativo:
Y ahí tenemos nuestra solución de 35 bytes.
fuente
Limpio ,
464342 bytesPruébalo en línea!
Composición anónima
:: [Int] -> Int
, ordena el par y luego empareja al primer miembro.Hacerlo como una lambda compuesta tiene la misma longitud:
fuente
Gelatina ,
76 bytesPruébalo en línea! o Prueba todas las combinaciones!
¿Cómo?
Usando el método en la respuesta APL , obtenemos el mismo conteo de bytes. Un byte más largo que esa respuesta porque el mínimo común múltiplo es de dos bytes.
6 bytes
Pruébalo en línea!
fuente
∧=⌊
y=*⌊
. El segundo de los cuales es preferido por Jelly=*⌊
hacer?⌊
es mínimo. O uno podría usar×
en ambos idiomas