List 带列表的基本函数

List 带列表的基本函数,list,functional-programming,scheme,List,Functional Programming,Scheme,我们有一个列表a(12345627)我们想得到这个数字,这个数字是多少次会面,然后是多少次会面 numbers | meets 1 = 1 2 < 3 3 < 4 5 > 1 4 > 2 6 > 1 7 > 1 Example: Input: list (1 1 2 3 2 3 4 4 5 5 5 5 5 5) Output: (1 3 4) number |满足 1 =

我们有一个
列表a(12345627)
我们想得到这个数字,这个数字是多少次会面,然后是多少次会面

numbers | meets
      1 = 1
      2 < 3
      3 < 4
      5 > 1
      4 > 2
      6 > 1
      7 > 1

Example:
Input:
list (1 1 2 3 2 3 4 4 5 5 5 5 5 5)
Output:
(1 3 4)
number |满足
1 = 1
2 < 3
3 < 4
5 > 1
4 > 2
6 > 1
7 > 1
例子:
输入:
名单(1 1 2 3 2 3 4 5 5 5 5)
输出:
(1 3 4)

在我的解决方案中,我遵循了@lbruder注释,但我不清楚为什么1会出现在输出中,因为如果您检查的是更小和相等的值,那么2也应该出现

> (define (occurences lst)
    (cond ((null? lst) empty)
          ((< (length (filter (lambda (x) (if (= x (car lst)) x #f)) lst)) (car lst)) (cons (car lst) (occurences (filter (lambda (x) (if (not (= x (car lst))) x #f)) lst))))
          (else (occurences (filter (lambda (x) (if (not (= x (car lst))) x #f)) lst)))))
> (occurences '(1 2 3 2 3 4 4 5 5 5 5 5 5))
(3 4)
>(定义(发生lst)
(cond((null?lst)为空)
(<(长度(筛选器(lambda(x)(如果(=x(car lst))x#f))lst))(car lst))(cons(car lst)(发生(筛选器(lambda(x)(如果(=x(car lst))x#f))lst)))
(其他(发生(过滤器(λ(x)(如果(不是(=x(汽车lst)))x#f))lst(())))
>(事件’(123434555))
(3 4)
  • 数字1出现1->false 1!<一,
  • 数字2出现2->false 2!<二,
  • 第3次出现2->true 2<3
  • 第4次出现2->true 2<4
  • 数字5出现6->false 6!<五,
因此
(34)


通过
!是作业吗?请添加作业标签。对不起,我不明白这个问题:(不,我必须在1小时后的测试中解决一个类似的问题…列表(1 2 1 1 2 4 4 5)1满足4次2满足3次4满足3次5满足1次所以列表是12次=数字1包含在列表A中的次数,与2、4、5相同您的意思是列表项的出现次数应该小于数字项本身?没错!我更正了!