Вызов
Учитывая целое число, в n
качестве входных данных где 36 >= n >= 2
выведите количество чисел Линч-Белла в базе n
.
Выход должен быть в базе 10.
Числа Линч-Белл
Число представляет собой числа Линча-Белла, если:
- Все его цифры уникальны (без повторения цифр)
- Число делится на каждую из его цифр
- Он не содержит ноль в качестве одной из своих цифр
Поскольку все цифры должны быть уникальными, и у вас есть конечный набор однозначных чисел в каждой базе, существует конечное число чисел Линч-Белла.
Например, в базе 2 есть только один номер Линча-Белла 1
, поскольку все остальные числа либо повторяют цифры, либо содержат 0.
Примеры
Input > Output
2 > 1
3 > 2
4 > 6
5 > 10
6 > 10
7 > 75
8 > 144
9 > 487
10 > 548
В Mathematica Online не хватило памяти выше базы 10. Вы можете использовать следующий код для генерации своего собственного:
Do[Print[i," > ",Count[Join@@Permutations/@Rest@Subsets@Range[#-1],x_/;And@@(x\[Divides]FromDigits[x,#])]&[i]],{i,10,36,1}]
выигрыш
Самый короткий код в байтах побеждает.
code-golf
number
base-conversion
Бета распад
источник
источник
>10
?f(36)
. Сделать вызов с быстрым кодом на основе этого было бы, вероятно, интересно.Ответы:
Желе , 13 байт
Попробуйте онлайн!
Другое O (n n ) решение.
объяснение
источник
ṖŒPḊŒ!€Ẏ⁼g¥"ḅ¥³S
и быстрееЖеле , 15 байт
Попробуйте онлайн!
Сложность .
O(nn)
источник
O(N^N)
решение не только приемлемое, но и хорошее.O(N↑↑N)
O(N^(N+1))
потому что проверка достоверности каждого сгенерированного числа занимаетO(N)
? (хотя я не понимаю Jelly)N+1
вO(N)
) не подразумеваетN^(N+1)
вO(N^N)
.Java,
222212190 байт-10 байт благодаря Герману
-22 байта благодаря Кевину
Ungolfed:
Попробуйте онлайн!
Становится очень медленным для больших чисел.
источник
a->{int c=0,i=1;A:for(;i<Math.pow(a,a);i++){java.util.Set<Character>g=new java.util.HashSet<>();for(char b:Long.toString(i,a).toCharArray())if(!g.add(b)|b<49||i%Long.parseLong(b+"",a)>0)continue A;c++;}return c;}
A:
иcontinue A;
13 байтов, в то время{--c;break;}
как 12. Может ли это привести к некоторой ошибке, которую я не вижу?i%a
иi/=a
по каждой петле. Вы можете избежать набора, используяint[]
и проверяя этоx[b]++<2
java.util.Set<Character>g=new java.util.HashSet<>();
может бытьimport java.util.*;
+Set g=new HashSet();
;Long.toString
может бытьa.toString
; иLong.parseLong
может бытьa.parseInt
.Perl 6 ,
868477 байт-2 байта благодаря Ramillies
Попробуйте онлайн!
Работает при n = 8 на TIO.
источник
.all
вместоall $_
.На самом деле , 24 байта
Попробуйте онлайн!
объяснение
Эта программа состоит из двух основных частей: генерация перестановки и тест Линча-Белла. Таким образом, это объяснение будет смотреть на каждую часть отдельно, для большей ясности.
Генерация перестановок
Ввод:
n
(целое число в[2, 36]
)Вывод: все частичные и полные перестановки
[1, n-1]
(последовательности, содержащие значения[1, n-1]
без повторений, длина которых в[1, n-1]
)Тест Линч-Белла
Вход: список
n
целых чисел, представленный в виде списков базовыхn
цифрВывод: количество чисел Линч-Белла в базе
n
источник
Mathematica,
827976 байтисточник
[<parameter>]
после этого. С тем,parameter
чтобы быть числом.05AB1E , 22 байта
Попробуйте онлайн!
O_O
было также мое лицо, когда это, наконец, сработало.<ÝIBJ0Kæ¦Ù€œ˜
быстрее, чем я использую для генерации чисел в реальном ответе, но случайным образом перестает работать для чего-либо больше, чем 7 (без видимой причины?)объяснение
источник
ε0KÙ}
может быть0м€Ù
сохранение байта.Perl 5,
8076 байт (75+-p
)Злоупотребление
$;
ради удовольствия и выгоды. Тайм-ауты на входах> 8.РЕДАКТИРОВАТЬ: -4 байта путем объединения двух циклов.
источник
Рубин ,
8065 байтПопробуйте онлайн!
Спасибо ГБ за -15 байтов.
источник
Japt
-x
,2519 байт-6 байт благодаря Shaggy
Попробуйте онлайн!
источник
-x
флагом.Python 3 ,
204174 байтаПопробуйте онлайн!
Для каждой перестановки каждого элемента набора мощности диапазона (1, n) (без нулей, уникально), преобразуйте в числовую строку в базу n. Суммируйте все, что делится на каждую цифру, вычтите 1 из-за того, что powerset генерирует пустой набор.
-30 байт благодаря @ovs!
источник
Haskell , 117 байт
Попробуйте онлайн! Работает на TIO до истечения
n=7
времени ожидания.источник
Perl 5 , 108 + 1 (
-p
) = 109 байтПопробуйте онлайн!
Это свинья. Не уверен, что он сделает больше, чем база 8 на TIO без тайм-аута.
источник
C # (интерактивный компилятор Visual C #) , 144 байта
Перебирает все числа от 0 до
ulong.MaxValue
и выбирает те, которые являются числами Линч-Белла в указанной базе. Работает вечно, даже на 2, хотя, если вы установите~0UL
часть в цикле for на что-то меньшее, вы можете получить вывод для ввода до 7 в течение минуты на TIO.Попробуйте онлайн!
источник