(プログラムに正解はないので、「プログラム例」だと認識して下さい。)
def circ(len:Int) {
repeat(20) {forward(len) ; left(18) }
}
def circles(len:Int) {
if(len>=10) {
circ(len) ; circles(len-5)
}
}
clear ; circles(30)
// 他の部分に変更なし
def circles(len:Int) {
if(len>=10) {
circ(len) ; forward(-10)
circles(len-5)
}
}
def circx(len:Int) {
repeat(22) {forward(len) ; left(18) }
} //> circx: (len: Int)Unit
def circles(len:Int) {
if(len>=10) {
circx(len) ; circles(len-5)
}
}
clear ; circles(40)
def spiral(len:Int) {
forward(len) ; left(50)
spiral(len+2)
}
clear ; spiral(10)
// このプログラムは停止しない
def spiral(len: Double) {
if (len > 1) {
forward(len); left(50)
spiral(len -1)
}
} //> spiral: (len: Double)Unit
clear; spiral(70)
// 辺長が等比数列になるようにしてみた
def spiral(len:Double) {
forward(len) ; left(30)
spiral(len*1.02)
}
clear ; spiral(1)
// このプログラムは停止しない
// 停止しない無限再帰
def sqSpiral(n:Int) {
repeat(2) {
forward(n+5) ; left
}
repeat(2) {
forward(n-5) ; left
}
sqSpiral(n+10)
}
clear ; right ;
sqSpiral(20)
// 停止しない無限再帰
def gyrate(n:Int) {
repeat(30) {
forward(5) ; left(10)
}
repeat(6) {
forward(2) ; left(10)
}
gyrate(n)
}
clear ; left(130)
gyrate(10)
clear
repeat(5) {
repeat(24) {
forward(10) ; left(12)
}
forward(30)
}