import ; AllowedChars := " ABCDEFGHIJKLMNOPQRSTUVWXYZ"; initializeParent(randChars(1)) := AllowedChars[randChars]; Fitness(target(1), current(1)) := let fit[i] := true when target[i] = current[i]; in size(fit); Mutate(letter(0), rate(0), randRate(0), randChar(0)) := letter when randRate > rate else AllowedChars[randChar]; evolve(target(1), parent(1), C(0), P(0), rateRands(2), charRands(2)) := let mutations[i] := Mutate(parent, P, rateRands[i], charRands[i]) foreach i within 1 ... C; fitnesses := Fitness(target, mutations); in mutations[firstIndexOf(fitnesses, vectorMax(fitnesses))];