Ergebnis 1 bis 20 von 27

Thema: Bitweise XOR Operation?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #22
    Zitat Zitat von DR_Zeph
    du weißt scheinbar nicht, worauf ich hinaus wollte?

    du brauchst, um den Zustand von 14 Schaltern zu speichern, nur eine Variable, eben wenn du es Dezimal speicherst, da 14 Binäre HI's den maximalen Wert von 16384 annehmen, und das kann man imo in eine 2k sowie 2k3 Variable speichern. Wenn du nun den Schalter umlegst, einfach diesen Wert umrechnen und gut ist.
    Naja, die Lösung selbst habe ich schon lange fertig. Allerdings habe ich für den Zustand der Schalter keine Variable, sondern 14 einzelne Switches verwendet, weil diese einfacher abzufragen sind, um die Grafiken für die Schalter bewegen zu lassen. Der Zustand des Rätsels ist aber das einzige, was ich mit Switches speichere. Für den Zustand brauche ich überhaupt keine Variable, aber ich brauche 14 Variablen, um zu bestimmen, welche Switches welcher der 14 Schalter switcht..

    Zitat Zitat
    die Negation deines Lösungsweges sollte imo kein Prob mittels eines Cycels sein.
    Tja, der Lösungsweg ist nunmal zufällig. Aber ich erkläre jetzt mal konkret, was ich codetechnisch gemacht habe, um die Variablen zu erzeugen: Ich habe zunächst eine zufällige Variable zwischen 0 und 16383 erstellt, die bitweise definiert, welche Schalter für die Lösung relevant sind, also gedrückt werden müssen, und welche nicht. Diese nenne ich die Relevanzvariable. Mit Hilfe dieser Variable habe ich dann die Nummern der letzten beiden relevanten Schalter ausfindig gemacht (hier ist das Problem mit dem Rückwärtsentziffern). Anschliessend habe ich für jede Variable eine Zahl aus zufälligen Bits zusammengesetzt und zwar mit Hilfe von mehreren Loops und Pointern. In dieser Routine musste ich auch einbauen, dass das Bit, welches den Schalter der entsprechenden Variablen selbst darstellt, auf jeden Fall 1 sein muss, damit der bezogene Schalter auf jeden Fall umgeschaltet wird. Bei der Variable des vorletzten relevanten Schalters habe ich zunächst den Lösungsweg bis dahin berechnet. Konkret habe ich die Variablen aller relevanten Schalter mit der XOR-Operation berechnet und in die Lösungsvariable gespeichert. Diese wird dann wieder aufgesplittet, um das Bit des letzten relevanten Schalters in der Variable des vorletzten relevanten Schalters gleich zu setzen wie das Bit der bisherigen Lösungsvariable (dies ist notwendig, damit der letzte Schalter zu diesem Zeitpunkt der Lösung auf jeden Fall nicht umgelegt ist). Anschliessend habe ich beim letzten relevanten Schalter zunächst nochmals eine XOR-Operation durchgeführt und zwar mit der Lösungsvariable und der Variable des vorletzten Schalters. Die Negation der Lösungsvariable bis dahin muss dann dem Bitmuster des letzten relevanten Schalters entsprechen, damit dieser alle zu diesem Zeitpunkt nicht umgelegten Schalter umlegt. Negiert wird ganz einfach, indem die Differenz der Zahl und 16383 berechnet wird.

    Zitat Zitat
    So, zu deinem Rückwärts entziffern frag ich mich wo dein Prob ist, Modul und Division sollten dir bekannt sein, und damit ist es in meinem Augen kein Problem, eine Variable vorwärts sowie Rückwärts in ihre Einzellstellen zu zerlegen. Wozu du nun Pointer mit ins Spiel bringst, ist mir nun ein Rätsel.
    Du hast mich nicht verstanden. Die Pointer brauche ich, um zu speichern, welche der 14 Schalter die letzten beiden relevanten Schalter sind und diese brauche ich wie oben beschrieben für die Berechnung ihrer eigenen Variablen, damit diese zusammen mit den anderen relevanten Schaltern den Lösungsweg ergeben können.

    Und meine Frage ist unbeantwortet. Vorwärts aufsplitten ist kein Problem, da nehme ich einfach direkt /2 und mod2. Ich will aber rückwärts aufsplitten können.

    EDIT:
    Ich sehe beim nochmals durchlesen gerade, dass ich mich falsch ausgedrückt habe: Das Problem ist die Berechnung für das Rückwärts-entziffern (also vom hohen zum tiefen Bit).

    Geändert von TheBiber (12.08.2005 um 17:11 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •