Die meisten binäre Kombinationen von 4 bits, mit der einzigen änderung pro bit
Habe ich 4 binäre bits
Bit 3 Bit 2 Bit 1 Bit 0
Normalerweise die Antwort ist einfach: 2^4, also 16 verschiedene Kombinationen; und wäre es in etwa so aussieht wie die folgende:
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Jedoch Das LSB (Bit 0) ändert seinen Zustand bei jeder iteration.
Brauche ich einen Algorithmus, wo der Zustand eines bit-änderungen, die nur einmal durch alle Iterationen; ich.e, ich brauche alle meine bits zu handeln, wie der MSB (Bit 3).
Wie kann ich dies tun?
Bearbeiten
Es scheint, dass die meisten Menschen nähern sich einander an, wobei es nur 5 mögliche Lösungen. Allerdings setzt dies Voraus es ist ein Ausgangspunkt für die Wert-und einen Endpunkt. Das ist egal, so werde ich Ihnen eine Reale Welt Szenario besser zu erklären.
Angenommen ich habe einen digitalen Wecker, der mir 4 Ausgänge. Jeder Ausgang kann so programmiert werden, gehen zu einer bestimmten Zeit ein-und ausschalten zu einer bestimmten Zeit und programmiert sind, unabhängig von einander, zB. Ich kann die Ausgabe eines Programms 1 gehen Sie auf bei 1 Uhr und bei 3 Uhr, ich kann zwar Programm-Ausgang 2 gehen auf 7 Uhr und bei 2 Uhr. Es gibt keine Einschränkungen, wie lange jeder Ausgang kann an bleiben.
Nun will ich Haken dieser Wecker an einen computer und bekommen so nah wie möglich an die aktuelle korrekte Zeit. ich.e Wenn die Uhr sagt die Zeit 2:15 pm, mein computer weiß, dass der alarm innerhalb von 12 pm bis 6 pm-Bereich zum Beispiel. Ich möchte in der Lage sein, um die kleinste mögliche Bandbreite. Was ist der kleinste mögliche Bandbreite ich bekommen kann?
Bits sind normalerweise nummeriert in einer Weise, dass LSB ist das bit 0, lassen Sie mich Bearbeiten, dass für Sie. 🙂
Ich habe zu einer Lösung zu kommen, aber nicht mit dem Zustand, den es in der Frage denn ich möchte sehen, was andere Leute mit kommen. Eigentlich habe ich, dies zu nutzen, einige computer-Schnittstellen.
Die computer haben Ihre eigene innere Uhr? Wenn dem so ist, dann ist es weiß wie spät es ist, und muss nicht den Wecker. Wenn nicht, dann wie 4 bits aus dem Wecker geben Sie dem computer Informationen über die Zeit?
Auch Sie ursprünglich angegeben, dass jeder etwas ändern kann nur einmal, sondern in Ihrer "Uhr" - Beispiel, jedes bit zweimal ändert. Zum Beispiel, die ursprünglich aus, um 1 Uhr, wieder ab um 3 Uhr morgens.
InformationsquelleAutor darudude | 2009-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Daher können Sie bei den meisten 4 der Zustand ändert, und bei den meisten 5 verschiedene Werte.
Beispiel:
Edit:
Sehr gut, wir formulieren aus, was du meinst, anstatt aus dem, was Sie sagen.
Daher können Sie höchstens 8 Zustand ändert und maximal 8 verschiedene Werte (seit dem letzten Zustand zu ändern, zwangsläufig bringt alle bits wieder in Ihren ursprünglichen Zustand)
Beispiel:
So, durch das setzen der Ausgänge: 3 AM - 3 PM, 6 AM - 6 PM 9 AM - 9 PM und Mittag - Mitternacht, können Sie bestimmen, welche 3-Stunden-Zeitraum, ist es von den Ausgängen. Ich würde vorschlagen, einstecken Drähte in die visuelle Ausgabe statt.
bingo! dies ist, was ich emant. Ich habe 8 Kombinationen, wie auch, ich hatte gehofft, ich könnte besser werden.
InformationsquelleAutor zaratustra
Du willst ein Gray-Code. Schauen Sie etwa auf halbem Weg hinunter zum "Aufbau eines n-bit-gray-code".
Ja, ich würde falsch verstanden, die Frage - sondern "nur ändern, jedes bit einmal" ist eine ziemlich dumme Beschränkung mit einer trivial-Lösung.
InformationsquelleAutor Jon Skeet
Ich glaube, es ist unmöglich, Zyklus, obwohl alle möglichen bit-mustern, die mit einer solchen Beschränkung.
Wenn Sie ein n-bit-Idee, können Sie Rad fahren, wenn insgesamt (n+1) Mitgliedstaaten, bevor er zu flip ein bisschen haben Sie bereits umgedreht.
Zum Beispiel, in einem 3-bit-Beispiel, wenn Sie beginnen mit 111 erhalten Sie
Und dann bist du gezwungen, flip-Sie haben bereits umgedreht, um einen neuen Staat.
InformationsquelleAutor Andrei Krotkov
Basierend auf Ihren Wecker. B. ich nehme an, Sie brauchen, um zu beenden auf der combiation Sie begann auf, und jedes bit kann Gefahren werden, dann nur einmal ab, z.B.
Die Anzahl der Schritte ist zweimal die Anzahl der bits, also mit 4 bit können Sie die aktuelle Uhrzeit innerhalb eines 3-Stunden-Bereich.
InformationsquelleAutor foxy
Du wollen, dass jeder etwas zu ändern, nur einmal?
Wie:
In diesem Fall können Sie eine simple Theke, wo der delta mit 2 multipliziert jeder iteration (oder shift left).
InformationsquelleAutor Toon Krijthe
Wenn Gamecat bekam Sie richtig,
Ihre bitmask Werte:
oder mit Verschiebungen:
(1 << i) - 1 for i in 0..
InformationsquelleAutor blabla999
"Ich brauche ein algorithm wo der Staat etwas ändert nur einmal durch alle Iterationen"
Wenn die obige Aussage ist wörtlich zu nehmen, dann gibt es nur fünf Staaten, die pro iteration ist, wie bereits in anderen posts.
Wenn die Frage ist "Wie viele mögliche Sequenzen können erzeugt werden?", dann:
Ist der erste Staat immer 0000?
Wenn nicht, dann haben Sie für die 16 möglichen anfangszustände.
Bestellen egal?
Wenn ja, dann haben Sie 4! = 24 Möglichkeiten zu wählen, welche bits zu kippen ersten.
So, das gibt ein total von 16*24 = 384 möglichen Sequenzen generiert werden können.
InformationsquelleAutor mbeckish
Rückblick auf die ursprüngliche Frage, ich denke, ich verstehe, was du meinst
einfach was ist die kleinste Anzahl an bits, die Sie verwenden können, um Programm eine Uhr, basierend auf der Menge der möglichen bit-Kombinationen
die erste Frage ist, wie viele Sequenzen sind erforderlich.
60Secs x 60 Minuten x 24 Stunden = 86400 (Kombinationen erforderlich)
der nächste Schritt ist, um herauszufinden, wie viele bit werden benötigt, um zu produzieren mindestens 86400 Kombinationen
wenn jemand weiß, die Berechnung zu
wie viele bits erzeugen kann 86400 Kombinationen dann ist das Ihre Antwort.
hoffentlich gibt es eine Formel, die online irgendwo für diese Berechnung
InformationsquelleAutor Daniel Lee
Hier ist ein Beispiel, wie Sie halten kann ein wenig von dem, nur einmal umgedreht. Nicht zu wissen, alle parameter des dir-Systems ist es nicht einfach, um ein genaues Beispiel, aber hier ist man sowieso.
Spiegeln mit dieser Funktion wird nur ein flip auf jedes bit.
InformationsquelleAutor eaanon01