【问题标题】:Painter example in SICPSICP 中的 Painter 示例
【发布时间】:2021-06-29 20:57:06
【问题描述】:

SICP 2.2.4 中的“Painter”示例非常有趣,它提供了创建漂亮的 Escher 式绘画的方法。例如,递归右拆分过程可以这样完成:

(define (right-split painter n)
  (if (= n 0)
      painter
      (let ((smaller (right-split painter (- n 1))))
         (beside painter (below smaller smaller)))))

但是,这些示例都无法实际运行或可视化。是否可以使用任何类型的“输入画家”(甚至是 ASCI 文本/艺术,如圆形或正方形)来说明如何以完整的方式实际使用这些程序?

【问题讨论】:

    标签: scheme lisp racket sicp


    【解决方案1】:

    Racket 可以提供帮助:

    #lang sicp
    
    (#%require sicp-pict)
    
    (define (right-split painter n)
      (if (= n 0)
          painter
          (let ((smaller (right-split painter (- n 1))))
             (beside painter (below smaller smaller)))))
    
    (paint (right-split einstein 2))
    

    【讨论】:

    • 如果您在 sicp 语言中使用sicp-pict 时遇到问题,请使用#lang racket,然后在该章节中使用(require sicp-pict)
    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 2022-09-24
    • 2015-03-04
    • 2021-11-27
    • 2021-08-21
    • 2023-01-07
    • 1970-01-01
    相关资源
    最近更新 更多