Gestern habe ich beim Spielen mit meinem Kind die Nummer in seiner Spielzeugeisenbahn bemerkt:
Wir haben also , die sich in oder
Einfache Herausforderung: Geben Sie bei einer nicht negativen Zahl als Eingabe konsistente Wahrheits- und False-Werte zurück, die angeben, ob die Zeichenfolgendarstellung der Zahl (in Basis 10 und ohne führende Nullen) in Zahlen mit Zweierpotenzen aufgeteilt werden kann .
Beispiele:
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
Das ist Code-Golf , also kann der kürzeste Code für jede Sprache gewinnen!
101
(falsch wegen der 0) ... oder sollte das noch stimmen ( 1 - 01
)?
101
Fall mit den aktuellen Antworten getestet und sie alle kehren zurück true
, weil es in 1-01
zwei Potenzen aufgeteilt werden kann. Daher halte ich diesen Fall für wahr.
log2(n)
nach dem Komma keine Dezimalstellen stehen. 2) Überprüfen Sie, ob n AND (n-1) == 0
. 3) Erstellen Sie eine Liste mit Quadraten und prüfen Sie, ob sie n
in dieser Liste enthalten sind.
int
(4 Bytes) zu beschränken, aber eigentlich macht es mir nichts aus, wenn Ihr Code keine sehr großen Zahlen unterstützt. Geben Sie in Ihrer Antwort einfach die Einschränkungen Ihres Codes an.