Как я могу посчитать вхождения элемента в списке и создать новый список? - PullRequest
1 голос
/ 03 апреля 2019

как я могу изменить (count-fruit ’(apple banana banana orange peach)) на '((apple 1) (banana 2) (orange 1) (grape 0) (peach 1))) обратите внимание, что виноград также является существующим видом фруктов, поэтому мы не можем исключить его из списка

1 Ответ

0 голосов
/ 25 апреля 2019

Прежде всего, рассмотрите

(map (lambda (x) (cons x 0)) '(apple banana banana orange peach))

, это даст

((apple . 0) (banana . 0) (banana . 0) (orange . 0) (peach . 0))

, затем вы можете использовать счетчик, чтобы увеличить число.

(let ((counter 0))
  (lambda (x)
    ;; you need to store the result (cons x counter)
    ;; in a temporary variable using LET here
    ;; then use SET! to increment counter
    ;; then return the temp
    ))

IВам только что дали шаблон, чтобы начать, если у вас есть проблемы с завершением, не стесняйтесь задавать дополнительные вопросы.Надеюсь, идеи понятны.

...