Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- inputKeys = {
- "a",
- "b",
- "c",
- "d",
- "e",
- "f",
- "g",
- "h",
- "i",
- "j",
- "k",
- "l",
- "m",
- "n",
- "o",
- "p",
- "q",
- "r",
- "s",
- "t",
- "u",
- "v",
- "w",
- "x",
- "y",
- "z",
- "\"",
- "(",
- ")"
- }
- goal = "print(\"hello world\")"
- function generateInput(thoughts, keys, fitness)
- print(#thoughts..":"..fitness)
- if not #thoughts then
- math.randomseed(thoughts..keys..fitness)
- return keys[math.random(1, #keys)]
- elseif #thoughts > fitness then
- return false
- else
- math.randomseed(thoughts..keys..fitness)
- return keys[math.random(1, #keys)]
- end
- end
- function generateFitness(thoughts, goal)
- fit = 0
- for i,v in pairs(thoughts) do
- if v == goal:sub(i,i) then
- fit = fit + 1
- else
- return fit
- end
- end
- end
- function generateLife()
- return {}, 0
- end
- term.clear()
- term.setCursorPos(1,1)
- term.setCursorBlink(true)
- while true do
- if not thoughts and not fitness then
- thoughts = {}
- fitness = 0
- write("> ")
- elseif generateFitness(thoughts, goal) == #goal then
- print("hello world")
- break
- else
- write("> ")
- for i=1,#thoughts do
- write(thoughts[i])
- sleep(1)
- end
- end
- alive = true
- repeat
- fitness = generateFitness(thoughts, goal)
- inp = generateInput(thoughts, inputKeys, fitness)
- if inp then
- thoughts[#thoughts + 1] = inp
- write(inp)
- sleep(1)
- else
- write("\n")
- print("Died at "..fitness.." fitness.")
- alive = false
- end
- until alive == false
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement