Вам будет дано положительное целое число (которое никогда не будет содержать 0) в качестве входных данных. Ваша задача - проверить, является ли это число Линч-Белла или нет.
Число представляет собой число Линча-Белла, если все его цифры уникальны и число делится на каждую из его цифр.
На самом деле существует только 548 чисел Линч-Белла, поэтому жесткое кодирование возможно, но почти наверняка будет длиннее.
126 - это число Линча-Белла, потому что все его цифры уникальны, а 126 делится на 1, 2 и 6.
Вы можете вывести любое истинное и ложное значение.
Примеры:
7 -> truthy
126 -> truthy
54 -> falsy
55 -> falsy
3915 -> truthy
Это OEIS A115569 .
Ответы:
Mathematica, 42 байта
Я думаю, что
0!=##&@@d&&##&@@
это новый низкий уровень читаемости для Mathematica ...объяснение
Некоторые из основных синтаксических сахара, используемых здесь:
&
имеет очень низкий приоритет и превращает все, что от него осталось, в неназванную функцию.&&
это простоAnd
оператор.#
является аргументом ближайшей включающей безымянной функции.##
это последовательность всех аргументов функции.@
является префикс для обозначения вызовов функций, то естьf@x == f[x]
.@@
этоApply
, который передает элементы списка в виде отдельных аргументов функции, то естьf@@{a,b,c} == f[a,b,c]
.С этим из пути ...
Это должно быть достаточно понятным: это дает нам список десятичных цифр ввода и сохраняет результат в
d
.Это проверяет входные данные на делимость каждой из его цифр (потому что оператор делимости есть
Listable
). Это дает нам списокTrue
с иFalse
с.Мы применяем функцию слева к списку логических значений, так что каждый логический аргумент является отдельным аргументом.
Мы применяем еще одну функцию
d
, чтобы отдельные цифры задавались как отдельные аргументы. Функция0!=##&
, то есть . Он проверяет, что все цифры различны (и что они отличны от, но это дается заданием, и если это не так, он не будет делителем в любом случае). на самом деле просто 1-байтовая заставка при использовании себя, и это работает, потому что есть 1-байтовый элемент ( ), которого мы знаем, что нет. Итак, это первое, что проверяет, что цифры уникальны. Давайте назовем этот результатUnequal[0, d1, d2, ...]
0
0!=##&
Unequal
0
U
Опять же, это действительно просто сокращение
And[U, ##]
. С##
Будучи последовательности, отдельные булевы от первоначальной проверки делимости подставляются вAnd
, таким образом мы получаем , которая проверяет , что обе цифры являются уникальными , и каждая цифра делит вход.And[U, d1∣n, d2∣n, ...]
источник
##&@@d&&##&@@
? Что это вообще делает?0!=
на0<
?Python 3 , 56 байт
Попробуйте онлайн!
Выведите,
False
если это число Линча-Белла, вTrue
противном случае.источник
0
на входеБрахилог , 10 байт
Попробуйте онлайн!
объяснение
источник
C #,
8783 байтаЯ написал это в блокноте перед тестированием в Visual Studio, где все работало нормально, так что просто понял, что теперь я такой же ботаник ...
Полная / Отформатированная версия:
источник
JavaScript (ES6),
4241 байтПринимает ввод в виде строки и возвращает
true
илиfalse
в зависимости от ситуации. Редактировать: 1 байт сохранен благодаря @RickHitchcock. Другие версии:Принимает входные данные в виде строки и возвращает
0
или1
(т. Е. Логический обратный) для 40 байтов:Принимает ввод как число и возвращает
0
или1
для 43 байтов:Принимает ввод как число и возвращает
1
или0
для 45 байтов:источник
s=>![...s].some((e,i)=>s%e|s.search(e)<i)
[...new Array(9999999)].map((_,n)=>n+1+"").filter(s=>![...s].some((e,i)=>s%e|s.search(e)<i)).length
я получил5081
вместо ожидаемого548
, так что это не так, как написано. Правда, жесткий код.filter(x => x.indexOf('0')===-1)
это возвращает 548, как и было обещано.Желе ,
64 байтаПопробуйте онлайн!
Как это работает
источник
gQV=
если вы предпочитаете решение только для ASCII.Python 3 , 54 байта
Возвращает,
False
когда число является числом Линч-Белла. Принимает строки в качестве входных данных. Придумал сам, но очень похож на род. Я бы прокомментировал его пост, но у меня пока нет репутации.Попробуйте онлайн!
источник
Желе , 8 байт
Попробуйте онлайн!
источник
PHP,
6248 байтЗапустите как трубу с
-nR
или проверьте это онлайн . Пустой вывод для фальши,1
для правды.сломать
источник
Haskell , 61 байт
Попробуйте онлайн!
Определяет анонимную функцию,
(#)=<<show
которая при заданном числе возвращаетTrue
илиFalse
.источник
05AB1E , 4 байта
Попробуйте онлайн!
Тот же алгоритм, что и этот ответ на связанный вопрос .
источник
05AB1E , 8 байтов
Использует кодировку 05AB1E . Попробуйте онлайн!
источник
Mathematica, 57 байт
источник
IsLynchBellNumber
LynchBellNumberQ
. ;)Python 2 , 66 байт
Это решение в Python 2, цель которого - вывод
True
для правдивых иFalse
ложных данных:Попробуйте онлайн!
источник
Haskell,
260241201162 байтаобъяснение
Значительно сократили спасибо Лайкони
источник
Japt ,
151411109 байтПопытайся
источник
©!
->«
за -1 байтНейм , 9 байт
Попробуйте онлайн!
-2 спасибо Оккс .
Хм, есть хорошая симметрия ...
oO.O.O.Oo
источник
𝐂D𝐮𝔼
чтобы𝐮ℚ
(uniquify, проверка на равенство игнорирования типов)Perl 6 , 27 байт
Попробуйте онлайн!
.comb
это метод, который при отсутствии аргументов разбивает строку на отдельные символы. Число неявно преобразуется в строку и.comb
возвращает свои цифры..comb.all
это соединение всех цифр.$_ %% .comb.all
является и-переходом делимости входного аргумента$_
на все его цифры. Например, если$_
есть123
, соединениеall(True, False, True)
, которое разрушается доFalse
в истинном контексте.[!=] .comb
сокращает цифры входного аргумента с помощью!=
оператора, который оценивает,True
отличаются ли все цифры.источник
Сетчатка , 37 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Пояснение: На первом этапе любая дублирующаяся цифра заменяется на ноль. На втором этапе каждая цифра заменяется ее унарным представлением, за которым следует унарное представление исходного числа. Затем на третьем этапе вычисляется остаток от деления исходного числа на каждую ненулевую цифру. Если число является числом Линч-Белла, то это удалит все, и это проверено на заключительном этапе.
источник
Ruby 2.4, 42 байта
(ТИО пока нет, извините)
источник
CJam, 17 байт
CJam - это ява языков игры в гольф. Это даже интерпретируется на Java!
Объяснение:
источник
VBScript, 177 байт
Привет всем, это мой самый первый пост CG и первая попытка, так что надеюсь, что я следовал всем правилам ...
Это можно запустить из Блокнота, добавив строку в конце
Затем сохраните его как .vbs, затем дважды щелкните.
Объяснение:
VBScript - немного тупой инструмент для игры в гольф, но эй, я еще не изучил Ruby ...
источник
PHP , 51 байт
печатает ноль для истинного и один для ложного
Попробуйте онлайн!
PHP , 62 байта
печатает ноль для истины и один для ложных
Попробуйте онлайн!
источник
Pyth , 10 байт
Проверьте все контрольные примеры.
Как?
Pyth , 11 байт
Проверьте все контрольные примеры.
Как?
источник
Perl 5 , 34 байта
33 байта кода + 1 для
-p
флагаПопробуйте онлайн!
Выходы
0
для правды, любой другой номер для фальшиисточник
Котлин 1,1,
986659 байтукрашенный
Тест
источник
APL (Dyalog Unicode) , 24 байта
Попробуйте онлайн!
Простой DFN, возможно, можно играть в гольф немного больше. Выход стандартного APL booleans 1 для правды, 0 для фальши.
Стоит отметить, что функция принимает аргументы как строки, а не как целые числа.
Как:
источник
Юлия 1,0 39 байт
rem.(x,d)
вектор, содержащий остатки после деления x на каждую цифру вx
.0*unique(d)
вектор с длиной, равной количеству уникальных цифр со всеми нулевыми значениями. Проверьте, равны ли они.Попробуйте онлайн!
источник
ruby -n , 40 байт
Попробуйте онлайн!
Читайте номер как строку. Замените каждый символ (цифру) на последующее вхождение этого символа, если оно присутствует, или целое число по модулю этой цифры. Это приведет к строке только
0
s, если и только если это число Линча-Белла. Зачем? Если есть повторяющаяся цифра, каждый экземпляр последней остается неизменным, и, поскольку вход не содержит нулей, это означает ненулевую цифру. В противном случае мы просто проверяем, делит ли каждая цифра число равномерно.Поскольку нет чисел Линча-Белла, состоящих из 8 и более цифр (формальное доказательство: OEIS так говорит), проверка, является ли результирующая строка лексикографически более ранней, чем строка
'00000000'
, эквивалентна проверке, все ли это нули.источник
R 86 байт
Принимает ввод в виде строки. Я конечно чувствую, что это пригодно для игры в гольф.
Попробуйте онлайн!
источник