Вернуть список позиций вхождения list2 в list1 и глубину нахождения list2 в list1 - Lisp

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Делаю не на лиспе, но язык такой же практически, немного названия функций другие. Задание: написать функцию, возвращающую список позиций вхождения list2 в list1 и глубину нахождения list2 в list1. Сделала для возвращения глубины. Подскажите как доделать до нужного результата?
Листинг программы
  1. ;count - счетчик списков на текущей глубине
  2. ;newL - список элементов на следующей глубине
  3. #lang racket
  4. (define (fun L A1)
  5. (define (fun-iter L newL tekGlubina count)
  6. (if (null? L)
  7. (if (= count 0) tekGlubina
  8. (fun-iter newL '() (+ tekGlubina 1) 0))
  9. (let ((fstL (car L)))
  10. (if (list? fstL)
  11. (fun-iter (cdr L) (append fstL newL) tekGlubina (+ count 1))
  12. (fun-iter (cdr L) newL tekGlubina count)))))
  13. (fun-iter L '() 1 0))
  14. (fun '(1 ((1)) 5 6) 1)

Решение задачи: «Вернуть список позиций вхождения list2 в list1 и глубину нахождения list2 в list1»

textual
Листинг программы
  1. #lang racket
  2.  
  3. (define (func L)
  4.   (define (inter L newL lvl count result)
  5.     (cond
  6.       [(null? L) (if (null? newL) (reverse result)
  7.                                   (inter newL
  8.                                          '()
  9.                                          (+ lvl 1)
  10.                                          0
  11.                                          (cons (list lvl count)
  12.                                          result)))]
  13.       [(list? (car L)) (inter (cdr L)
  14.                               (append (cons 1 (car L)) newL)
  15.                               lvl
  16.                               (+ count 1)
  17.                               result)]
  18.       [else (inter (cdr L) newL lvl count result)]))
  19.   (inter L '() 0 0 '()))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы