Согласно этому комиксу XKCD , существует формула, определяющая, является ли разница в возрасте в отношениях «жуткой». Эта формула определяется как:
(Age/2) + 7
минимальный возраст людей, с которыми вы можете встречаться.
Поэтому отношения являются жуткими, если один из людей в этих отношениях моложе минимального возраста другого.
Принимая во внимание возраст двух человек, можете ли вы сказать, являются ли эти отношения жуткими или нет?
правила
Ваша программа должна принимать в качестве входных данных два целых числа - возраст обоих людей в отношениях. Они могут быть приняты в любом разумном формате.
Ваша программа должна затем вывести истинное или ложное значение, описывающее, является ли отношение "жутким" (Truthy = Creepy).
- Стандартные лазейки не допускаются.
- Эта головоломка - Code Golf, поэтому выигрывает ответ с самым коротким исходным кодом в байтах
Тестовые случаи
40, 40 - Not Creepy
18, 21 - Not Creepy
80, 32 - Creepy
15, 50 - Creepy
47, 10000 - Creepy
37, 38 - Not Creepy
22, 18 - Not Creepy
age/2
быть округлено? Наверное, если точная половина должна быть минимальной?17,21
сделал бы хороший контрольный пример.13, 13 - Creepy
.Ответы:
Желе , 6 байт
Попробуйте онлайн!
По-видимому, другой алгоритм, чем у товарища.
источник
Python 3 , 26 байт
Попробуйте онлайн!
Вход представляет собой список с обоими возрастами
источник
05AB1E ,
86 байтПопробуйте онлайн! или попробуй все проверить
источник
2
не правдива, посмотри на это .NAND ворота, 551
Создано с Logisim
Тот же принцип, что и в моем другом ответе , но он принимает 2-байтовые подписанные входные данные, поэтому он может справиться
47, 10000
. Работает для всех тестовых случаев!Это не оптимально для данных тестовых случаев, поскольку 10000 можно выразить только 15 из 16 битов, но оно работает для любого возраста в диапазоне [-32768, 32768). Обратите внимание, что любой отрицательный возраст вернется
1
.Входы слева (без определенного порядка, 1-битный сверху). Вывод в правом нижнем углу.
источник
NAND ворота,
274262Оригинал:
Лучше: Создано с Logisim
Это принимает два входа слева как 1-байтовые целые числа со знаком, с 1-битным сверху. Выход в левом нижнем углу; правда и ложь здесь должны быть очевидны.
Работает для всех тестовых случаев, кроме
47, 10000
, так что я думаю, что это технически неверный ответ. Однако самый старый человек в (надежной) записи был 122, поэтому 8 бит (максимум 127) будут работать для любого сценария, когда-либо возможного до этого момента. Я опубликую новый ответ (или я должен отредактировать этот?), Когда я закончу 16-битную версию.16-битная версия готова!
Вы заметите некоторые вертикальные участки цепи. Первый (слева) определяет, какой вход больше. Следующие два - мультиплексоры, сортирующие входы. Затем я добавляю
11111001
(-7) к меньшему в четвертом разделе, и в заключение я сравниваю это вдвое с большим значением. Если оно меньше, отношения жуткие. Поскольку я сдвигаю биты вдвое, я должен учитывать неиспользованный битlesser-7
. Если это1
, тоlesser-7
отрицательный, и младший из двух не старше шести. Жутко. Я заканчиваю с логическим элементом ИЛИ, так что если какой-либо тест на ползучесть возвращается1
, вся схема делает.Если вы посмотрите внимательно, вы увидите, что я использовал
семьодин константаs(жесткое кодирование11111011
и трейлинг0
). Я сделал это, потому что Logisim требует, чтобы по крайней мере одно значение входило в логический вентиль, чтобы произвести вывод. Однако каждый раз, когда используется константа, два вентиля NAND обеспечивают1
значение независимо от константы.-12 ворот благодаря мне !
источник
C #, 22 байта
источник
C, 29 байт
Как это устроено:
#define f(a,b)
определяет макро-функцию,f
которая принимает два нетипизированных аргумента.a/2+7>b
проверяет, больше ли первый возраст, деленный на два плюс семь, чем второй возраст.b/2+7>a
проверяет, больше ли второй возраст, деленный на два плюс семь, чем первый возраст.Попробуйте онлайн!
источник
>b
нет<b
age >= min
, нужно ли вам также И вместо ИЛИ, поскольку обе стороны должны удовлетворить, чтобы не быть жутким, контрольный пример «47, 10000 - Жуткий»JavaScript (ES6), 21 байт
Возвращает 0 для не жутких, 1 для жутких.
источник
a=>b=>
вместо(a,b)=>
вызова сf(40)(40)
.R ,
2625 байт-1 байт благодаря @djhurio
Попробуйте онлайн!
источник
Сетчатка , 20 байт
Попробуйте онлайн!
Ввод одинарный с переводом строки между двумя числами. Вывод
0
(не жуткий) или1
(жуткий).объяснение
Отсортируйте два числа, чтобы мы знали, что большее число является вторым.
Назовите меньший возраст
a
и больший возрастb
. Мы сначала захватитьa-7
в группе1
. Тогда мы стараемся соответствовать2*(a-7)+1
вb
, что означаетb >= 2*(a-7)+1
илиb >= 2*(a-7)
илиb/2+7 > a
что является критерием для жутких отношений.источник
TI-Basic,
20109 байт-10 байт, используя список и часть предложения Timtech
-1 байт, используя предложение lirtosiast
Принимает в список двух возрастов, "{40,42}: prgmNAME"
Возвращает 1 для «creepy» и 0 для «not creepy».
источник
<
<=
=
!=
>=
>
)?GNU APL 1.2, 23 байта
Определяет функцию, которая принимает два аргумента и печатает 1, если страшно, 0, если нет.
объяснение
∇
начинается и заканчивается функцияA f B
- заголовок функции; Функция имеет имяf
и принимает два аргумента,A
аB
(функции в APL могут быть монадическими - с одним аргументом - или диадическими - с двумя аргументами)A⌊B
- этоmin(A,B)
иA⌈B
являетсяmax(A,B)
APL, вычисляемым справа налево, поэтому скобки необходимы для обеспечения надлежащего приоритета
Другие операторы говорят сами за себя.
Код может быть в гольфе, я все еще новичок в код-гольфе.
источник
f X
затем(⌊/X)<7+.5×⌈/X
. IIRC вы можете удалить новую строку между второй и третьей строкой.Python 3,
7445 байтПервый код Гольф, наверное, ужасен.
29 байтовое уменьшение @Phoenix
источник
lambda a,b:0 if(a/2)+7>b or(b/2)+7>a else 1
должно работать и короче на много.lambda a,b:a/2+7>b or b/2+7>a
, Откажись от бремени этих надоедливых парней1
и0
прими силуTrue
/False
!JavaScript (ES6), 27 байт
Нет карри (звоните как
f(a,b)
вместоf(a)(b)
)Если
b > a
, поменяйте местами параметры и повторите попытку. В противном случае проверьте. Карринг не сохраняет никаких байтов из-за рекурсивного вызова.источник
Java, 21 байт
Абсолютно не оригинально.
тестирование
Попробуйте онлайн!
источник
Python 3, 31 байт
lambda a,b:abs(a-b)>min(a,b)-14
Не намного короче, чем другие представления Python, но я нашел немного другой способ проверки на жуткость. Я заметил, что допустимая разница между возрастами равна min - 14. Это следует из алгебраической перестановки формулы.
Это позволило мне решить без необходимости использования двух констант, а также без необходимости использовать max и min вместо использования abs (ab). С точки зрения игры в гольф я получил всего на один байт меньше, чем решение @ nocturama, но я использовал немного другую формулу, чтобы сделать это.
источник
abs(37 - 53) > min(37, 53) - 14 = abs(-16) > 37 - 14 = 16 > 23 = False
Это правильный ответ, потому что согласно (x / 2) + 7 минимальный возраст для 53 лет53/2 + 7 = 26.5 + 7 = 33.5
Excel,
2624 байтаФормула ячейки, которая принимает входные данные в виде чисел из диапазона ячеек
A1:B1
и выводит логическое значение, представляющее ползучесть для ячейки формулыСтарая версия, 26 байт
источник
TI-Basic,
10910 байтСписок входных данных
Ans
, выходов,1
если "жуткий" или0
иным образом.источник
Математика , 16 байт
Попробуйте онлайн!
-2 байта благодаря @GregMartin
Верно для не жутко, ложно для жутко.
источник
2
байты,Max@#/2+7<Min@#&
SAS, 77 байт
источник
Röda , 16 байт
Попробуйте онлайн!
Это анонимная функция, которая принимает входные данные как два литерала (а не массив) из входного потока.
объяснение
источник
Perl 6 , 15 байт
Попробуй
расширенный
источник
Crystal ,
4427 байт-17 от взгляда на ответ Даньеро в Ruby.
Попробуйте онлайн!
источник
Python 3 -
3227 байтНевозможно прокомментировать, но я получил немного более короткий ответ, чем другое решение Python 3:
-5 спасибо @Cyoce!
источник
lambda *a
Фурье, 37 байт
Попробуйте это на FourIDE!
Принимает два числа в качестве ввода. Будет гольф позже.
источник
PHP, 29 байт
печатает 1 для жуткого, ничего для не жуткого
Попробуйте онлайн!
источник
Japt , 11 байт
Возвращает
true
за "жуткий" иfalse
за нет.Попробуйте онлайн
объяснение
источник
J, 10 байт
Выходы
1
не жуткие,0
жуткиеобъяснение
источник
J-uby , 25 байтов
Звоните как
f^[80,32]
. Даетtrue
не жутко,false
жутко.объяснение
источник
method_missing
сильная опора привела к слишком большой сложности. Этот подход чистый и элегантный. Congrats!AWK , 26 байт
Попробуйте онлайн!
Выходы 1 для «Creepy» и 0 для «Not Creepy». Может сохранить 3 байта, если нет-вывода можно считать ложным значением, через:
источник