langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
|
|
@ -0,0 +1,21 @@
|
|||
target = "METHINKS IT IS LIKE A WEASEL";
|
||||
alphabet = CharacterRange["A", "Z"]~Join~{" "};
|
||||
fitness = HammingDistance[target, #] &;
|
||||
Mutate[parent_String, rate_: 0.01, fertility_Integer: 25] := Module[
|
||||
{offspring, kidfits, gen = 0, alphabet = CharacterRange["A", "Z"]~Join~{" "}},
|
||||
offspring = ConstantArray[Characters[parent], fertility];
|
||||
Table[
|
||||
If[RandomReal[] <= rate, offspring[[j, k]] = RandomChoice[alphabet]],
|
||||
{j, fertility}, {k, StringLength@parent}
|
||||
];
|
||||
offspring = StringJoin[#] & /@ offspring;
|
||||
kidfits = fitness[#] & /@ Flatten[{offspring, parent}];
|
||||
Return[offspring[[First@Ordering[kidfits]]]];
|
||||
];
|
||||
|
||||
mutationRate = 0.02;
|
||||
parent = StringJoin[ alphabet[[RandomInteger[{1, Length@alphabet}, StringLength@target]]] ];
|
||||
results = NestWhileList[Mutate[#, mutationRate, 100] &, parent, fitness[#] > 0 &];
|
||||
fits = fitness[#] & /@ results;
|
||||
results = Transpose[{results, fits}];
|
||||
TableForm[results[[;; ;; 2]], TableHeadings->{Range[1, Length@results, 2],{"String","Fitness"}}, TableSpacing -> {1, 2}]
|
||||
Loading…
Add table
Add a link
Reference in a new issue