Pandigital номер представляет собой целое число , которое содержит все цифры от 0 до 9 , по крайней мере один раз. 1234567890, 1902837465000000 и 9023289761326634265 являются пандигитальными. Для целей этой задачи числа, такие как 123456789, не являются pandigital, поскольку они не содержат 0, хотя 123456789 = 0123456789.
Разнообразная пара целых чисел представляет собой пару целых чисел таким образом, что является Pandigital. называется показателем диверсификации .
Задача: дать целое число , найти наименьший соответствующий показатель диверсификации . Это код-гольф , поэтому выигрывает самая короткая программа в байтах.
(Вы можете предположить, что существует такой показатель степени, то есть вашей программе не будет дан неверный ввод, такой как степень 10).
Ваше решение должно быть в состоянии обрабатывать как минимум данные тестовые примеры, но теоретически оно должно обрабатывать все действительные входные данные.
Это A090493 на OEIS.
Контрольные примеры
2 -> 68
3 -> 39
4 -> 34
5 -> 19
6 -> 20
7 -> 18
8 -> 28
9 -> 24
11 -> 23
12 -> 22
13 -> 22
14 -> 21
15 -> 12
16 -> 17
17 -> 14
18 -> 21
19 -> 17
20 -> 51
21 -> 17
22 -> 18
23 -> 14
24 -> 19
25 -> 11
26 -> 18
27 -> 13
28 -> 11
29 -> 12
30 -> 39
31 -> 11
32 -> 14
33 -> 16
34 -> 14
35 -> 19
36 -> 10
1234567890 -> 1
1234567890 -> 1
.123456789
считается пандигитальным? Это равно0123456789
, что, безусловно, пандигитальный.Ответы:
Brachylog (v2), 9 байт
Попробуйте онлайн!
Это функция представления. Ссылка TIO содержит оболочку, превращающую функцию в полноценную программу.
объяснение
источник
Python 2 , 44 байта
Ввод должен быть длинным, так как он
`k`
ведет себя по-разному для длинных и целых чисел.Попробуйте онлайн!
источник
Perl 6 , 32 байта
Попробуйте онлайн!
Довольно понятно.
объяснение
источник
JavaScript (Node.js) ,
51 4643 байтаПринимает входные данные как литерал BigInt. Возвращает истину вместо 1 .
Попробуйте онлайн!
источник
Рубин , 41 байт
Попробуйте онлайн!
источник
Haskell, 50 байтов
Попробуйте онлайн!
Тот же счетчик байтов:
источник
J , 25 байт
Попробуйте онлайн!
Одиночный монадический глагол. Входные данные должны быть целыми числами с расширенной точностью (например
2x
).Как это устроено
источник
(]+10>#@=@":@^)^:_*
Tcl , 82 байта
Попробуйте онлайн!
источник
llength
82 байтамиРакетка ,
11096 байт-14 байт благодаря UltimateHawk!
Попробуйте онлайн!
источник
(define(f n[b 1])(if(= 10(length(remove-duplicates(string->list(~v(expt n b))))))b(f n(+ b 1))))
Python 3 ,
5247 байтблагодаря @BMO
Попробуйте онлайн!
источник
05AB1E (наследие) ,
109 байтовСохранено 1 байт благодаря Mr. Xcoder
Попробуйте онлайн!
объяснение
источник
1µINmÙgTQ
- Попробуйте онлайн!N
тогда. Благодарность!Древесный уголь , 19 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Повторно вставляйте пустую строку в пустой список до тех пор, пока не появятся цифры, которых не содержит мощность ввода в длину списка.
Напечатайте длину списка.
источник
К (нгн / к) , 76 байт
Попробуйте онлайн!
{
}
функция с аргументомx
|(99#10)\x
мы представляем числа в виде перевернутых списков из 99 десятичных цифр - сделайте это с аргументомa::
присваивать глобальной переменнойa
(k не имеет замыканий. нам нужноa
быть глобальными, чтобы мы могли использовать их в подфункциях){
}{
}\
в то время как первая функция возвращает Falsey, продолжайте применять вторую функцию (она же цикл), сохраняя промежуточные результатыa*\:x
каждая изa
цифр, умноженная на каждую изx
цифр («внешний продукт»)99 99#a*\:x,0
добавьте дополнительный столбец 0 с и измените форму снова до 99x99, это сместит i-ую строку на элементы i вправо, вставив 0s слева (это работает для тестов, для больших входов 99x99 может привести к переполнению)+/
сумма{+/2 99#,/|0 10\x,0}/
размножать нести:{
}/
продолжайте применять до схождения0 10\x
делим на 10 (пара списков)|0 10\x
Моддив на 102 99#,/|0 10\x,0
moddiv на 10, часть div смещена на 1 цифру вправо+/
сумма{10>#?(+/|\0<|x)#x}
- проверить наличие (не) пандигитальности:|x
задний ходx
0<
какие цифры ненулевые|\
частичные максимумы+/
сумма - это число ведущих 0 вx
10>
они меньше 10?#
длина последовательности степеней - это результатисточник
PowerShell , 107 байт
Попробуйте онлайн!
Довольно просто, просто позор, который мы должны использовать
[bigint]
везде. Мы берем ввод$a
, затем настраиваемfor
цикл с инициализатором$b=1
.Каждая итерация мы увеличиваем
$b
после проверки , является ли$a ^ $b
( с помощьюpow
) , посланныйt
oCharArray
,sort
Ed с-u
Nique флагом, а затем-join
объединено в строку является-n
OTe
каче в диапазоне0..9
также-join
изд в строку.Это полный рот. Например, это было бы сравнить
7 ^ 5 = 16807 --> "01678"
с"0123456789"
, определить , что они не равны, и продолжить цикл.Как только мы выйдем из цикла, мы определили, что
$b
подходит для нашего ввода, и оставим это на конвейере. Вывод неявный.источник
Java, 108 байт
Попробуйте онлайн!
объяснение
Грубая сила, зацикливая ^ b, пока не найдет строку с 10 (или более, но это невозможно, поскольку будет только от 0 до 9) уникальных символов.
BigDecimal
Требуется как потому, чтоMath.pow
он недостаточно точен (неудачно в случае11
), так и потому, что преобразование aDouble
в строку по умолчанию показывает научную запись, что нарушает этот метод поиска числа-пандигита.источник
new java.math.BigDecimal(a).pow(++b).toString()
на(new java.math.BigDecimal(a).pow(++b)+"")
(и конечная точка с запятой не должна учитываться для лямбда-функций). Попробуйте онлайнPyth,
108 байтПопробуйте это онлайн здесь .
Сохранено 2 байта благодаря FryAmTheEggman, предыдущий код
fq;l{j^QT;
источник
T
операцию power.Желе ,
1211 байтПопробуйте онлайн!
Как это устроено
источник
Чистый ,
107101 байтПопробуйте онлайн!
Принимает ввод как
Integer
, возвращаетInt
источник
Wolfram Language (Mathematica) , 48 байтов
Попробуйте онлайн!
источник
Атташе , 27 байт
Попробуйте онлайн!
объяснение
альтернативы
28 байт:
${Generate{Unique@S[x^_]@9}}
29 байт:
${Generate{Unique[S[x^_]]@9}}
30 байтов:
${Generate{#Unique[S[x^_]]>9}}
31 байт:
Generate@${{#Unique[S[x^_]]>9}}
32 байта:
${Generate[{#Unique[S[x^_]]>9}]}
33 байта:
${If[#Unique[x^y]>9,y,x&$!-~y]}&0
34 байта:
${If[#Unique[x^y]>9,y,$[x,y+1]]}&0
источник