Напишите кратчайший возможный код, который вернет истину, если два заданных целочисленных значения равны или их сумма или абсолютная разница равна 5.
Пример тестовых случаев:
4 1 => True
10 10 => True
1 3 => False
6 2 => False
1 6 => True
-256 -251 => True
6 1 => True
-5 5 => False
Самое короткое, что я мог придумать в python2, это 56 символов:
x=input();y=input();print all([x-y,x+y-5,abs(x-y)-5])<1
-9, спасибо @ElPedro. Требуется ввод в формате x, y:
x,y=input();print all([x-y,x+y-5,abs(x-y)-5])<1
code-golf
decision-problem
Викрант Бисвас
источник
источник
Ответы:
Python 2 , 30 байт
Попробуйте онлайн!
Один байт сохранен Арно
Три байта, сохраненные алефальфой
источник
JavaScript (ES6), 28 байт
Принимает вход как0 или 1 .
(a)(b)
. ВозвращаетПопробуйте онлайн!
источник
Дьялог АПЛ , 9 байт
Попробуйте онлайн!
Изложены:
источник
машинный код x86, 39 байт
сборочный
Попробуйте онлайн!
источник
J ,
1211 байт1 байт сохранен благодаря Адаму
Попробуйте онлайн!
объяснение
Это эквивалентно:
Это можно разделить на следующую цепочку вил:
Или визуализируется с использованием
5!:4<'f'
:Аннотированный:
источник
e.
e.
был=+.5 e.|@-,+
. Может быть, вы забыли5e.
это неверный токен в J?+
вместо+.
R , 40 байт (или 34)
Попробуйте онлайн!
Для не-пользователей R:
-1:1*5
расширяется до[-5, 0, 5]
%in%
оператор принимает элементы из левого и проверки (поэлементно) , если они существуют в векторе на правеПрямой порт решения @ ArBo имеет
3534 байта, поэтому, если вам это нравится, попробуйте ответить на этот вопрос:источник
function(x,y)x%in%c(y--1:1*5,5-y)
function(x,y)(x-y)%in%(-1:1*5)
и еще больше до 24 байтов, опустив нотацию функции дляscan()
ввода:diff(scan())%in%(-1:1*5)
Попробуйте онлайн! , Тем не менее, все тот же метод.pryr::f
, которое работает в обоих случаях. Может ли он должным образом определить аргументы, что-то не так или нет, но, похоже, эти две функции пригвоздят. Например,pryr::f(x%in%c(y--1:1*5,5-y))
попробуйте онлайн! , Получает вас до 36 и 29 байтов соответственно.Python 2 ,
2931 байтПопробуйте онлайн!
Поскольку мне не удавалось внимательно прочитать задание в первый раз, чтобы его решить, мне пришлось придумать совершенно другой подход, который, к сожалению, не такой лаконичный.
источник
Машинный код 8086,
2220 байтовUngolfed:
Введите числа в AX и BX и возвращает нулевой флаг (ZF = 1), если результат равен true. При желании вы также можете определить, какое условие было истинным, с помощью следующего:
Если разница между числами равна 0, мы знаем, что они равны. В противном случае, если результат отрицательный, то сначала отрицайте его, а затем проверьте на 5. Если все еще не истина, то добавьте и проверьте на 5.
Пример тестовой программы для ПК DOS. Загрузите его здесь ( ESD.COM ).
Вывод тестовой программы:
источник
Желе , 7 байт
Попробуйте онлайн!
Как это работает
источник
Python 2, 38 байт
-2 байта благодаря @DjMcMayhem
Попробуйте онлайн!
источник
5
s иor
sJava (JDK) , 30 байт
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 22 байта
Принимает вход как
[a][b]
.Попробуйте онлайн!
источник
PowerShell ,
484440 байтПопробуйте онлайн!или проверить все тестовые случаи
Принимает участие
$a
и$b
. Проверяет,$b
является-in
ли группа ($a-5
,5-$a
5+$a
или$a
), которая проверяет все возможные комбинации$a
,$b
и5
.-4 байта благодаря маззи.
-4 байта благодаря KGlasier.
источник
($a-$b)
это-$x
:)5
и$b
вокруг вы можете отрезать пару байтов (то естьparam($a,$b)$b-in($a-5),(5-$a),($a+5),$a
) Попробуйте здесь$a+5
чтобы5+$a
заставить его правильно разыгрываться при вводе данных из командной строки, но в остальном это здорово. Благодарность!Паскаль (FPC) ,
2670 байтРедактировать: + входные переменные.
Попробуйте онлайн!
Попробуйте онлайн!
Я надеюсь, что мой ответ соответствует всем правилам code-golf. В любом случае это было весело.
источник
C # (.NET Core) ,
43,48,47, 33 байтаРЕДАКТИРОВАТЬ: пытался использовать% и, видимо, забыл, как%. Спасибо Арно за то, что указал на это!
РЕДАКТИРОВАТЬ 2: AdmBorkBork с -1-байтовым полем для гольфа переставляет скобки, чтобы сидеть рядом с возвратом, так что дополнительное пространство не требуется!
РЕДАКТИРОВАТЬ 3: Спасибо Дане за -14 байт-гольф за однострочное возвращение ярлыка и карри функции (Ty Embodiment of Ignorance для связи с TIO).
C # (.NET Core) , 33 байта
Попробуйте онлайн!
источник
C (gcc) , 33 байта
Попробуйте онлайн!
Пробовал подход, я не видел, чтобы кто-то еще пытался использовать. Возвращаемое выражение эквивалентно
a+b==5||((-6<a-b||a-b<6)&&(a-b)%5==0)
.источник
Скала, 43 байта
Попробуйте онлайн!
источник
||
до|
? Я знаю, что это возможно в Java, C #, Python или JavaScript, но не уверен насчет Scala.Perl 6 , 24 байта
-1 байт благодаря Грими
Попробуйте онлайн!
Это использует Any Junction, но технически, также
^
может работать.Объяснение:
источник
{$^a-$^b==5|0|-5|5-2*$b}
C (gcc) ,
4134 байтаПопробуйте онлайн!
источник
f
возвращаетсяa
? Просто какое-то неопределенное поведение?05AB1E ,
1312 байтПопробуйте онлайн!
Принимает ввод как список целых чисел, сохраняя один байт. Спасибо @ Вислав!
Альтернативный 12-байтовый ответ
Попробуйте онлайн!
Этот ввод в отдельных строках.
источник
|
?OI`αª5¢IË~Ā
. Ввод представляет собой список целых чисел.OIÆÄ)5QIËM
это 10.05AB1E , 10 байтов
Попробуйте онлайн!
Попытка сделать это с использованием операций только стека, но это было дольше.
источник
0
такая, как для[5, -5]
OIÆÄ‚5QIËM
), подходит для[5,-5]
.OsÆÄ‚5åsË~
. Кажется, почти идентично твоему.Попробуйте онлайн!Рубин , 34 байта
Онлайн Eval - Спасибо @ ASCII-Only
источник
.nil?
проверки, чтобы выдать вывод в требуемом формате.->(a,b){[a+5,a-5,5-a,a].index(b).nil?}
, это длиннее, чем текущий.Tcl , 53 байта
Попробуйте онлайн!
источник
Джапт ,
1413 байтПопробуйте онлайн!
источник
Пакет, 81 байт
Принимает ввод в качестве аргументов командной строки и выводит 1 при успехе, ничего при сбое. Пакет не может легко сделать дизъюнкции, поэтому я использую законы Де Моргана, чтобы превратить его в соединение.
источник
Древесный уголь , 18 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Порт решения @ ArBo's Python 2.
источник
Japt,
1312 байтПопробуйте или запустите все тесты
источник
[-5,5]
(должно быть фальшиво)Common Lisp, 48 байт
источник
Брахилог , 8 байт
Вводит в виде списка из двух чисел (используйте
_
для негативов). Попробуйте онлайн!объяснение
Практически прямой перевод спецификации:
источник
Сетчатка 0.8.2 , 82 байта
Попробуйте онлайн!Ссылка включает в себя тестовые случаи. Пояснение: первые две строки преобразуют входные данные в унарные. Последняя строка затем проверяет наличие любого из разрешенных совпадений:
Повернув последний столбец, мы получим:
источник