Учитывая два целых числа, A и B, выведите A, если AB (A минус B) находится в AB (от A до B), в противном случае выведите B.
«Минус В» является стандартным вычитанием.
«A - B» - это диапазон целых чисел, начинающийся с A и заканчивающийся на B, включая A и B. Например:
1 to 4: 1, 2, 3, 4
-2 to 5: -2, -1, 0, 1, 2, 3, 4, 5
3 to -1: 3, 2, 1, 0, -1
7 to 7: 7
Самый короткий код в байтах побеждает.
Тестовые случаи
A B Output
1 4 4
-2 5 5
3 -1 -1
7 7 7
90 30 90
90 -30 -30
-90 30 30
-90 -30 -90
-2 -2 -2
-2 -1 -2
-2 0 -2
-2 1 1
-2 2 2
-1 -2 -2
-1 -1 -1
-1 0 -1
-1 1 1
-1 2 2
0 -2 -2
0 -1 -1
0 0 0
0 1 1
0 2 2
1 -2 -2
1 -1 -1
1 0 1
1 1 1
1 2 2
2 -2 -2
2 -1 -1
2 0 2
2 1 2
2 2 2
источник
PHP, 58 байт
источник
$b
Задание не нуждается в круглых скобках.JavaScript (ES6), 24 байта
Контрольные примеры
источник
Python 2, 37 байт
Вызывать как
f(B, A)
.источник
Python2,
555251 байтПопробуйте онлайн!
Обрабатывает каждый контрольный пример, о котором упоминал OP (на момент публикации), как рекомендует TIO.
источник
JavaScript ES6,
4037 байтРазъяснение:
Сохранено 3 байта благодаря Арно.
источник
Mathematica, 16 байтов
Чистая функция, принимающая два аргумента в противоположном порядке как OP (например,
If[2#^2>1##,##]&[B,A]
). Порт ответа xnor на Python .источник
R,
493028 байтИспользует логику @ xnor для определения, находится ли ab в a: b.
источник
pryr::f(match(a-b,a:b,b))
Clojure,
7141 байт-30 байт с использованием
<=
иmin
/max
вместоrange
s.Проверяет,
(a - b)
находится ли значение в диапазоне отa
доb
, соответственно отправляя возврат.источник
PHP (7.1), 55 байт
использует новый синтаксис деструктуризации массива:
Запустите с
-r
, укажите числа в качестве аргументов командной строки.источник
PowerShell ,
373532 байтаПопробуйте онлайн!
Дословный перевод задачи в PowerShell с помощью
-notin
оператора. Сохранено три байта с использованием множественного назначения и инкапсуляции. Это работает, потому что-
имеет более высокий приоритет оператора, чем-notin
, и( )
часть кода выполняется в первую очередь и возвращается в виде массива@($a,$b)
. Однако, поскольку это$a,$b
скорее, чем$b,$a
нам, мы должны использовать,-notin
чтобы перевернуть / провалить результат вывода.источник
Пакет, 107 байт
источник
Pyth - 9 байт
Надеюсь использовать более неявный ввод ... :(
Попробуйте это онлайн здесь .
источник
Рёда , 30 байт
Попробуйте онлайн!
Он использует формулу, использованную в ответе xnor.
Другое решение (37 байт):
Попробуйте онлайн!
источник
> <> , 21 байт
Использует трюк @ xnor . Мы используем
-v B A
для предварительного заполнения стека. (-v A B
+1 байт).Попробуйте онлайн!
объяснение
источник
Рубин ,
2722 байтаПопробуйте онлайн!
Здесь нет ничего инновационного. Простая математика за этим:
можно записать как
то есть: если A-2B имеет тот же знак, что и B, мы находимся в диапазоне.
источник
SpecBAS - 38 байт
IIF
это inline-IF-THEN-ELSE, чтобы вывести правильное значение.источник
Haskell, 21 байт
Попробуйте онлайн!
Удобочитаемый
объяснение
Использует формулу @ xnor, чтобы проверить, находится ли ab в диапазоне. Ничего особенного кроме этого.
источник
Haskell, 58 байт
Совсем недавно я снова влюбился в стрелки. К сожалению, они требуют, чтобы мы работали с кортежами вместо бинарных функций. И, конечно же, Haskell не имеет симметричной
range
функции.источник
PHP 7 - 45 байт
источник
Октава, 55 байтов
Это может быть оптимизировано в дальнейшем. Я добавлю объяснение позже.
источник
Ним, 60 байт
Попробуйте онлайн!
Довольно стандартный, насколько ответы идут, никаких больших уловок в этом.
источник
Свифт -
383022 байтаСохранено 8 байтов благодаря @Matt
Попробуйте это в IBM Swift Sandbox онлайн!
Или 21 байт:
(благодаря формуле @xnor ) и сэкономили 8 байтов благодаря @Matt
Свифт - не лучший язык для игры в гольф (он очень жесткий), поэтому, если вы увидите любую другую возможность для игры в гольф, я полностью отредактирую ответ.
источник
Java 7,
846058 байтJava 8, 37 байт
Объяснение:
Тестовый код: попробуйте здесь.
источник
Ti-Basic (TI-84 Plus CE),
26 2423 байтаTI-Basic - это токенизированный язык; все используемые токены являются однобайтовыми токенами .
Prompt
предложит вам два номера.A-B≥A and A-B≤B
проверяет, находится ли AB между A и B (включительно); это возвращает 1, если истина и ноль, если ложь, которая сохраняется вAns
.Так как мы возвращаем A, если AB находится между A и B, мы умножаем A на Ans, который будет A, если мы должны вернуть A, и 0 в противном случае.
Далее мы добавим
Bnot(Ans
к этому. Если Ans было 1 (правдиво), мы получаемnot(
его и получаем 0, таким образом, наша сумма равна A. Если Ans было 0 (ложно), мыnot(
получаем 1, который мы умножаем на B и добавляем к 0, чтобы получить B.Последняя оценка в TI-Basic возвращается неявно.
-2 байта благодаря Скотту Милнеру
источник
Y
и просто используяAns
в четвертой строке.Пыть , 32 байта
Принимает A и B из стандартного ввода в качестве двух отдельных входов
Объяснение:
AABB -> ABBA -> ABAB -> ABABB -> ABBBA -> ABBBAA -> ABAABB -> ABABBA -> ABABC -> ABCBA -> ABCAB -> ABCAB -> ABC [A, ..., B] -> ABD -> ABDD - > ADDB -> ADBD -> AD {B * (1-D)} -> {B * (1-D)} AD -> {B * (1-D)} + {A * D}
где: C = BA и D = C∈ [A, ..., B] (1, если истина, 0, если ложь)
источник
Ом , 10 байт (CP437)
Вероятно, есть более удачный способ сделать это, но строго типизированная природа Ruby делает это трудным.
источник
Perl 6 ,
31 2924 байтаПопытайся
Попытайся
Попытайся
источник