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>
Ответы:
Python 3 ,
2725 байтПопробуйте онлайн!
источник
Желе , 4 байта
Попробуйте онлайн!
Как это работает
источник
APL (Dyalog) , 5 байтов
Попробуйте онлайн!
Полезная ссылка
∧=⌊
: Возвращает,1
если минимальное общее кратное равно минимальному. Это верно только в том случае, если одно из значений равно нулю или оба равны. В качестве альтернативы я мог бы иметь=*⌊
⌈×
: Максимум, умноженный на вышеуказанное.источник
Язык программирования Шекспира , 296 байт
Попробуйте онлайн!
Первое участие в соревнованиях по коду, поэтому давайте начнем с одного из моих любимых языков шутки!
Объяснение: Объявление двух переменных Ford и Ajax (доступны самые короткие имена переменных)
Первая сцена: поместите два значения в переменную, затем проверьте их на равенство, затем проверьте Ajax против 0. Если значение, которое мы должны вернуть, хранится в переменной Ford, перейдите к сцене C.
Если Ford равен 0, выведите Ajax, иначе установите Ajax на 0, а затем Ajax. Затем перейдите к концу программы.
Сцена C: Печать Форд
Сцена V: Конец программы.
источник
Рубин , 21 байт
Попробуйте онлайн!
Потому что рубин
Краткое объяснение:
a|b
является bitwse ИЛИ, поэтому дает правильное число, если a == b или один из них равен нулю.Магическое число
531
равно 2 ^ 9 + 2 ^ 4 + 2 ^ 1 + 2 ^ 0, и оператор [] извлекает один бит. Это означает: умножить на 1, если a * b равно 0, 1, 2, 4 или 9, умножить на 0 в противном случае.источник
Haskell , 25 байт
Попробуйте онлайн!
источник
JavaScript (Node.js) , 17 байт, порт как-то из ответа Python
Попробуйте онлайн!
JavaScript (Node.js) , 21 байт
Попробуйте онлайн!
источник
?0:
... Не могли бы вы сделать||
, или старшинство испортило это??0:
среднее значение возвращает ноль, если cond не равно нулю,||
возвращает ненулевое значение, если cond не равно нулюPyth ,
87 байтовПопробуйте онлайн!
Случай 1 - Оба значения ненулевые и равные
Случай 2 - оба значения ненулевые и неравные
Случай 3 - ровно одно значение ноль
Случай 4 - оба значения ноль
Альтернативное решение, также 7 байтов
Попробуйте онлайн
Предыдущая версия, 8 байт
источник
@{+0Q3
работает на 6 байтов.Java 8, 20 байт
Карри лямбда. Украдена отсюда .
источник
Stax , 8 байт
Запустите и отладьте его
Распакованный, размазанный и прокомментированный, это выглядит так.
Запустите этот
источник
Brain-Flak , 32 байта
Попробуйте онлайн!
источник
(первое представление, поэтому, пожалуйста, не пинайте слишком сильно)
Python 2 ,
57 4443 байтаПопробуйте онлайн!
(немного сжал после просмотра первого ответа Python )
источник
C (gcc), 25 байтов
f(a,b){a=a^b&&a*b?0:a|b;}
псевдокод:
источник
C (gcc), 26 байтов
Попробуйте онлайн!
Расширение / Ungolfed:
источник
MATL , 9 байт
Попробуйте онлайн!
Объяснение:
источник
t?td~*]X>
GNU sed, 23 байта
(должен быть запущен с
-r
флагом)Попробуйте онлайн!
источник
QBasic, 34 байта
Другой подход!
Обратите внимание, что ненулевые значения в выходной сетке все побитовые
OR
из двух входных чисел. Это толькоa OR b
в QBasic. Мы хотим вывести это значение, когдаa*b=0 OR a=b
и в0
противном случае, что мы можем сделать, умножив на отрицательное значение вышеупомянутого условного (отрицательное, так как истина-1
в QBasic).источник
мозговой трах, 25 байтов
Ввод двухбайтовых значений (не ascii)
источник
Swift , 118 байт
источник
!=
и троичный.n1
иn2
на одиночные символы, чтобы сократить их; удалить некоторые пробелы и скобки, а также удалить некоторые пробелы. Кроме того,==0
может быть<1
и!=0
может быть>0
, поскольку мы знаем, что0,1,2,3
возможны только входные данные. Никогда еще не программировал в Swift, но я сократил его до 91 байта вот так:func c(a:Int,b:Int){a==b ?print("\(a)"):a*b>0 ?print("0"):a<1 ?print("\(b)"):print("\(a)")}
Попробуйте онлайн.func c(a:Int,b:Int){print(a==b||a*b<1 ?max(a,b):0)}
Попробуйте онлайн. Еще раз добро пожаловать в PPCG и приятного пребывания!{$0==$1||1>$0*$1 ?max($0,$1):0}
попробуйте онлайн!Пакет,
38363530 байтПорт @ Python ответ Денниса, так как условия слишком дорого в пакетном режиме.
источник
Брахилог , 10 байт
Попробуйте онлайн!
источник
J ,
87 байтов1 байт, сохраненный H.PWiz.
Попробуйте онлайн!
AJ порт решения APL от H.PWiz
=
числа равны? (результаты в 1 или 0)^
в силу<.
меньшее число*
умножается на>.
большее числоисточник
>.*=^<.
на 7 байт=
и^
!05AB1E ,
98 байт-1 байт благодаря @MagicOctopusUrn .
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Обобщенное объяснение:
источник
Ës0å~iZë0
был мой; хороший. Не совсем уверен, что вы можете побить 9 байтов на много.à®Ë®P_+*
где_
логически эквивалентно>Θ
_
превращает 0 в 1, все остальные значения в 0.== 0
команда, не знал,_
делает ли это точно. Должно быть полезно и для других задач в будущем. TIL. :)Javascript, 35 байт
источник
05AB1E , 6 байтов
Попробуйте онлайн!
Порт (ish) моего Pyth ответа .
Верхний и нижний колонтитулы TIO взяты из ответа Emigna
источник
Javascript ES6,
25222120 байт1413 байт , если аргументы предоставлены в отсортированном порядкеисточник
Python 2 ,
3428 байтПопробуйте онлайн!
-6 с благодарностью @Dennis
источник
[0<i!=j>0]
сохраняет несколько байтов.QBasic,
383635 байтЧастично вдохновленный Эриком
IF ... THEN ... ELSE
ответом , вот математическое решение.Как я сюда попал
Важное примечание для понимания математики с условными выражениями: в QBasic результаты операторов сравнения есть
0
и-1
, а не0
и1
.Начнем с кода Эрика:
Другими словами, если
a
иb
оба ненулевые, то напечатайтеa*-(a=b)
(a
еслиa=b
, иначе0
); иначе (хотя бы один изa
иb
равен нулю), выводa+b
(ненулевое число, или0
если они оба равны нулю).Здесь уже есть некоторая математика с условными выражениями. Давайте сделаем еще один шаг и посмотрим, сможем ли мы
IF
полностью исключить это утверждение. Придется использоватьa*b>0
для внешнего условия:a*b
может иметь несколько разных истинных значений, что хорошо,IF
но создает проблемы для математики.Это стандартный трюк -
IF
устранения. Когдаc
это правда,c*a*(a=b)
есть-a*(a=b)
и(c+1)*(a+b)
есть0
; когдаc
ложно,c*a*(a=b)
есть0
и(c+1)*(a+b)
естьa+b
. Так что это выражение дает те же результаты, что иIF ... THEN ... ELSE
. Единственная проблема в том, что она делает нашу программу 40 байтов вместо 38. Может быть, мы можем сократить ее, переставив математику.Еще 40 байт ...
Теперь наша программа вернулась к 38 байтам. Но поскольку мы используем только
c
один раз, нам больше не нужно присваивать его переменной:Теперь мы до 36 байтов.
Но подождите, это еще не все ... Это
a+b+a*(a=b)
выражение выглядит немного излишним.a*(a=b)
это-a
еслиa=b
и0
иначе. Когда мы добавляем это кa
, мы получаем,0
еслиa=b
иa
иначе. Может быть, мы можем достичь того же самого за меньшее количество байтов, изменив условие.Сначала это не выглядит короче. Но мы можем сохранить байт, вычтя вместо добавления отрицательный:
И там у нас есть 35-байтовое решение.
источник
Чисто ,
464342 байтаПопробуйте онлайн!
Анонимная композиция
:: [Int] -> Int
, сортирует пару, а затем сопоставляет первый член.Делать это как составную лямбду одинаковой длины:
источник
Желе ,
76 байтПопробуйте онлайн! или попробуйте все комбинации!
Как?
Используя метод в ответе APL , мы получаем одинаковое количество байтов. На один байт длиннее этого ответа, поскольку наименьшее общее кратное составляет два байта.
6 байт
Попробуйте онлайн!
источник
∧=⌊
и=*⌊
. Второй из которых предпочитает Желе=*⌊
?⌊
это минимум. Или можно использовать×
на обоих языках