Возврат двух частей списка в виде пары - PullRequest
0 голосов
/ 19 октября 2018

В моей программе я должен написать функцию, которая разбивает список на четные и нечетные.Проблема в том, что вывод / синтаксис неверен.Я получаю ((1 3) (2 4)) при тестировании примера (split '(1 2 3 4)).Вывод должен выглядеть как ((1 3) 2 4)

Вот мой код:

(define (split l)
  (define (odd l)
    (if (null? l) '()
        (if (null? (cdr l)) (list (car l))
            (cons (car l) (odd (cddr l))))))
  (define (even l)
    (if (null? l) '()
        (if (null? (cdr l)) '()
            (cons (cadr l) (even (cddr l))))))
  (cons (odd l) (cons (even l) '())))

1 Ответ

0 голосов
/ 19 октября 2018

(even l) уже список.Вам не нужно оборачивать это дополнительными минусами.Код ниже должен работать.

(define (split l)
  (define (odd l)
    (if (null? l) '()
        (if (null? (cdr l)) (list (car l))
            (cons (car l) (odd (cddr l))))))
  (define (even l)
    (if (null? l) '()
        (if (null? (cdr l)) '()
            (cons (cadr l) (even (cddr l))))))
  (cons (odd l) (even l)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...