Основная функция со списком - PullRequest
0 голосов
/ 25 января 2011

У нас есть list A (1 2 3 4 5 2 2 3 3 3 4 6 7), и мы хотим получить эти числа, число встреч которых <затем их. </p>

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)

1 Ответ

1 голос
/ 25 января 2011

Мое решение, я следовал за комментарием @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)
  • число 1 вхождение 1 -> ложное 1! <1 </li>
  • число 2 вхождение 2 -> ложное 2! <2 </li>
  • число 3 вхождение 2 -> истина 2 <3 </strong>
  • число 4 вхождение 2 -> истинное 2 <4 </strong>
  • число 5 вхождение 6 -> ложное 6! <5 </li>

Следовательно (3 4)

Под !< я имею в виду не меньше (больше или равно)

...