ludus-scripts/binary_tree.ld

49 lines
652 B
Plaintext
Raw Normal View History

& Example 2: fractal (binary) tree
& from https://en.wikipedia.org/wiki/L-system
box states = []
fn push! () -> {
update! (states, append (_, turtle_state ()))
}
fn pop! () -> {
let state = do states > unbox > last
update! (states, butlast)
penup! ()
load_turtle_state! (state)
}
fn branch! () -> {
pc! (colors :olive)
pw! (4)
fd! (20)
}
fn one! {
(0) -> {
branch! ()
}
(n) -> {
one! (dec (n))
one! (dec (n))
}
}
fn zero! {
(0) -> branch! ()
(n) -> {
one! (dec (n))
push! ()
lt! (inv (10))
zero! (dec (n))
pop! ()
rt! (inv (10))
zero! (dec (n))
}
}
zero! (7)
hideturtle! ()