Veröffentlicht 4. Mai 200718 j 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
4. Mai 200718 j Du musst die geänderten Bits aus K2 ausblenden, und die unveränderten aus K1': K2 := (K2 and ~diff) or (K1' and diff)
4. Mai 200718 j 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.
4. Mai 200718 j Ich nehme aber an du meintest: K1 und nicht K1' Richtig. Ich meinte jedenfalls den neuen Kalender
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.