программирование коэффициента фильтрации - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу создать функцию, которая фильтрует нечетный индекс.

(filter-idx '(0 1 2 3 4)) => '(1 3)
(filter-idx '(#\a #\b #\c (0 1))) => '(#\b (0 1))

Итак, я сделал так, но это не работает ..

(define (filter-idx xs) 
(memf (lambda (x)
(= (remainder x 2) 1))
xs))

1 Ответ

0 голосов
/ 26 ноября 2018

Вам необходимо обрабатывать индексы и элементы отдельно.Это один из способов сделать это:

(define (filter-idx xs)
  (for/list ([i (range (length xs))] ; iterate over indexes of elements
             [x xs]                  ; iterate over elements of list
             #:when (odd? i))        ; filter elements in odd indexes
    x)) ; create a list with only the elements that meet the condition

Например:

(filter-idx '(0 1 2 3 4))
=> '(1 3)
(filter-idx '(#\a #\b #\c (0 1)))
=> '(#\b (0 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...