Hier, alors que je jouais avec mon enfant, j'ai remarqué le numéro dans son petit train:
Donc, nous avons qui peuvent être divisés en ou
Défi si simple: à partir d’un nombre non négatif en entrée, restituez des valeurs cohérentes de véracité et de falsey qui indiquent si la représentation sous forme de chaîne du nombre (en base 10 et sans zéros non majuscules) peut être en quelque sorte divisée en nombres qui ont une puissance de 2 .
Exemples:
4281 truthy (4-2-8-1)
164 truthy (16-4 or 1-64)
8192 truthy (the number itself is a power of 2)
81024 truthy (8-1024 or 8-1-02-4)
101 truthy (1-01)
0 falsey (0 cannot be represented as 2^x for any x)
1 truthy
3 falsey
234789 falsey
256323 falsey (we have 256 and 32 but then 3)
8132 truthy (8-1-32)
Tests for very large numbers (not really necessary to be handled by your code):
81024256641116 truthy (8-1024-256-64-1-1-16)
64512819237913 falsey
C'est du code-golf , alors que le code le plus court pour chaque langue gagne!
101
(fausseté à cause du 0) ... ou cela devrait-il toujours être vrai ( 1 - 01
)?
101
cas avec les réponses actuelles et elles nous sont toutes retournées true
, car il peut être divisé en 1-01
deux puissances de 2, je vais donc considérer ce cas comme une vérité.
log2(n)
ne contient pas de chiffres décimaux après la virgule. 2) Vérifiez si n AND (n-1) == 0
. 3) Créez une liste de carrés-nrs et vérifiez si n
est dans cette liste.
int
type standard (4 octets), mais en réalité cela ne me dérange pas si votre code ne prend pas en charge les très grands nombres. Indiquez simplement dans votre réponse les limites de votre code.