die Bitoperation ist schon mal keine schlechte Idee, allerdings ist das noch nicht sehr konkret.
Ist es nicht? Die Frage ist ja, was man will.
1010b XOR 0111b ist konkret.
1010b AND 0111b und 1010b OR 0111b ist es auch, aber da geht die Vielfalt flöten, vor allem bei mehreren Anwendungen.
Angenommen es geht nur bis 1011b, dann wäre das Ergebnis mit 1101b "zu groß". Das Ergebnis könnte man nun mit einem Überlauf blind und/aber reproduzierbar in den Wertebereich rücken.
liegt ein Zufallswert bei 1 UND
liegt ein Impulswert zwischen 60 und 70 vor UND
ist das Zeichen an Position 2 ein I, würde I zu D mutierenEin wenig Pseudocode
WORT = "IIDE"
IMPULS = random_value(1,100)
RANDOM = random_value(1,100)
if(RANDOM == 1){
if(IMPULS >= 60 AND IMPULS <= 70) AND
if(StringPos(WORT, 2) == "I")
StringVal(WORT,2) = "D" // ändere Zeichen an Pos 2 zu "D"
}
Eine derartige Konstruktion ist aber müßig... besser wäre eine Übertragungsmatrix, schliesslich muss es hunderte Möglichkeiten geben und überdies sollte diese Matrix ebenfalls selbst veränderbar sein. Muss ich mir mal heute abend was einfallen lassen, bringt wohl nichts hier, so eine unkonkrete Fragestellung.
Ein Impulswert zwischen 60 und 70 ist offenbar _ein_ Zustand. Einem Zustand kann man ein Bitmuster zuordnen. Ein Bitmuster kann man blind verarbeiten, auch in einer Matrix wenn man will.
Oder willst Du nur defnierte Mutationen zulassen?
Zum Pseudocode, verschachtelte ifs bieten sich selten an. Automaten könnten auch ein Lösungsweg darstellen. OK, das war jetzt unkonkret.