lambdaway
::
goldenrect
4
|
list
|
login
|
load
|
|
_img ../lambdaspeech/data/Animation_Fibonacci.gif _h1 golden rect {pre '{def fibonacci {lambda {:n} {if {< :n 2} then 1 else {+ {fibonacci {- :n 1}} {fibonacci {- :n 2}}}}}} -> {def fibonacci {lambda {:n} {if {< :n 2} then 1 else {+ {fibonacci {- :n 1}} {fibonacci {- :n 2}}}}}} '{def F {A.new {S.map fibonacci {S.serie 0 10}}}} -> {def F {A.new {S.map fibonacci {S.serie 0 10}}}} = {F}¥ '{def goldrect {lambda {:x :y :a} {turtle :x :y 0 {S.map {{lambda {:a :i} {square :a {A.get :i {F}}} } :a} {S.serie 10 0 -1}}}}} -> {def goldrect {lambda {:x :y :a} {turtle :x :y 0 {S.map {{lambda {:a :i} {square :a {A.get :i {F}}}} :a} {S.serie 10 0 -1}}}}} '{def square {lambda {:a :d} M:d T90 M:d T90 M:d T90 M:d T90 M:d T90 M:d T:a}} -> {def square {lambda {:a :d} M:d T90 M:d T90 M:d T90 M:d T90 M:d T90 M:d T:a}} '{def stroke {lambda {:c} stroke=":c" stroke-width="1" fill="transparent"}} -> {def stroke {lambda {:c} stroke=":c" stroke-width="1" fill="transparent"}} } _h2 display 1 {pre '{center {svg {@ width="500" height="500" style="background:#444"} {g {@ transform="scale(2.5,2.5)" } {path {@ d="M {goldrect 10 50 -15}" {stroke #888}}} }}} } {center {svg {@ width="500" height="500" style="background:#444"} {g {@ transform="scale(2.5,2.5)" } {path {@ d="M {goldrect 10 50 -15}" {stroke #888}}} }}} _h2 display 2 {pre '{center {svg {@ width="500" height="500" style="background:#444"} {path {@ d="M {goldrect 200 10 -15}" {stroke #888}}} {path {@ d="M {goldrect 200 10 0}" {stroke #fff}}} {path {@ d="M {goldrect 200 110 -30}" {stroke #888}}} {path {@ d="M {goldrect 200 110 -60}" {stroke #888}}} {path {@ d="M {goldrect 200 110 -45}" {stroke #fff}}} {path {@ d="M {goldrect 200 210 -75}" {stroke #888}}} {path {@ d="M {goldrect 200 210 -105}" {stroke #888}}} {path {@ d="M {goldrect 200 210 -90}" {stroke #fff}}} {path {@ d="M {goldrect 100 210 -120}" {stroke #888}}} {path {@ d="M {goldrect 100 210 -150}" {stroke #888}}} {path {@ d="M {goldrect 100 210 -135}" {stroke #fff}}} {path {@ d="M {goldrect 100 10 -165}" {stroke #888}}} {path {@ d="M {goldrect 100 10 -180}" {stroke #fff}}} }} } {center {svg {@ width="500" height="500" style="background:#444"} {path {@ d="M {goldrect 200 10 -15}" {stroke #888}}} {path {@ d="M {goldrect 200 10 0}" {stroke #fff}}} {path {@ d="M {goldrect 200 110 -30}" {stroke #888}}} {path {@ d="M {goldrect 200 110 -60}" {stroke #888}}} {path {@ d="M {goldrect 200 110 -45}" {stroke #fff}}} {path {@ d="M {goldrect 200 210 -75}" {stroke #888}}} {path {@ d="M {goldrect 200 210 -105}" {stroke #888}}} {path {@ d="M {goldrect 200 210 -90}" {stroke #fff}}} {path {@ d="M {goldrect 100 210 -120}" {stroke #888}}} {path {@ d="M {goldrect 100 210 -150}" {stroke #888}}} {path {@ d="M {goldrect 100 210 -135}" {stroke #fff}}} {path {@ d="M {goldrect 100 10 -165}" {stroke #888}}} {path {@ d="M {goldrect 100 10 -180}" {stroke #fff}}} }} _h2 display 3 {pre '{center {svg {@ width="500" height="500" style="background:#fff"} {g {@ transform="translate(250,-50) rotate(45)" } {S.map {lambda {:i} {path {@ d="M {goldrect 100 100 :i}" {stroke #000}}} } {S.serie 0 360 10}}}}} } {center {svg {@ width="500" height="500" style="background:#fff"} {g {@ transform="translate(250,-50) rotate(45)" } {S.map {lambda {:i} {path {@ d="M {goldrect 100 100 :i}" {stroke #000}}} } {S.serie 0 360 10}}} }} {center Big Brother is watching you} _p To be compared with a similar code found in page 132 of " Racket Programming the Fun Way", James W. Stelly {pre ; function to compute F(n) (define (F n) (define (f a b cnt) (if (= cnt 0) b (f (+ a b) a (- cnt 1)))) (f 1 0 n)) ; function to draw the tiling (define (draw-n n) (let* ([fn (F n)] [sn (* UNIT fn)] [fn1 (F (sub1 n))] [sn1 (* UNIT fn1)] [n-mod-4 (remainder n 4)]) (cond [(< n 2) #f] ; do nothing tiles already drawn [(= n 2) (values (+ UNIT START-X) START-Y START-X START-Y)] [else (let-values ([(x1 y1 x2 y2) (draw-n (sub1 n))]) (let-values ([(x y) (case n-mod-4 [(0) (values (- x1 sn) y1)] [(1) (values x1 (+ y1 sn1))] [(2) (values (+ x1 sn1) y2)] [(3) (values x2 (- y1 sn))])]) (draw-tile x y sn) (values x y x1 y1)))]))) (define (draw-tiles n) (draw-tile START-X START-Y UNIT) (draw-tile (+ UNIT START-X) START-Y UNIT) (draw-n n) (print tiling)) Listing 4-1: Fibonacci with Tiling » } _h2 see also _img http://b2b3.free.fr/confs/data/modulor_3/palacio_fibonacci.jpg _img http://marty.alain.free.fr/architecture/immeuble/palazzio.JPG _img https://s2.qwant.com/thumbr/700x0/4/7/1a3e815ff8720539809241e45bbb973ab285be095dab1f216b8a6f725eeda8/1200px-Punched_card.jpg?u=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Ff%2Ff3%2FPunched_card.jpg%2F1200px-Punched_card.jpg&q=0&b=1&p=0&a=1 _img https://s2.qwant.com/thumbr/0x380/5/4/ba73a881eec5a5456e154b86d52790d12b9dfe159aa0cdab3a36554a05327d/sd-me-zoo-elephant-20170315.jpg?u=https%3A%2F%2Fwww.trbimg.com%2Fimg-58c9ed44%2Fturbine%2Fsd-me-zoo-elephant-20170315&q=0&b=1&p=0&a=1
lambdaway v.20211111