Пусть положительное целое число , состоящее из п десятичных цифр d 1 , d 2 , . , , , д н . Позволять будет другим положительным целым числом.
Для этой задачи, мы называем в подражатель из B , если существует хотя бы один список положительных целых чисел р 1 , р 2 , . , , , Р п такие , что:
и называютсявзаимными подражателями,если является подражателем а является подражателем .
пример
и являются взаимными подражателями, потому что:
и:
Соревнование
С учетом двух положительных целых чисел и ваша задача состоит в том, чтобы напечатать или вернуть истинное значение, если и являются взаимными копиями или ложным значением в противном случае.
Разъяснения и правила
- Вы можете взять и в любом разумном, однозначном формате (например, целые числа, строки, списки цифр, ...)
- и могут быть равны. Если число является взаимной копией самого себя, оно принадлежит A007532 .
- Вместо истинных / ложных значений вы можете вернуть два разных согласованных значения.
- Для и ваш код должен быть заполнен в менее чем за одну минуту . Если для более высоких значений требуется слишком много времени, он должен решить их теоретически.
- Это код-гольф .
Контрольные примеры
Truthy:
1 1
12 33
22 64
8 512
23 737
89 89
222 592
526 853
946 961
7 2401
24 4224
3263 9734
86 79424
68995 59227
32028 695345
Falsy:
1 2
3 27
9 24
24 42
33 715
33 732
222 542
935 994
17 2401
8245 4153
code-golf
decision-problem
integer
Arnauld
источник
источник
17 2401 -> false
. Я почти споткнулся об этом.Ответы:
Брахилог , 19 байт
Попробуйте онлайн!
Выходы
true.
илиfalse.
объяснение
источник
2401
содержал a,0
который не работал с тем способом, который я проверял, которыйI
был строго положительным (потому что я сопоставил его с обоимиI
и цифрой, чтобы сохранить байты)Шелуха , 17 байт
Попробуйте онлайн! Завершает все тестовые случаи под 1000 примерно за 11 секунд.
объяснение
Почему это работает
Если мы имеемB=dp11+⋯+dpnn , где di являюсь цифрами и pi положительные целые числа, то dpii≤B для всех i , или , что эквивалентно pi≤logdiB . Мы можем игнорировать случай di≤1 , поскольку возведение в степень 0 или 1 не меняет его. В моей программе пространство поиска1≤pi≤B−−√ (для соблюдения ограничения по времени; впротивном случаея бы использовал1≤pi≤B ), поэтому, если у нас есть⌊logdiB⌋≤⌊B−−√⌋ , тогда все в порядке. Еслиdi≥3 , это верно для всех натуральных чиселB , поэтому единственным опасным случаем являетсяdi=2 . У нас есть⌊log2B⌋>⌊B−−√⌋ B=8 23=8 1 2 A 2 2 3 A=2⋅10k k A 8 B в любом случае, и программа правильно возвращает ложное значение независимо от других вычислений.
источник
d
принимает неявный аргумент. Я пояснил это в объяснении. 2. Я добавил аргумент в пользу корректности программы.Python 2 , 102 байта
Попробуйте онлайн!
источник
05AB1E ,
2622 байтаПринимает входные данные в виде списка (т.е.
[526,853]
).Попробуйте онлайн или проверьте большинство тестовых случаев в диапазоне
[1,999]
.Аналогично моему старому ответу ниже, за исключением того, что
[1,n]
список жестко закодирован[1,100]
, и он создает декартовой список дважды, один раз для каждого сопоставления ввода, что является основным узким местом с точки зрения производительности.Старый 26-байтовый ответ лучше для производительности:
В этой версии я поменял несколько байтов, чтобы улучшить производительность, чтобы она могла легко работать
[1,1000]
. Тестовые случаи, содержащие числа в диапазоне[1,9999]
, выполняются в течение приблизительно одной секунды на TIO. Тестовые случаи в диапазоне[10000,99999]
примерно 10-15 секунд на TIO. Выше этого будет тайм-аут.Попробуйте онлайн или проверьте все контрольные примеры с числами в диапазоне
[1,9999]
.Объяснение:
источник
Haskell , 77 байт
Попробуйте онлайн!
источник
Perl 6 ,
87 8469 байт-15 байт благодаря nwellnhof!
Попробуйте онлайн!
Блок анонимного кода, который возвращает True или False.
Объяснение:
источник
JavaScript (Node.js) ,
1169289868377 байтПопробуйте онлайн!
Ожидайте ввода как
(A)(B)
.источник
J , 56 байт
Попробуйте онлайн!
Уу, вложенное явное определение!
Как это устроено
источник
Python 2 ,
149147143139132118108107106105 байтПопробуйте онлайн!
-4 байта, благодаря Веданту Кандой
источник
>0
могут быть удалены.not a
:a<1
.b==0
:b<1
b<0
не работаетJ, 68 байт
Я думал, что J будет неплохо выступать здесь, но в итоге все оказалось сложнее, чем я ожидал, и мне понравятся любые предложения для дальнейшего игры в гольф ...
Попробуйте онлайн!
ПРИМЕЧАНИЕ: мы вычитаем 3 символа из числа TIO, так
f=.
как основная функция не учитываетсяungolfed
источник