Created
December 23, 2015 21:59
-
-
Save elipsitz/e523941ad4288e983f95 to your computer and use it in GitHub Desktop.
The Faces of DeNero - (CS61A Scheme Recursive Art Contest, Fall 2015) - Eli Lipsitz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; Scheme Recursive Art Contest Entry | |
;;; | |
;;; Please do not include your name or personal info in this file. | |
;;; | |
;;; Title: The Faces of DeNero | |
;;; (token count: 247) | |
;;; | |
;;; Description: | |
;;; Recursive quadtrees | |
;;; create beautiful image | |
;;; of rather tall man. | |
;;; | |
;;; Created by Eli Lipsitz ([email protected]) | |
( define ( draw ) ( | |
define ( for fn a b ) ( if | |
( < a b ) ( begin ( fn a ) ( define | |
a ( + 1 a ) ) ( for fn a b ) ) ) ) ( | |
define ( multi fn a b w h ) ( for ( lambda | |
( x ) ( for ( lambda ( y ) ( fn x y ) ) b | |
h ) ) a w ) ) ( speed 0 ) ( hideturtle ) | |
( define ( pixel_gray x y c ) ( define c ( | |
/ c 255 ) ) ( pixel x y ( rgb c c c ) ) ) ( | |
define ( denero_pixel x y ) ( define i ( + x | |
( * y 512 ) ) ) ( + ( * 16 ( ord ( chrpos denero | |
( * i 2 ) ) ) ) ( ord ( chrpos denero ( + 1 | |
( * i 2 ) ) ) ) -1649 ) ) ( define ( johnjohn | |
left top s transform ) ( define total 0 ) ( multi | |
( lambda ( x y ) ( set! total ( + total ( transform | |
( denero_pixel x y ) ) ) ) ) left top ( + | |
left s ) ( + top s ) ) ( quotient total ( | |
* s s ) ) ) ( define ( denero_paste left top | |
s tint ) ( multi ( lambda ( x y ) ( pixel_gray | |
x y ( quotient ( * tint ( + 255 ( denero_pixel | |
( quotient ( * 512 ( - x left ) ) s ) | |
( quotient ( * 512 ( - y top ) ) s ) | |
) ) ) 612 ) ) ) left top ( + left | |
s ) ( + top s ) ) ) ( define ( | |
deneroize left top size ) ( define | |
avg ( johnjohn left top size | |
( lambda ( x ) x ) ) ) ( define | |
r2 ( johnjohn left top size ( lambda | |
( x ) ( expt ( - avg x ) 2 ) ) ) ) | |
( if ( or ( < r2 64 ) ( <= size 4 ) ) ( denero_paste | |
left top size avg ) ( begin ( define size ( quotient size 2 | |
) ) ( deneroize left top size ) ( deneroize ( + left size ) top size | |
) ( deneroize left ( + top size ) size ) ( deneroize ( + left size ) ( + | |
top size ) size ) ) ) ) ( deneroize 0 0 512 ) ( exitonclick ) ) ( define denero | |
'snipsnip-a-bunch-of-really-long-data-goes-here-snip-for-size-reasons-its-not-hard-to-generate-snipsnipsnip ) | |
; Please leave this last line alone. You may add additional procedures above | |
; this line. | |
(draw) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment