首页 > 其他分享 >CS61A_hw07

CS61A_hw07

时间:2023-04-19 19:12:59浏览次数:27  
标签:hw07 函数 car 元素 列表 filter unique CS61A

 

#lang sicp

(define (unique s)
  (if (null? s)
      nil
      (cons (car s) (unique (filter (lambfa (x)
                                            (not (eq? x (car s))))
                                    (cdr s)))
      )
  )
)

这是一个Scheme函数,名为unique,它接受一个参数s,并返回一个去除s中重复元素后的新列表。

函数体的主要部分是递归的,它使用filter函数从列表s中过滤出不等于s的第一个元素的其余元素,并将它们传递给unique函数,直到列表s为空,此时返回空列表。

具体来说,这个函数做了以下几件事:

  1. 如果列表s为空,返回空列表。
  2. 否则,使用car函数获取列表s的第一个元素,并将其与由unique递归调用返回的不包含列表中第一个元素的重复元素的新列表连接起来。
  3. 在递归调用unique时,使用filter函数和一个lambda表达式来过滤掉列表s中不等于s的第一个元素的其余元素,以便构建新列表。
(lambda (x) (not (eq? x (car s))))

它接受一个参数x,并返回一个布尔值,表示参数x是否等于s的第一个元素。具体来说,该lambda表达式做了以下几件事情:

  1. 使用car函数获取s的第一个元素,并将其与参数x进行比较。
  2. 如果它们相等,则返回#f,表示参数xs的第一个元素相同。
  3. 否则,返回#t,表示参数xs的第一个元素不同。

这个lambda表达式的作用是在过滤器函数中使用,它用于测试序列中的每个元素,以查看是否应该包含在结果序列中。在本例中,它用于过滤掉与列表s的第一个元素相同的元素。

filter

(filter <pred> <lst>)

Returns a list consisting of only the elements of lst that return true when called on pred (a one-argument procedure).

标签:hw07,函数,car,元素,列表,filter,unique,CS61A
From: https://www.cnblogs.com/xuenima/p/17334353.html

相关文章

  • CS61A_lab08
    题目:Writethegeneratorfunction make_generators_generator,whichtakesazero-argumentgeneratorfunction g andreturnsageneratorthatyieldsgenerators.Foreachelement e yieldedbythegeneratorobjectreturnedbycalling g,anewgeneratorobjec......
  • CS61A_lab_07
    Problem2题目描述:代码:1definc_subseqs(s):2"""AssumingthatSisalist,returnanestedlistofallsubsequences3ofS(alistoflists)forwhichtheelementsofthesubsequence4arestrictlynondecreasing.Thesubseq......
  • CS61A_HW04
    Q6题目描述:Writeafunction has_path thattakesinatree t andastring phrase.Itreturns True ifthereisapaththatstartsfromtherootwherethe......
  • CS61A Fall 2020 Homework 2 Recursion 我的思路
    HW2Description:https://inst.eecs.berkeley.edu/~cs61a/fa20/hw/hw02/我会把题目倒着放,因为通常后面的题能带给我的思考更多(也更可能做不出来......
  • CS61A_Lab_05
    Q1题目描述:代码实现:1defcoords(fn,seq,lower,upper):2"""3>>>seq=[-4,-2,0,1,3]4>>>fn=lambdax:x**25>>>coords(fn,......
  • CS61A_lab02
    1defcycle(f1,f2,f3):2"""Returnsafunctionthatisitselfahigher-orderfunction.34>>>defadd1(x):5...returnx+16......
  • cs61abc分享会(六)程序的输入输出详解 - 标准输入输出,文件,设备,EOF,命令行参数
    系列文章目录分享会链接2022年7月23日分享会长期链接:https://meeting.tencent.com/dm/Qet4sVXmOccd分享时间:9点20到9点50视频录播在最下方文章目录​​系列文章目录​​​......
  • CS61A、CS61B、CS61C 反复学,学反复
    任何人开启CScareer都需要61ABC的知识作为基础完成这三门课大部分的工作基本可以胜任至少应付各种intern和coop是不成问题了对于本科生如果一学期上一门CS61系列的课那正......
  • CS61A学习笔记
    0.前言2022.9.19其实寒假就有要开始学习CS61A的想法,苦于对英文课程界面以及上英文课的不习惯止步六个月。而寒假之后的六个月,我完成了从零到一,再从一到十的突破。在寒假......
  • [CS61A] Lecture 5&6&7. Environments & Design & Functions Examples & Homework 2:
    [CS61A]Lecture5&6&7.Environments&Design&FunctionsExamples&Homework2:HigherOrderFunctionsLectureLecture5.Environments环境是编程语言中的一大命......