Skip to content

Instantly share code, notes, and snippets.

@elipsitz
Created December 23, 2015 21:59
Show Gist options
  • Save elipsitz/e523941ad4288e983f95 to your computer and use it in GitHub Desktop.
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
;;; 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