MikeVader Geschrieben 4. Mai 2007 Geschrieben 4. Mai 2007 Preamble: Unser Projekt arbeitet mit Kalendern die als Byte Array mit einem Startdatum implementiert sind. Dabei repräsentiert jedes Byte eine Woche. Die 1 & 0en sagen aus ob das Objekt an dem der Kalender hängt an diesem Tag aktiv ist oder nicht. Problem: Ein bestimmter Typ von Objekt (:A) hat nun zwei Kalender (K1 und K2). Alle Änderungen in K1 sollen auch in K2 übernommen werden wobei die beiden Kalender unterschiedlich aussehen können. Meine erste Idee war das typische vorgehen mit XOR-Operationen, jedoch kann dies zum falschen Resultat in K2 führen. Mein Lösungsansatz: Ich habe zwar eine Lösung, jedoch halte ich sie für sehr unperformant, was nicht gerade ein gutes Zeichen ist und ich hoffe ich war einfach zu dämlich eine bessere Lösung zu finden. Also: diff := K1 xor K1' for each bit in diff if bit=1 then K2 := K1 K1 steht für den neuen (aktuellen) Kalender und K1' für den alten
Klotzkopp Geschrieben 4. Mai 2007 Geschrieben 4. Mai 2007 Du musst die geänderten Bits aus K2 ausblenden, und die unveränderten aus K1': K2 := (K2 and ~diff) or (K1' and diff)
MikeVader Geschrieben 4. Mai 2007 Autor Geschrieben 4. Mai 2007 Perfekt. Mein Gott eigentlich so simpel. Weshalb verlernt man nur so schnell Bool. Alg. nach dem Studium? :-) Vielen für die Hilfe. P.S.: Ich nehme aber an du meintest: K1 und nicht K1' ... !diff) or (K1 and diff) da K1' ja der alte Kalender (ohne Änderungen) wär. Allerdings macht es mehr Sinn wenn man die K1 und K1' vertauscht damit es gängigen Mahte Terminologien entspricht.
Klotzkopp Geschrieben 4. Mai 2007 Geschrieben 4. Mai 2007 Ich nehme aber an du meintest: K1 und nicht K1' Richtig. Ich meinte jedenfalls den neuen Kalender
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden