Цель:
Учитывая два натуральных числа (целые числа от 0 до бесконечности), выведите число, которое не является суммой этих чисел, но является натуральным числом.
Примеры решений (TI-Basic):
A+B+1
not(A+B)
Неверные решения:
A+B-1
(для входных данных0,0
возвращается-1
, что не является естественным)"ABC"
(ABC
это не число)
Заметки:
Выходные данные всегда должны быть суммой двух натуральных чисел (на самом деле это просто натуральное число)
-1
,undefined
,infinity
,NaN
И сообщения об ошибках не натуральные числа. Для наших целей0
это естественно (хотя не все математики согласны).
code-golf
number
arithmetic
Джулиан Лахниет
источник
источник
Ответы:
RProgN ,
431 байтЗачеркнуто 4 - это еще 4; (
Самое простое из решений, сравнивает, если A и B равны. Pushes true, который RProgN видит как 1, если они одинаковы, или false aka 0 в противном случае.
Тестовые случаи
Попробуйте онлайн!
источник
Сетчатка , 3 байта
Попробуйте онлайн!
(В первой строке перед новой строкой есть пробел. Stack Exchange не очень хорошо показывает конечные пробелы.)
Ввод - это десятичные числа, разделенные пробелом (например
12 34
). Эта программа просто меняет пространство на a1
, создавая число, слишком большое, чтобы быть суммой входных чисел (оно обязательно должно иметь по крайней мере на 2 цифры больше, чем любая из них, и добавление двух чисел приводит к выводу не более чем на 1 цифру больше больший вклад).источник
0 0
также должен работать.010
считается целым числом через практически все целочисленные парсеры. Я вижу потенциальный аргумент, который0 8
является недопустимым на основании того, что018
он считается недействительным восьмеричным через некоторые целочисленные парсеры (хотя другие считают его десятичным 18). Обратите внимание, что эта программа очень рада обрабатывать начальные нули на входе , обрабатывая их как десятичные; и я написал программы, которые выводят начальные нули для других вопросов, и люди не видят проблемы. Есть ли соответствующий мета-пост на эту тему?.
1
если вы не хотите возвращать ведущие нули самостоятельно.Python , 13 байт
Попробуйте онлайн! Принимает ввод как кортеж.
Использование метода объекта для этой функции позволяет избежать использования шаблона
lambda
.Здесь идея сопоставить
(0,0)
с1
и всем остальным0
. Поскольку только0+0
дает сумму0
среди натуральных чисел, это всегда позволяет избежать совпадения суммы.Если бы можно было вывести здесь логическое значение, которое я считаю теневым, байт можно сохранить как
Это проверяет, является ли входной кортеж не более
(0,0)
, что верно только для(0,0)
. В PythonTrue==1
иFalse==0
. Более того, вывод через код завершения и обработка его как Python Boolen позволит сэкономить два байта:Если разрешен строковый ввод-вывод и начальные нули в порядке, есть 8-байтовое решение
Это объединяет
a1b
, который всегда больше, чемa+b
.источник
int.__eq__
для 10 байтовMATL и соавт. 1 байт
Принимает два натуральных числа в качестве входных данных и сравнивает их. Если они равны, вывод равен,
1
а если они не равны, вывод равен0
. Это тот же подход, что и решение @ ATaco.MATL
Желе (автор @ ais523)
С накоплением (@ Конор О'Брайен)
APL (Dyalog APL) (автор @ Adám)
J (автор @ Adám)
На самом деле (от @Mego)
Неявный (@MD XF)
источник
=
Решение также работает в желе 1 байт. Я думал, что упомяну это в комментариях, так как не стоит создавать отдельный ответ для тривиального решения.Javascript, 10 байт
Принимает 2 числа, используя синтаксис карри, например:
источник
Vim, 3 байта / нажатия клавиш
Попробуйте онлайн!
Обратите внимание, что
<C-a>
на самом деле это ctrl-a , который представляет байт0x01
.Мне нравится, когда vim (который даже не является языком программирования) может конкурировать с языками игры в гольф. :) Вход приходит в следующем формате:
Это просто увеличивает первое число на единицу (это
<C-a>
часть), а затем соединяет строковые представления двух чисел вместе. Насколько я могу сказать, это никогда не должно привести к сумме.источник
Brain-Flak , 8 байт
Попробуйте онлайн!
Это самый читаемый ответ, который я когда-либо писал. :)
Объяснение:
Альтернативные решения (также 8 байтов):
Есть множество других решений, которые работают только с положительными числами:
источник
Желе , 2 байта
+ Добавляет два входа вместе, затем 'увеличивает ответ на единицу
Попробуйте онлайн!
источник
(a+b)+1
толькоa+(b+1)
потому , что диада монада цепьfG
рассматривается какf(a, G(b))
. В этом случае это то же самое, но технически, как это работает, иначе: PTI-Basic, 3 байта
Альтернативные решения:
Интересно, что вы сделали примеры вопросов в TI-Basic, но вы забыли более короткое
A=B
(или, может быть, мы должны были это выяснить?)источник
Prompt A,B:
к ним приносит количество байтов до восьми байтов каждый.Брахилог , 2 байта
Попробуйте онлайн!
объяснение
Это всегда приведет к
A+B+1
, еслиInput = [A, B]
.источник
Mathematica, 5 байтов
Выводит сумму двух аргументов плюс 1. Например,
1+##&[2,5]
возвращает8
.(Примечание:
Binomial
почти работает, хотяBinomial[1,0]=1
иBinomial[4,2]=6
являются контрпримерами; я думаю, что они единственные контрпримеры.)источник
Pochhammer
кажется, один лучше, чемBinomial
. Насколько я могу сказать, только1,0
терпит неудачу.KroneckerDelta
работает для всех входных данных (будучи эквивалентом проверки на равенство в некоторых из esolangs). Это на самом деле короче, чтобы переопределить какBoole[#==#2]&
, но я предполагаю, что вы искали встроенный, который работает как есть.PHP, 17 байт
Запустите так:
объяснение
Это просто объединяет аргументы. Первый аргумент (имя скрипта) содержит
-
. В результате получается отрицательное число, которое я отрицаю со знаком минус. Затем я добавляю 1, на случай, если первое введенное число -0
(0123 = 123).источник
Perl 6 , 4 байта
Лямбда (образованная Wh независимо-curry ), которая добавляет булеву инверсию (1 или 0) первого аргумента ко второму аргументу.
Попробуйте онлайн!
источник
Turtlèd , 12 байт
делает очень большие числа
Попробуйте онлайн!
Объяснение:
Таким образом, он выдает 10 ** (x + y).
источник
PHP, 19 байт
источник
Java (OpenJDK 9) , 10 байт
Попробуйте онлайн!
источник
a->b->a-~b
. Также работает с Java 8, любой редакцией (поэтому нет необходимости указывать OpenJDK 9)HODOR , 40 байт (не конкурирует)
Это, наверное, самая короткая программа, когда-либо написанная Ходором!
Это то, что происходит, когда вам нечего делать на двухнедельных школьных каникулах: создайте набор действительно легко закодированных шутливых языков, которые абсолютно ничего не делают. Yay для школьных каникул !!!
Walder
было оригинальное имя Ходора и поэтому необходимо, чтобы начать программу.Hodor?!
принимает число из STDIN или один символ и устанавливает аккумулятор на входHodor
добавить 1 к аккумуляторуHODOR!
выводит аккумулятор в виде числаHODOR!!!
убивает Ходора! Noooooo!Это псевдокод:
источник
SmileBASIC, 4 байта
нет (А) + В
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2
источник
2+1
?2+1=3 -> !2+1 -> 0+1=1
R 13 байт
Спасибо Джонатану Аллану за его вклад!
источник
00
же, как0
если бы, может бытьsep="1"
?scan()
должно быть хорошо, принимая входные данные вектора, как это . Но мы можем сделать один байт лучше сcat(sum(scan()+1))
. Может быть, есть короче?cat
полной программой, альтернативой была бы безымянная функция при той же стоимости в байтахfunction(a,b)a+b+1
05AB1E , 1 байт
Работает так же, как
RProgN
ответ.Проверяет, если
a
иb
одинаковы. Если так, распечатайте1
. В противном случае распечатайте0
Попробуйте онлайн!
источник
¢
(a.count (b)) также должен работать на 1 байт.C
262419 байтовБезголовая версия:
Надеюсь, я правильно понял спецификацию. Определенно можно сократить !?
@Pavel Спасибо за сохранение 2 байта
@Neil Спасибо за ваш вклад.
источник
()
вокруг!c+d
?return
, какreturn!c+d;
MATLAB / Octave, 3 байта
Принимает два входа и проверяет равенство и дает,
1
если они равны, и в0
противном случае.Демо онлайн
источник
@eq
? Это возвращает дескриптор функции, который может быть использован для оценки желаемой функции, в то время как простоeq
бессмысленно.@
превращает его в правильную языковую конструкцию. Но, может быть, я просто педантичен.брейкфук, 12 байт
Простое решение, которое выводит
A+B+1
.Попробуйте онлайн
источник
,>,[-<++>]<.
,>,[-<++>]<.
решениепостоянный ток , 5 байт
Попробуйте онлайн!
Ввод: два натуральных числа, разделенных пробелом на стандартном вводе.
Вывод: за цифрой 1 сразу же следует сумма двух чисел, которая больше, чем сумма двух чисел.
Пример:
Входные данные:
222 333
Выход:
1555
источник
PHP, 13 байт; (17 REPL-менее)
Примеры
Для тех, кто не использует REPL
и запустить с помощью
источник
Cubix,
98 байтовобъяснение
В развернутом виде этот ответ выглядит так:
Порядок выполнения инструкций
II~-O@
Протестировано для всех комбинаций входов, где оба находятся в диапазоне
0-100
.Попробуй это здесь .
источник
APL - 4 байта
Принимает массив, суммирует его элементы и добавляет один. Тест:
источник
√ å ı ¥ ® Ï Ø ¿ , 4 байта
Для вывода добавьте
o
в конец.источник
Гексагония , 7 байт
Попробуйте онлайн!
Или в более читаемом формате,
Это превосходит текущее решение Hexagony в 11 байтов.
Объяснение:
Если первое число не равно 0, программа выберет следующий путь:
Это читает первый номер и ветви справа. Затем он читает второе число, за которым следует перенос и попытка прочитать третье, но этого не существует, поэтому он читает 0. Это печатается, и программа завершается (обратите внимание, что если a> 0, так как b неотрицательный a + Ь> 0).
Если первое число равно 0, программа выбирает следующий путь:
Это читает первый номер и оставленные ветви. Он попадает в угол, беря маршрут по северо-западному краю, потому что число равно 0, и читает второе число. Он оборачивает, затем увеличивает второй номер и печатает.
Он отскакивает от
<
, снова печатая увеличенный второй ввод. Он увеличивает значение и снова принимает северо-восточный фронт, но на этот раз, потому что текущий фронт - неотрицательное значение, увеличенное вдвое, что определенно положительно. Затем он пытается получить третий вход, но вместо этого получает 0.Наконец, он переносится и отклоняется стрелкой, затем пытается прочитать четвертый ввод и снова получает 0. Он оборачивается и пытается прочитать пятый вход и получает 0 в последний раз. Это он печатает, и переносит
@
и выходит.Обратите внимание, что b * (10 ^ k + 1) * 10> 0 + b = b, где k - длина b в цифрах, так что это работает.
источник
Бильярд , 11 символов = 17 байтов
Реализует
x + y + 1
. Довольно элементарно. Он принимает входные данные в двух отдельных строках. (Кстати, язык был немного изменен после запроса, но только для того, чтобы подавить подсказку от ввода, не уверен, что этот ответ все еще действителен).7 символов = 11 байт, не конкурирующие
Это короче, но возможно только после нового обновления языка:
Это использует
x == y
, который был бесстыдно украден из решения RProgN @ ATaco [надеюсь, вы не возражаете (:). При$
выходе выводит, сколько шаров прошло над ним.источник
slightly after the language
опечатка, также я думаю, что, когда у языка была подсказка ввода, это все еще было бы допустимо. Я не думаю, что выходные стандарты