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>
Antworten:
Python 3 ,
2725 BytesProbieren Sie es online!
quelle
Gelee , 4 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
APL (Dyalog) , 5 Bytes
Probieren Sie es online!
Nützliche Referenz
∧=⌊
: Gibt zurück,1
wenn das niedrigste gemeinsame Vielfache dem Minimum entspricht. Dies gilt nur, wenn einer der Werte Null ist oder beide gleich sind. Alternativ könnte ich haben=*⌊
⌈×
: Das Maximum multipliziert mit dem obigen Wert.quelle
Shakespeare-Programmiersprache , 296 Bytes
Probieren Sie es online!
Erste Teilnahme an einer Code-Golf-Challenge, also fangen wir mit einer meiner Lieblings-Scherzsprachen an!
Erläuterung: Deklaration der beiden Variablen Ford und Ajax (kürzeste verfügbare Variablennamen)
Erste Szene: Fügen Sie die beiden Werte in die Variable ein, testen Sie sie auf Gleichheit und testen Sie Ajax gegen 0. Wenn der Wert, den wir zurückgeben müssen, in der Variablen Ford gespeichert ist, fahren Sie mit Szene C fort.
Wenn Ford 0 ist, geben Sie Ajax aus, andernfalls setzen Sie Ajax auf 0 und geben Sie Ajax aus. Gehen Sie dann zum Ende des Programms.
Szene C: Ford drucken
Szene V: Programmende.
quelle
Ruby , 21 Bytes
Probieren Sie es online!
Weil Ruby
Kurze Erklärung:
a|b
ist bitwse OR, also gibt es uns die richtige Zahl, wenn a == b oder eine von ihnen Null ist.Die magische Zahl
531
ist 2 ^ 9 + 2 ^ 4 + 2 ^ 1 + 2 ^ 0, und der Operator [] extrahiert ein einzelnes Bit. Dies bedeutet: Mit 1 multiplizieren, wenn a * b 0, 1, 2, 4 oder 9 ist, andernfalls mit 0 multiplizieren.quelle
Haskell , 25 Bytes
Probieren Sie es online!
quelle
JavaScript (Node.js) , 17 Bytes, Port irgendwie von Python-Antwort
Probieren Sie es online!
JavaScript (Node.js) , 21 Byte
Probieren Sie es online!
quelle
?0:
... Könnten Sie das tun||
, oder bringt der Vorrang das durcheinander??0:
Mittelwert Null zurückgeben, wenn cond nicht Null ist,||
Nicht-Null zurückgeben, wenn cond nicht Null istPyth ,
87 BytesProbieren Sie es online!
Fall 1 - Beide Werte ungleich Null und gleich
Fall 2 - Beide Werte ungleich Null und ungleich
Fall 3 - Genau ein Wert Null
Fall 4 - Beide Werte sind Null
Alternative Lösung, auch 7 Bytes
Probieren Sie es online aus
Vorherige Version, 8 Bytes
quelle
@{+0Q3
arbeitet für 6 Bytes.Java 8, 20 Bytes
Curry-Lambda. Von hier gestohlen .
quelle
Stax , 8 Bytes
Führen Sie es aus und debuggen Sie es
Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
Brain-Flak , 32 Bytes
Probieren Sie es online!
quelle
(erste Einreichung, also bitte nicht zu fest treten)
Python 2 ,
57 4443 BytesProbieren Sie es online!
(komprimiert ein bisschen nach dem ersten Blick auf Python- Antwort)
quelle
C (gcc), 25 Bytes
f(a,b){a=a^b&&a*b?0:a|b;}
Pseudocode:
quelle
C (gcc), 26 Bytes
Probieren Sie es online!
Expanation / Ungolfed:
quelle
MATL , 9 Bytes
Probieren Sie es online!
Erläuterung:
quelle
t?td~*]X>
GNU sed, 23 Bytes
(muss mit
-r
flag ausgeführt werden)Probieren Sie es online!
quelle
QBasic, 34 Bytes
Anderer Ansatz!
Beachten Sie, dass die Nicht-Null-Werte im Ausgaberaster alle bitweise
OR
von den beiden Eingabezahlen sind. Dies ist nura OR b
in QBasic. Wir wollen diesen Wert ausgeben, wenna*b=0 OR a=b
und0
ansonsten, was wir tun können, indem wir mit dem Negativen der oben genannten Bedingung multiplizieren (negativ, da die Wahrheit-1
in QBasic ist).quelle
Brainfuck, 25 Bytes
Eingabe ist zwei Byte-Werte (nicht ASCII)
quelle
Schnell , 118 Bytes
quelle
!=
und das Ternäre entfernen .n1
undn2
verkürzen. Entfernen Sie einige Leerzeichen und Klammern, und entfernen Sie einige Leerzeichen. Darüber hinaus==0
kann<1
und!=0
kann es sein>0
, da wir wissen, dass nur die Eingaben0,1,2,3
möglich sind. Noch nie zuvor in Swift programmiert, aber ich habe es auf 91 Bytes reduziert:func c(a:Int,b:Int){a==b ?print("\(a)"):a*b>0 ?print("0"):a<1 ?print("\(b)"):print("\(a)")}
Probieren Sie es online aus.func c(a:Int,b:Int){print(a==b||a*b<1 ?max(a,b):0)}
Probieren Sie es online aus. Nochmals herzlich willkommen bei PPCG, und genießen Sie Ihren Aufenthalt!{$0==$1||1>$0*$1 ?max($0,$1):0}
Probieren Sie es online aus!Batch,
38363530 BytesPort von @ Dennis's Python antworte, da Konditionen in Batch zu teuer sind.
quelle
Brachylog , 10 Bytes
Probieren Sie es online!
quelle
J ,
87 Bytes1 Byte von H.PWiz gespeichert.
Probieren Sie es online!
AJ Port der APL-Lösung von H.PWiz
=
sind die zahlen gleich (ergibt 1 oder 0)^
hoch<.
die kleinere Anzahl*
multipliziert mit>.
die größere Anzahlquelle
>.*=^<.
für 7 Bytes=
und^
!05AB1E ,
98 Bytes-1 Byte dank @MagicOctopusUrn .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Verallgemeinerte Erklärung:
quelle
Ës0å~iZë0
war meins; Schön. Ich bin mir nicht sicher, ob du 9 Bytes weit übertreffen kannst.à®Ë®P_+*
wo_
es logischerweise äquivalent ist zu>Θ
_
verwandelt 0 in 1, alle anderen Werte in 0.== 0
Befehl gab, wusste aber_
nicht genau, was das bedeutet. Sollte auch in Zukunft für andere Herausforderungen nützlich sein. Bis. :)Javascript, 35 Bytes
quelle
05AB1E , 6 Bytes
Probieren Sie es online!
Port (ish) meiner Pyth-Antwort .
TIO-Kopf- / Fußzeile aus Emignas Antwort
quelle
Javascript ES6,
25222120 Bytes1413 Byte , Wenn die Argumente in sortierter Reihenfolge angegeben werdenquelle
Python 2 ,
3428 BytesProbieren Sie es online!
-6 danke an @Dennis
quelle
[0<i!=j>0]
spart ein paar Bytes.QBasic,
383635 BytesTeilweise inspiriert von Eriks
IF ... THEN ... ELSE
Antwort , hier ist eine rein mathematische Lösung.Wie bin ich hierher gekommen?
Wichtiger Hinweis zum Verständnis von Mathematik mit Bedingungen: In QBasic sind die Ergebnisse von Vergleichsoperatoren
0
und-1
, nicht0
und1
.Wir beginnen mit Eriks Code:
Mit anderen Worten, wenn
a
undb
beide ungleich Null sind, dann druckea*-(a=b)
(a
wenna=b
, sonst0
); sonst (mindestens eines vona
undb
ist Null), Ausgabea+b
(die Zahl ungleich Null oder0
wenn beide Null sind).Hier ist schon ein bisschen Mathe mit Bedingungen im Gange. Lassen Sie uns einen Schritt weiter gehen und sehen, ob wir die
IF
Aussage vollständig beseitigen können . Wir müssena*b>0
für die äußere Bedingung verwenden:a*b
Kann mehrere verschiedene Wahrheitswerte haben, was in Ordnung ist,IF
aber Probleme für die Mathematik verursacht.Dies ist der Standard - Trick von
IF
-Eliminierung. Wannc
ist wahr,c*a*(a=b)
ist-a*(a=b)
und(c+1)*(a+b)
ist0
; Wannc
ist falsch,c*a*(a=b)
ist0
und(c+1)*(a+b)
ista+b
. Dieser Ausdruck liefert also die gleichen Ergebnisse wie derIF ... THEN ... ELSE
. Das einzige Problem ist, dass unser Programm 40 Bytes anstatt 38 Bytes hat. Vielleicht können wir es verkürzen, indem wir die Mathematik neu ordnen.Noch 40 Bytes ...
Jetzt ist unser Programm wieder auf 38 Bytes. Da wir es jedoch nur
c
einmal verwenden, müssen wir es keiner Variablen mehr zuweisen:Jetzt haben wir nur noch 36 Bytes.
Aber warte, es gibt noch mehr ... Dieser
a+b+a*(a=b)
Ausdruck sieht ein bisschen überflüssig aus.a*(a=b)
ist-a
oba=b
und0
sonst. Wenn wir es hinzufügena
, erhalten wir0
oba=b
unda
anders. Vielleicht können wir dasselbe in weniger Bytes erreichen, indem wir die Bedingung umkehren.Das sieht auf den ersten Blick nicht kürzer aus. Aber wir können ein Byte sparen, indem wir subtrahieren, anstatt ein Negativ hinzuzufügen:
Und da haben wir unsere 35-Byte-Lösung.
quelle
Sauber ,
464342 BytesProbieren Sie es online!
Anonyme Komposition
:: [Int] -> Int
, sortiert das Paar und vergleicht dann das erste Mitglied.Es als komponiertes Lambda zu machen, hat die gleiche Länge:
quelle
Gelee ,
76 BytesProbieren Sie es online! oder Probieren Sie alle Kombinationen aus!
Wie?
Bei Verwendung der Methode in der APL-Antwort erhalten wir die gleiche Byteanzahl. Ein Byte länger als diese Antwort, da das niedrigste gemeinsame Vielfache zwei Bytes beträgt.
6 Bytes
Probieren Sie es online!
quelle
∧=⌊
und=*⌊
. Die zweite davon wird von Jelly=*⌊
das?⌊
es sich um ein Minimum handelt. Oder man könnte×
in beiden Sprachen verwenden