#ifndef Lsystem_Deja
#define Lsystem_Deja

#include <string>

using namespace std;

namespace Lsystem
{
  const string algea = "{a:ab;b:a;}a";
  const string btree = "{1:11;0:1[0]0;}0";
  const string cantor = "{A:ABA;B:BBB;}A";  //B move forward
  const string koch = "{F:F+F-F-F+F;}F";
  const string sierpinski = "{A:B-A-B;B:A+B+A;}A";
  const string sierpinski2 = "{F:F-G+F+G-F;G:GG;}F-G−G";
  const string dragon = "{X:X+YF;Y:FX-Y;}FX";               //x y = nope
  const string plant = "{X:F-[[X]+X]+F[+FX]-X;F:FF;}X";    //X = nope
  
  const string hilbert = "{A:+BF-AFA-FB+;B:-AF+BFB+FA-;}A";   //F = forward, + - 90deg , AB = nope
  const string levy = "{F:+F--F+;}F";                         //45deg
  const string terdragon = "{F:F+F-F;}F";                     //120deg
  const string ptms = "{0:01;1:10;}0";                        //Prouhet–Thue–Morse sequence   0 forward 1 turn 60deg
  
  string iterate(string);
}

#endif