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>
Odpowiedzi:
Python 3 ,
2725 bajtówWypróbuj online!
źródło
Galaretka , 4 bajty
Wypróbuj online!
Jak to działa
źródło
APL (Dyalog) , 5 bajtów
Wypróbuj online!
Przydatne odniesienie
∧=⌊
: Zwraca,1
jeśli najniższa wspólna wielokrotność jest równa minimum. Jest to prawdą tylko wtedy, gdy jedna z wartości wynosi zero lub obie są równe. Alternatywnie mogłem=*⌊
⌈×
: Maksimum pomnożone przez powyższe.źródło
Język programowania Szekspira , 296 bajtów
Wypróbuj online!
Pierwszy udział w konkursie golfa, więc zacznijmy od jednego z moich ulubionych języków żartów!
Objaśnienie: Deklaracja dwóch zmiennych Ford i Ajax (dostępne najkrótsze nazwy zmiennych)
Pierwsza scena: Wstaw dwie wartości do zmiennej, następnie przetestuj je pod kątem równości, a następnie przetestuj Ajax względem 0. Jeśli wartość, którą musimy zwrócić, jest zapisana w zmiennej Ford, przejdź do sceny C.
Jeśli Ford ma wartość 0, wypisz Ajax, w przeciwnym razie ustaw Ajax na 0, a następnie wypisz Ajax. Następnie przejdź do końca programu.
Scena C: Wydrukuj Forda
Scena V: Koniec programu.
źródło
Ruby , 21 bajtów
Wypróbuj online!
Ponieważ Ruby
Krótkie wyjaśnienie:
a|b
jest bitwse LUB, więc daje nam odpowiednią liczbę, jeśli a == b lub jeden z nich jest równy zero.Magiczna liczba
531
to 2 ^ 9 + 2 ^ 4 + 2 ^ 1 + 2 ^ 0, a operator [] wyodrębnia jeden bit. Oznacza to: pomnóż przez 1, jeśli a * b wynosi 0, 1, 2, 4 lub 9, pomnóż w przeciwnym razie 0.źródło
Haskell , 25 bajtów
Wypróbuj online!
źródło
JavaScript (Node.js) , 17 bajtów, port jakoś z odpowiedzi Pythona
Wypróbuj online!
JavaScript (Node.js) , 21 bajtów
Wypróbuj online!
źródło
?0:
... Czy możesz||
, a może pierwszeństwo to psuje??0:
oznacza zwrot zero, jeśli cond nie jest równy zero,||
return non-zero, jeśli cond nie jest równyPyth ,
87 bajtówWypróbuj online!
Przypadek 1 - Obie wartości są niezerowe i równe
Przypadek 2 - Obie wartości są niezerowe i nierówne
Przypadek 3 - Dokładnie jedna wartość zero
Przypadek 4 - obie wartości zero
Alternatywne rozwiązanie, również 7 bajtów
Wypróbuj online
Poprzednia wersja, 8 bajtów
źródło
@{+0Q3
działa na 6 bajtów.Java 8, 20 bajtów
Curda Lambda. Skradziony stąd .
źródło
Stax , 8 bajtów
Uruchom i debuguj
Rozpakowane, niepolowane i skomentowane, wygląda to tak.
Uruchom ten
źródło
Brain-Flak , 32 bajty
Wypróbuj online!
źródło
(pierwsze zgłoszenie, więc proszę nie kopać zbyt mocno)
Python 2 ,
57 4443 bajtyWypróbuj online!
(nieco skompresowany po spojrzeniu na pierwszą odpowiedź pytona )
źródło
C (gcc), 25 bajtów
f(a,b){a=a^b&&a*b?0:a|b;}
pseudo kod:
źródło
C (gcc), 26 bajtów
Wypróbuj online!
Expanation / Ungolfed:
źródło
MATL , 9 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
t?td~*]X>
GNU sed, 23 bajty
(musi być uruchamiany z
-r
flagą)Wypróbuj online!
źródło
QBasic, 34 bajty
Odmienne podejście!
Zauważ, że niezerowe wartości w siatce wyjściowej są bitami
OR
dwóch liczb wejściowych. To jest po prostua OR b
w QBasic. Chcemy wyprowadzić tę wartość, kiedya*b=0 OR a=b
i gdzie0
indziej, co możemy zrobić, mnożąc przez minus powyższego warunku (ujemny, ponieważ prawda jest-1
w QBasic).źródło
pieprzenie mózgu, 25 bajtów
Dane wejściowe to dwie bajty (nie ascii)
źródło
Szybki , 118 bajtów
źródło
!=
i trójskładnikowy.n1
in2
do pojedynczych znaków, aby je skracać; usuń białe spacje i nawiasy oraz usuń niektóre spacje. Ponadto==0
może być<1
i!=0
może być>0
, ponieważ wiemy, że tylko dane wejściowe0,1,2,3
są możliwe. Nigdy wcześniej nie programowałem w Swift, ale zmniejszyłem go do 91 bajtów w ten sposób:func c(a:Int,b:Int){a==b ?print("\(a)"):a*b>0 ?print("0"):a<1 ?print("\(b)"):print("\(a)")}
Wypróbuj online.func c(a:Int,b:Int){print(a==b||a*b<1 ?max(a,b):0)}
Wypróbuj online. Ponownie witamy w PPCG i życzymy udanego pobytu!{$0==$1||1>$0*$1 ?max($0,$1):0}
Wypróbuj online!Partia,
38363530 bajtówPort odpowiedzi Pythona @ Dennisa, ponieważ warunki warunkowe są w Batch za drogie.
źródło
Brachylog , 10 bajtów
Wypróbuj online!
źródło
J ,
87 bajtów1 bajt zapisany przez H.PWiz.
Wypróbuj online!
Port AJ rozwiązania APL H.PWiz
=
czy liczby są równe? (wyniki w 1 lub 0)^
do potęgi<.
mniejsza liczba*
pomnożone przez>.
większa liczbaźródło
>.*=^<.
na 7 bajtów=
i^
!05AB1E ,
98 bajtów-1 bajt dzięki @MagicOctopusUrn .
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Ogólne wyjaśnienie:
źródło
Ës0å~iZë0
był mój; niezłe. Nie jestem pewien, czy uda ci się pokonać 9 bajtów.à®Ë®P_+*
gdzie_
jest logicznie równoważne z>Θ
_
zamienia 0 w 1, wszystkie inne wartości w 0.== 0
polecenie, ale nie wiedziałem_
, że robi to dokładnie. Powinien być przydatny również w przypadku innych wyzwań w przyszłości. TIL :)JavaScript, 35 bajtów
źródło
05AB1E , 6 bajtów
Wypróbuj online!
Port (ish) mojej odpowiedzi w języku Pyth .
Nagłówek / stopka TIO zaczerpnięte z odpowiedzi Emigny
źródło
JavaScript ES6,
25222120 bajtów1413 bajtów , jeśli argumenty podano w posortowanej kolejnościźródło
Python 2 ,
3428 bajtówWypróbuj online!
-6 dzięki dzięki @Dennis
źródło
[0<i!=j>0]
oszczędza kilka bajtów.QBasic,
383635 bajtówCzęściowo inspirowane przez Erika
IF ... THEN ... ELSE
odpowiedź , oto rozwiązanie tylko matematyka.Jak się tu dostałem
Ważna uwaga dla zrozumienia matematyki z warunkami: w QBasic wyniki operatorów porównania są,
0
a-1
nie0
i1
.Zaczynamy od kodu Erika:
Innymi słowy, jeśli
a
ib
oba są niezerowe, to wydrukuja*-(a=b)
(a
jeślia=b
inaczej0
); inny (przynajmniej jednaa
ib
wynosi zero), wyjściea+b
(liczba różna od zera, lub0
jeśli są równe zeru).Tutaj jest już trochę matematyki z warunkowymi. Zróbmy krok dalej i zobaczmy, czy możemy
IF
całkowicie wyeliminować to stwierdzenie. Będziemy musieli zastosowaća*b>0
warunek zewnętrzny:a*b
może mieć wiele różnych prawdziwych wartości, co jest w porządku,IF
ale powoduje problemy matematyczne.Jest to standardowy trik z
IF
-elimination. Kiedyc
jest prawdą,c*a*(a=b)
jest-a*(a=b)
i(c+1)*(a+b)
jest0
; kiedyc
jest fałszywe,c*a*(a=b)
jest0
i(c+1)*(a+b)
jesta+b
. To wyrażenie daje takie same wyniki jakIF ... THEN ... ELSE
. Jedynym problemem jest to, że nasz program ma 40 bajtów zamiast 38. Być może możemy go skrócić, zmieniając układ matematyki.Nadal 40 bajtów ...
Teraz nasz program powrócił do 38 bajtów. Ale ponieważ używamy tylko
c
raz, nie musimy już przypisywać jej do zmiennej:Teraz mamy do 36 bajtów.
Ale poczekaj, jest więcej ... To
a+b+a*(a=b)
wyrażenie wygląda na zbędne.a*(a=b)
jest-a
jeślia=b
i0
inaczej. Kiedy go dodamya
, otrzymamy,0
czya=b
ia
inaczej. Może uda nam się osiągnąć to samo w mniejszej liczbie bajtów, odwracając warunek.Na początku nie wygląda to krócej. Ale możemy zapisać bajt, odejmując zamiast dodawać wartość ujemną:
I oto nasze 35-bajtowe rozwiązanie.
źródło
Czysty ,
464342 bajtówWypróbuj online!
Anonimowa kompozycja
:: [Int] -> Int
, sortuje parę, a następnie dopasowuje pierwszego członka.Wykonanie go jako złożonej lambdy ma tę samą długość:
źródło
Galaretka ,
76 bajtówWypróbuj online! lub Wypróbuj wszystkie kombinacje!
W jaki sposób?
Stosując metodę z odpowiedzi APL , otrzymujemy taką samą liczbę bajtów. Jeden bajt dłuższy niż ta odpowiedź, ponieważ najniższa wspólna wielokrotność to dwa bajty.
6 bajtów
Wypróbuj online!
źródło
∧=⌊
i=*⌊
. Drugi z nich jest preferowany przez Jelly=*⌊
zrobić?⌊
jest to minimum. Lub można użyć×
w obu językach