Введение:
Я думаю, что мы все слышали об этом, но здесь очень краткое резюме: Ной собрал два из всех видов животных на планете, мужского и женского пола, чтобы спасти в своем Ковчеге во время большого наводнения. Фактическая цитата из Библии:
Бытие 7: 2-3
Вы должны взять с собой семь всевозможных чистых животных, самцов и их помощников, два всевозможных нечистых животных, самцов и их помощников, а также семь всевозможных птиц в небе мужчина и женщина, чтобы сохранить их потомство на лице земли.
источник
Но ради этого испытания мы будем игнорировать чистую / нечистую часть и часть, где он взял семь каждого животного. Эта проблема только об этой части:
два из каждого вида
нечистогоживотного, мужчина и его помощник
Вызов:
Входные данные:
Вам дан список целых положительных чисел (в случайном порядке).
Выход:
Два разных значения, указывающие, является ли это «Список Ноя» или нет. Это необязательно должно быть значением true / falsey , поэтому также может быть 0
/ 1
в Java / C # или 'A'
/ 'B'
на любом языке, чтобы привести некоторые примеры.
Когда список - это «Список Ноя»? Когда в списке ровно два каждого целого числа.
Правила соревнований:
- Ввод / вывод является гибким. Входные данные могут быть списком / массивом / потоком целых чисел / чисел с плавающей запятой / строк или считывать один за другим из STDIN. Выходными данными могут быть любые два различных значения, возвращаемые функцией или выводимые в STDOUT / файл.
- Целые числа во входном списке расположены в случайном порядке и гарантированно будут положительными в диапазоне .
- Входной список гарантированно не является пустым.
- Наличие целого числа, кратного двум разам, представленным выше 2 (то есть 4, 6, 8 и т. Д.), Будет ошибочным. Т.е.
[6,4,4,6,4,7,4,7]
это falsey, хотя еще можно было создать равные пары , как это:[[4,4],[4,4],[6,6],[7,7]]
.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Truthy:
[7,13,9,2,10,2,4,10,7,13,4,9]
[1,2,3,1,2,3]
[10,100,1000,1,100,10,1000,1]
[123,123]
[8,22,57189,492,22,57188,8,492,57188,57189,1,1]
Falsey:
[6,4,4,6,4,7,4,7]
[2,2,2,2,2,2]
[5,1,4,5,1,1,4]
[77,31,5,31,80,77,5,8,8]
[1,2,3,2,1]
[44,4,4]
[500,30,1]
[1,2,1,1]
[2,4,6,4,4,4]
[2,23,34,4]
[2,23,3,3,34,4]
источник
Ответы:
Python 3 , 31 байт
Попробуйте онлайн!
Python 2 , 33 байта
Попробуйте онлайн!
источник
05AB1E , 4 байта
Попробуйте онлайн! или как тестовый набор
объяснение
источник
¢2QP
, но использованиеΘ
также является хорошей альтернативой. :){ιË
, но, конечно, это не удается, когда целые числа встречаются 4 раза.Брахилог , 4 байта
Попробуйте онлайн!
объяснение
источник
R , 20 байтов
-6 байт благодаря digEmAll путем изменения метода ввода
Попробуйте онлайн!
Выводится,
FALSE
если это список Ноя, а вTRUE
противном случае. Работает для любого типа ввода, а не только целых чисел.Вычисляет количество каждого значения в списке и проверяет, отличается ли какое-либо из значений от 2.
источник
APL (Dyalog Extended) , 5 байтов SBCS
Попробуйте онлайн!
Это правда, что…
2¨
два на каждый элемент≡
идентично⍧⍨
подсчет селфи (подсчет собственных элементов в себе)?
источник
C # (интерактивный компилятор Visual C #) ,
39, 32 байтаБлагодаря @Expired_Data
Попробуйте онлайн!
источник
Haskell , 33 байта
Попробуйте онлайн!
Для каждого элемента ввода мы гарантируем, что он появляется дважды в списке ввода.
sum[1|b<-x,b==a]
это просто версия для игры в гольфlength(filter(==a)x)
.источник
Perl 6 , 18 байт
Попробуйте онлайн!
.Bag
преобразует входной список вBag
набор с множественностью.{*}
извлекает все кратности..all
создает и-пересечение кратностей.== 2
приводит к другому соединению логических значений, каждое из которых равно true, если кратность равна 2.so
сворачивает соединение к единственному логическому.источник
J , 10 байт
Попробуйте онлайн!
источник
[:*/2=1#.=
я действительно хочу снять эту крышку, но не могу понять, как.2*/@:=1#.=
также 10 байтов@:
здесь тоже удобно.=
, так странно полезную в нишевых сценариях игры в гольфMS SQL Server 2017 ,
152150146 байтЧитаемая версия:
Попробуйте это на SQL Fiddle !
-2 байта благодаря Кевину Круйссену
источник
c
удалить послеCOUNT(*)
?Haskell ,
6145 байтПопробуйте онлайн!
Спасибо @KevinCruijssen за 12 байтов и @nimi за еще 4.
Сначала ответил Хаскелл, но это было удивительно легко сделать. Можно ,
вероятно, будет golfed много.Дело в точке...источник
all(True==).map(2==)
может бытьall(2==)
. :)length
кall
:all((2==).length).group.sort
. Нет необходимости давать имя функции, т.е. отбрасыватьf=
.all(2==)
когда я тестировал в GHCi. Спасибо Кевину и Ними, я обновлю ответ.all(True==)
естьand
.JavaScript (ES6), 37 байт
Возвращает false для Noah или true для не-Noah.
Попробуйте онлайн!
комментарии
источник
APL (Dyalog Unicode) , 8 байтов SBCS
Функция анонимного молчаливого префикса. Возвращает
0
/1
.Попробуйте онлайн!
…
⌸
Для каждого значения в качестве левого аргумента и индексов появления этого значения в качестве правого аргумента, вызовите:≢
Tally правый аргумент (вхождения)∘
затем⊢
вернуться , что, не обращая внимания на левый аргумент2=
Булевский список с указанием 2∧/
И-сокращение (то есть они все правда?)источник
PowerShell ,
663726 байт-11 байт благодаря маззи
Попробуйте онлайн!
Группирует
$l
и захватывает все количества совпадающих значений. Затем он отфильтровывает все числа 2 из этого списка. Если список пуст, это номер Ноя; в противном случае он будет заполнен не числом 2. Отказ от списка даст,True
если он пустой иFalse
заполненисточник
group
существовании существаЭликсир , 52 байта
Попробуйте онлайн!
Полный Эликсир нуб здесь :-D.
источник
PHP , 60 байт
Попробуйте онлайн!
PHP имеет отличные встроенные функции для этого, хотя в 20 символов,
array_count_values()
это не очень гольф.источник
Mathematica,
2524 байтаПопробуйте онлайн!
Tally
Функция возвращает список вида , который затем сопоставляется с шаблоном , который проверяет , все ли графа 2.{{element, count}, ...}
источник
Атташе , 16 байт
Попробуйте онлайн!
объяснение
альтернативы
17 байтов:
{All&_!`=&2@`~&_}
18 байт:
{All[`=&2@`~&_,_]}
23 байта:
Same@2&`'@Sum@Table[`=]
25 байт:
Same«2'Sum@Table[`=,_]»
25 байт:
Same<~2'Sum@Table[`=,_]~>
25 байт:
{Same[2'Sum@Table[`=,_]]}
35 байт:
{Commonest@_==Unique@_and _[0]~_=2}
источник
TI-Basic, 47 байт
Я большой поклонник TI-Basic. Это не очень хороший язык для любых целей, но мне нравится программирование (и игра в гольф).
Как работает этот код?
Сначала сортирует список.
Во-вторых, он использует функцию △ List для создания другого списка, который является различием между элементами отсортированного списка. (Например, △ List ({1,3,7,8}) даст {2,4,1}). Не относится к этому списку, который преобразует каждый ненулевой элемент списка в ноль, а каждый ноль в один.
Затем программа проверяет, соответствует ли результирующий список шаблону
{1, 0, 1, 0, ...}
, что будет истинно, только если исходный список является списком Ноя.Существует также дополнительная проверка, чтобы длина списка была четной, чтобы уловить некоторые крайние случаи.
Вот несколько скриншотов тестовых случаев:
источник
Юлия 1,0 , 32 байта
Попробуйте онлайн!
Делит каждый элемент входного массива
l
на транспонирование,l'
давая матрицу. Суммирование по этой матрице при примененииisone
к каждому элементу дает удвоенную длину,l
если каждый элемент появляется ровно дважды.источник
K (ок) , 9 байт
Решение:
Попробуйте онлайн!
Объяснение:
источник
Юлия ,
30 символов26 байтовСпасибо, H.PWiz за этот трюк!
Попробуйте онлайн!
источник
!a=all(x->2==sum(a.==x),a)
для 26 байтов. NB. что я рекомендую считать в байтах на этом сайте!
для анонимных функцийЖеле , 5 байт
Попробуйте онлайн!
Монадическая ссылка, которая принимает список целых чисел и возвращает 1, если список Ноя, и 0, если нет.
источник
VDM-SL , 64 байта
объяснение
VDM работает преимущественно как логические операторы второго порядка.
Поскольку вы не можете TIO VDM, вот вывод из сеанса отладки
источник
MATL , 6 байтов
Попробуйте онлайн!
0 за правду, 1 за ложь. Порты ответ Робин Райдер .
MATL , 6 байтов
Попробуйте онлайн!
1 для правдивых, 0 для ложных. Порты ответ Луиса Мендо .
источник
Рубин , 29 байт
Попробуйте онлайн!
источник
Котлин ,
96776951 байтПопробуйте онлайн!
источник
Excel, 45 байт
Предполагает данные в столбце A, причем они вводятся в любую ячейку, отличную от одной в столбце A. Возвращает TRUE, если есть пары, и FALSE, если они не совпадают.
Попытался удалить / 2 и добавить .5 для суммирования, но это не сработало.
Попытался подсчитать частоты, которые <> 2, и это не вернуло правильное количество.
источник
Октава / MATLAB,
2221 байтАнонимная функция, которая вводит числовой вектор и выводит,
0
если вектор удовлетворяет условию или1
иным образом.Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
Баш , 26 байт
Код выхода не равен нулю, если список Ноя.
Попробуйте онлайн!
источник