Soit un entier positif composé de chiffres décimaux . Soit un autre entier positif.
Aux fins de ce défi, nous appelons un copieur de s'il existe au moins une liste d'entiers positifs tels que:
et sont appelés imitateurs réciproques si est un imitateur de et est un imitateur de .
Exemple
et sont des imitations réciproques parce que:
et:
Le défi
Étant donné deux entiers positifs et , votre tâche consiste à imprimer ou à renvoyer une valeur véridique si et sont des contre-copies réciproques ou une valeur fausse dans le cas contraire.
Clarifications et règles
- Vous pouvez prendre et dans n'importe quel format raisonnable et sans ambiguïté (par exemple des entiers, des chaînes, des listes de chiffres, ...)
- et peuvent être égaux. Si un nombre est une copie réciproque de lui-même, il appartient à A007532 .
- Au lieu de valeurs véridiques / fausses, vous pouvez renvoyer deux valeurs cohérentes distinctes .
- Pour et , votre code doit se terminer en moins d'une minute . Si cela prend trop de temps pour des valeurs plus élevées, il faut cependant pouvoir les résoudre en théorie.
- C'est du code-golf .
Cas de test
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
la source
la source
17 2401 -> false
. Je suis presque tombé sur ça.Réponses:
Brachylog , 19 octets
Essayez-le en ligne!
Sorties
true.
oufalse.
Explication
la source
2401
contenait un0
qui ne fonctionnait pas avec la façon dont je vérifiais quiI
était strictement positif (parce que je l'ai mappé sur les deuxI
et le chiffre pour économiser des octets)Husk , 17 octets
Essayez-le en ligne! Termine tous les cas de test sous 1000 en environ 11 secondes.
Explication
Pourquoi ça marche
Si nous avonsB = dp11+ ⋯ + dpnn où réje sont des chiffres et des pje sont des nombres entiers positifs, alors répjeje≤ B pour tous les je , ou de manière équivalente pje≤ logréjeB . On peut ignorer le cas réje≤ 1 , puisque exponentiariser 0 ou 1 ne le change pas. Dans mon programme, l'espace de recherche est1 ≤ pje≤ B--√ (pour respecter la restriction de temps; j'utiliserais1 ≤ pje≤ B sinon), donc si nous avons⌊ journalréjeB ⌋ ≤ ⌊ B--√⌋ , alors tout va bien. Siréje≥ 3 , cela vaut pour tous les nombres naturelsB , donc le seul cas dangereux estréje= 2 . Nous avons⌊ journal2B ⌋ > ⌊ B--√⌋ uniquement pourB = 8 . Dans ce cas,23= 8 , mais la recherche ne prend en compte que les exposants1 et2 . Si l'autre numéro numéroUNE contient le chiffre2 , soit il a aussi d'autres chiffres non nuls (donc l'exposant de2 ne peut pas être3 dans la somme), soitA = 2 ⋅ 10k pour certainsk . Dans ce dernier cas,UNE n'est pas une puissance de8 , il ne peut donc pas être un copieur deB de toute façon, et le programme renvoie correctement une valeur falsifiée indépendamment de l'autre calcul.
la source
d
prend l'argument implicite. J'ai clarifié cela dans l'explication. 2. J'ai ajouté un argument pour l'exactitude du programme.Python 2 , 102 octets
Essayez-le en ligne!
la source
05AB1E ,
2622 octetsPrend l'entrée comme une liste (c.
[526,853]
-à-d.).Essayez-le en ligne ou vérifiez la plupart des cas de test de la gamme
[1,999]
.Similaire à mon ancienne réponse ci-dessous, sauf que la
[1,n]
liste est codée en dur[1,100]
et crée la liste cartésienne deux fois, une fois pour chaque mappage d'entrée, qui est le principal goulot d'étranglement en termes de performances.Ancienne réponse de 26 octets, meilleure pour les performances:
Dans cette version, j'ai échangé quelques octets pour améliorer considérablement les performances afin de pouvoir fonctionner
[1,1000]
facilement. Les cas de test contenant des nombres dans la plage[1,9999]
sont effectués en environ une seconde sur TIO. Cas de test de l'ordre[10000,99999]
de 10 à 15 secondes sur TIO. Au-dessus, cela expirera.Essayez-le en ligne ou vérifiez tous les cas de test avec des nombres dans la plage
[1,9999]
.Explication:
la source
Haskell , 77 octets
Essayez-le en ligne!
la source
Perl 6 ,
87 8469 octets-15 octets grâce à nwellnhof!
Essayez-le en ligne!
Bloc de code anonyme qui renvoie True ou False.
Explication:
la source
JavaScript (Node.js) ,
1169289868377 octetsEssayez-le en ligne!
Attendez-vous à l'entrée en tant que
(A)(B)
.la source
J , 56 octets
Essayez-le en ligne!
Oui, définition explicite imbriquée!
Comment ça fonctionne
la source
Python 2 ,
149147143139132118108107106105 octetsEssayez-le en ligne!
-4 octets, merci à Vedant Kandoi
la source
>0
Peut être enlevé.not a
:a<1
.b==0
:b<1
b<0
cela ne fonctionne pasJ, 68 octets
Je pensais que J se comporterait assez bien ici, mais cela a fini par être plus difficile que ce à quoi je m'attendais et j'adorerais toute suggestion pour continuer à jouer au golf ...
Essayez-le en ligne!
REMARQUE: nous soustrayons 3 caractères du nombre de TIO car
f=.
la fonction principale ne compte pasnon golfé
la source