Gegeben seien zwei beliebig genaue dezimale Zahlen 0 ≤ x < y ≤ 1, berechnen die kürzeste (in Ziffern) binäre Zahl b so dass x ≤ b < y .
Geben Sie die Binärziffern von b nach dem Binärpunkt als Array oder als Zeichenfolge aus Nullen und Einsen aus. Beachten Sie, dass das leere Array 0,0 bedeutet, da nachgestellte Nullen gelöscht werden. Dies stellt auch sicher, dass es für jeden Bereich eine eindeutige richtige Antwort gibt.
Wenn Sie mit binären Bruchzahlen nicht vertraut sind, funktionieren sie genau wie Dezimalzahlen:
Base 10 0.625 = 0.6 + 0.02 + 0.005 = 6 x 10^-1 + 2 x 10^-2 + 5 x 10^-3
Base 2 0.101 = 0.1 + 0.00 + 0.001 = 1 x 2^-1 + 0 x 2^-2 + 1 x 2^-3
| | |
v v v
Base 10 0.625 = 0.5 + 0 + 0.125
Integrierte Funktionen, die dieses Problem trivialisieren, sind nicht zulässig.
Beispiele:
0.0, 1.0 -> ""
0.1, 1.0 -> "1"
0.5, 0.6 -> "1"
0.4, 0.5 -> "0111"
Der kürzeste Code gewinnt.
(0.98983459823945792125172638374187268447126843298479182647, 0.98983459823945792125172638374187268447126843298479182648)
? Auch Testfälle wären hilfreich.