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 Zitieren
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) Zitieren
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. Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.