lsystem
Version:
A module that lets you create L-systems, which will take rules, then use those rules to transform strings into other strings.
84 lines (82 loc) • 1.6 kB
JavaScript
var systems = [
{
name: 'Algae',
initialState: 'A',
rules: {
A: 'AB',
B: 'A'
},
expectedStates: [
'A',
'AB',
'ABA',
'ABAAB',
'ABAABABA',
'ABAABABAABAAB',
'ABAABABAABAABABAABABA',
'ABAABABAABAABABAABABAABAABABAABAAB'
]
},
{
name: 'Pythogoras Tree',
initialState: '0',
constants: '[,]',
rules: {
'0': '1[0]0',
'1': '11'
},
expectedStates: [
'0',
'1[0]0',
'11[1[0]0]1[0]0',
'1111[11[1[0]0]1[0]0]11[1[0]0]1[0]0'
]
},
{
name: 'Cantor set',
initialState: 'A',
rules: {
'A': 'ABA',
'B': 'BBB'
},
expectedStates: [
'A',
'ABA',
'ABABBBABA',
'ABABBBABABBBBBBBBBABABBBABA'
]
},
{
name: 'Koch curve',
initialState: 'F',
constants: '+-',
rules: {
'F': 'F+F-F-F+F'
},
expectedStates: [
'F',
'F+F-F-F+F',
'F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F',
'F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F+' +
'F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F-' +
'F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F-' +
'F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F+' +
'F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F'
]
},
{
name: 'Sierpinski triangle',
initialState: 'A',
constants: '+-',
rules: {
A: '+B-A-B+',
B: '-A+B+A-'
},
expectedStates: [
'A',
'+B-A-B+',
'+-A+B+A--+B-A-B+--A+B+A-+'
]
}
];
module.exports = Object.freeze(systems);