Die Funktion replace im untenstehenden Programm ersetzt im String string alle Vorkommnisse von find mit replace. Die Funktion interpret führt die Befehle F, L und R in einem String aus und steuert Kara entsprechend durch die Gegend. Der Parameter stepLength bestimmt dabei, wie "lange" ein Schritt von Kara sein soll, das heisst, über wieviele Felder er sich erstrecken soll. Das Hauptprogram definiert die Ersetzungsregel (GENERATOR_FIND und GENERATOR_REPLACE) sowie den String, auf den diese Regel angewendet werden soll ("string"). ITERATIONS gibt an, wie oft die Regel angewendet werden soll. Durch die Veränderung dieser Parameter entstehen faszinierende Fraktale!

def replace (string, find, replace)
  result = ""
  index = 0

  while index <= string.length-find.length
    currentSubString = string[index..index+find.length-1]

    if currentSubString == find
      result += replace
      index  += find.length
    else
      result += currentSubString
      index += 1
    end
  end

  result
end

def interpret (tools, kara, string, stepLength)
  for i in (0..string.length-1)
    if string[i..i] == 'F'
      forward(kara, stepLength)
    elsif string[i..i] == 'L'
      kara.turnLeft
    elsif string[i..i] == 'R'
      kara.turnRight
    end
  end
end


GENERATOR_FIND = "F"
GENERATOR_REPLACE = "FLFRFRFLF"
ITERATIONS = 3

string = "FF"

for i in (0..ITERATIONS-1)
  world.clearAll
  kara.setPosition (0, world.getSizeY-1)
  interpret (tools, kara, string, 3)
  tools.sleep(500)
  string = replace (string, GENERATOR_FIND, GENERATOR_REPLACE)
end

world.clearAll
kara.setPosition (0, world.getSizeY-1)
interpret (tools, kara, string, 3)