Проблема с архивированием и сортировкой - PullRequest
0 голосов
/ 10 ноября 2010

Я нашел этот код для архивирования в схеме:

(define zip
  (lambda (leftList rightList)
    (if (null? rightList) 
      leftList 
      (if (member (car rightList) leftList) 
        (zip leftList (cdr rightList)) 
        (zip (append leftList (list (car rightList))) (cdr rightList)))))) 

=> (zip '(1 4) '(2 3))
   (1 4 2 3)

Но я хочу отсортировать результат:

=> (zip '(1 4) '(2 3))
   (1 2 3 4)

1 Ответ

1 голос
/ 11 ноября 2010

Функция, которую вы ищете, не называется zip; это называется merge. Поскольку это домашнее задание, решение проблемы будет безответственным. Я могу только предложить это:

Учитывая два списка , которые уже отсортированы , как проще всего объединить их в новый отсортированный список? Ну, первое, что есть в каждом списке (car списка), это наименьший элемент его собственного списка, поэтому, сравнивая их, вы можете узнать, какой из них является наименьшим из обоих списков. Затем используйте рекурсию, чтобы объединить то, что осталось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...