/*
* Name: Chains
* Author: Andreas J. Weiss
* Date: 15.11.2013
* Description:
* Lindenmayer system with 3 words.
* Use 10 to 15 iterations, 13 is optimal.
*/
#include
#include
#include
#define FORWARD ifm::forward();
#define LEFT(A) ifm::left(A);
#define RIGHT(A) ifm::right(A);
// Prototypes
void A(unsigned int i);
void B(unsigned int i);
void C(unsigned int i);
void A(unsigned int i)
{
if( i <= 0 ) return;
A(i - 1);
FORWARD
C(i - 1);
FORWARD
B(i - 1);
FORWARD
A(i - 1);
}
void B(unsigned int i)
{
if( i <= 0) return;
A(i - 1);
LEFT(60)
B(i - 1);
}
void C(unsigned int i)
{
if( i <= 0) return;
B(i - 1);
A(i - 1);
RIGHT(60)
}
int main (int argc, char **argv)
{
// Allow the iteration count to be passed as an argument
if(argc == 2)
{
std::cout << "Number of iterations = " << atoi(argv[1]) << "\n";
A(atoi(argv[1]));
}
else
{
std::cout << "Number of iterations =? ";
unsigned int n;
std::cin >> n;
A(n);
}
return 0;
}