26 lines
568 B
Elixir
26 lines
568 B
Elixir
defmodule Speller do
|
|
@behaviour Problem
|
|
alias Types.Chromosome
|
|
|
|
def genotype do
|
|
genes =
|
|
Stream.repeatedly(fn -> Enum.random(?a..?z) end)
|
|
|> Enum.take(34)
|
|
%Chromosome{genes: genes, size: 34}
|
|
end
|
|
|
|
def fitness_function(chromosome) do
|
|
target = "supercalifragilisticexpialidocious"
|
|
guess = List.to_string(chromosome.genes)
|
|
String.jaro_distance(target, guess)
|
|
end
|
|
|
|
def terminate?([best | _]), do: best.fitness == 1
|
|
|
|
end
|
|
|
|
soln = Genetic.run(Speller)
|
|
|
|
IO.write("\n")
|
|
IO.inspect(soln)
|