2016-11-06 2 views
0

Я работаю над назначением, мы должны разбить список в соответствии с предикатом (даже?). Пример: (фильтр-СФС даже '(1 2 3 4 5 6 7 8 9 10)'()?)Может ли кто-нибудь объяснить стиль игры в стиле ракетки?

выход: (2 4 6 8 10) (1 3 5 7 9)

Я не могу создать 2 отдельных списка.

+0

Есть куча разных способов сделай это. Тем не менее, я бы не стал выбрасывать проезд как наиболее простой. Я готов поспорить, что это для класса, и если мы попытаемся ответить, не понимая больше о контексте класса, мы не будем правильно управлять вами. Итак: можете ли вы сказать немного больше о требованиях к проблеме? –

+0

Возможно, стоит также упомянуть, что стиль оформления магазина - это просто стиль: стиль. Нет ничего о прохождении магазина, что характерно для Racket; вы можете сделать это на любом языке. Это просто стиль программирования, где вместо выполнения мутации в структурах данных вы передаете представление памяти как аргумент для будущих вызовов функций (и возвращаете их также). –

ответ

0

Вы могли бы просто отфильтровать дважды:

(define lst '(1 2 3 4 5 6 7 8 9 10)) 

(define odd? (lambda (n) 
       (not (even? n)))) ; in case you don't have odd 

(cons (filter-sps even? lst) 
     (filter-sps odd? lst)) 

Перебор в этом же списке дважды расточительно, если эти списки очень длинные, но для примера можно пренебречь

Смежные вопросы