SICP:2.40 2.41

#lang racket

(define (accumulate op initial seq)
  (if (null? seq)
      initial
      (op (car seq)
      (accumulate op initial (cdr seq))))
  );accumulate

(define (append lst1 lst2)
  (if (null? lst1)
      lst2
      (cons (car lst1)
        (append (cdr lst1) lst2)))
  );append

(define (enumerate-interval i j)
  (if (> i j)
      ‘()
      (cons i
        (enumerate-interval (+ 1 i) j))
      ));enumerate-interval

(define (unique-pairs n)
  (accumulate append
          ‘()
          (map (lambda(i) (map (lambda (j) (list i j))
                   (enumerate-interval (+ i 1) n)))
           (enumerate-interval 1 n));map
          );accumulate
  );unique-pairs

(unique-pairs 3)

(define (flatmap proc seq)
  (accumulate append ‘() (map proc seq))
  );flatmap

(define (filter predicate seq)
  (cond ((null? seq) ‘())
    ((predicate (car seq))
     (cons (car seq) (filter predicate (cdr seq))))
    (else (filter predicate (cdr seq))));cond
  );filter

(define (unique-triple n)
  (flatmap
   (lambda (x) (map (lambda (j) (cons x j))
            (unique-pairs (- x 1)));map
       );lambda
   (enumerate-interval 1 n));flatmap
  );unique-triple

(unique-triple 5)
时间: 2024-11-11 04:50:47

SICP:2.40 2.41的相关文章

SICP 1.40 1.41 1.42 1.43 1.44

解:1.40 (define (cubic a b c)   (lambda (x) (+ (* x x x) (* a x x) (* b x) c))) 1.41 (define (double f)   (lambda (x) (f (f x)))) (double double) => (double (double f)),则 (double (double double)) => (double (double (double (double f)))) 把inc代入f,得(((d

SICP 习题 (1.41)解题总结

SICP 习题1.41 看似和周边的题目没有关系,突然叫我们去定义一个叫double的过程,事实上这道题的核心还是高阶函数. 题目要求我们定义一个过程double,它以一个过程作为參数,这个作为參数的过程已经约定是一个单參数过程.double过程须要返回一个过程,所返回的过程将传入的过程应用两次. 举例说.假设我们有个过程叫(扇耳光 贱人).调用这个过程会扇贱人一个耳光. 那么(double 扇耳光)会返回还有一个过程.这个过程没有名字,我们暂且叫他"扇俩耳光"吧,调用(扇俩耳光 贱人

qscoj 喵哈哈村 40,41

链接:http://qscoj.cn/problem/41/ 喵哈哈村的七十六 发布时间: 2017年3月14日 20:02   最后更新: 2017年3月14日 20:03   时间限制: 1000ms   内存限制: 128M 描述 为了拯救喵哈哈村,这个世界必须要存在英雄. 一名英雄七十六站了出来! 但是七十六需要一把强大的武器,于是他走进了武器商店. 第$i$把武器需要$b[i]$元,能提供$c[i]$的武力值. 他现在有$a$元,他只能购买一把武器,请问他最多能够增加多少武力值呢? 如

echo -e "\033[41;36m something here \033[0m"

echo -e "\033[41;36m something here \033[0m" 格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 那些ascii code 是对颜色调用的始末. \033[ ; m -- \033[0m 字背景颜色范围:40----49 40

第41天:匀速、缓动运动和图片无缝滚动

一.匀速运动和缓动运动 缓动运动公式:leader=leader+(target-leader)/10;//leader为初始值0,target为结束值,10可以改变,值越大,速度越慢 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>运动</title> 6 <style>

第40章 CAN—通讯实验—零死角玩转STM32-F429系列

第40章     CAN-通讯实验 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx 中文参考手册2>.<STM32F4xx规格书>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 若对CAN通讯协议不了解,可先阅读<CAN总线入门>.<CAN-bus规范>

Educational Codeforces Round 41 (Rated for Div. 2)

这场没打又亏疯了!!! A - Tetris : 类似俄罗斯方块,模拟一下就好啦. 1 #include<bits/stdc++.h> 2 #define fi first 3 #define se second 4 #define mk make_pair 5 #define pii pair<int,int> 6 using namespace std; 7 8 typedef long long ll; 9 const int inf=0x3f3f3f3f; 10 const

Educational Codeforces Round 40 (Rated for Div. 2) Partial Solution

从这里开始 小结 题目列表 Problem A Diagonal Walking Problem B String Typing Problem C Matrix Walk Problem D Fight Against Traffic Problem E Water Taps Problem F Runner's Problem Problem G Castle Defense Problem H Path Counting Problem I Yet Another String Match

浅谈h5移动端页面的适配问题

一.前言 昨天唠叨了哈没用的,今天说点有用的把.先说一下响应式布局吧,我一直认为响应式布局的分项目,一下布局简单得项目做响应式还是可以可以得.例如博客.后台管理系统等.但是有些会认为响应式很牛逼,尤其是在不懂前端的人眼中,一味的追求响应式布局,我觉得复杂的布局项目做响应式还不如做二套样式,因为响应式的样式混在一起真的维护起来是恨费劲的.可能我说的不对,但是发表 一点点自己的看法.说道这里就想说一下移动端的布局,有很多人就是想把手机端得程序兼容ipad,我就觉得这个很不可思议为什么要这么做得,命名