Раньше у меня возник вопрос о добавлении персонажа в список частот (Add a character to a frequency list), он был решен, но у меня снова возникли проблемы с остальной частью проекта. Следующие 2 функции работают:Список частот 2 - Проект Хаффмана
Написать функцию, которая создает список частот (из списка символов)
(statistiques '("a" "b" "r" "a" "c" "a" "d" "a" "b" "r" "a"))
→ (("a" 5) ("r" 2) ("b" 2) ("d" 1) ("c" 1))
Мой код:
(define statistiques
(lambda (l)
(if (null? l)
l
(ajoute1(car l)(statistiques (cdr l))))))
Написать функцию, которая вставляет пару (символ и число, которое указывает на появление этого символа в списке), в списке пар, который сортируется по числу вхождений
(inserefreq '("b" 2) '(("d" 1) ("a" 5)))
→ (("d" 1) ("b" 2) ("a" 5))
(define inserefreq
(lambda (c l)
(cond ((null? l)
(list c))
((<= (cadr c) (cadar l))
(cons c l))
(else
(cons (car l) (inserefreq c (cdr l)))))))*
Тогда проблема со следующим, который просят для сортировки списка частот путем последовательного введения
(triefreq '(("a" 5) ("r" 2) ("b" 2) ("d" 1) ("c" 1)))
→ (("d" 1) ("c" 1) ("r" 2) ("b" 2) ("a" 5))
Мой код:
(define tirefreq
(lambda (l)
(inserefreq(car l) (tirefreq (cdr l)))))
Результат/ошибка:
В вашем предыдущем вопросе кто-то хотел знать, на каком языке вы использовали, и вы сказали «Схема» (как я понял, как #! R6rs), но на вашем размещенном изображении здесь вы не используете Схему, но «Начальный студент с сокращенными списками ". У ваших языков есть ограничения, поэтому важно упомянуть об этом в ваших вопросах, иначе вы либо получите ответы #! Racket, либо #! R6rs. – Sylwester
О, я не знал .. в классе у нас есть упражнения, говорящие «писать на Схеме», но мы на самом деле всегда используем либо этот вариант, либо Pretty Big, поэтому я думал, что это после всего языка Scheme, но немного отличается версии этого .. (возможно, я неправильно понял несколько вещей, сказанных в классе, так как он на французском ха-ха) – user3104814