Вернуть список позиций вхождения list2 в list1 и глубину нахождения list2 в list1 - Lisp
Формулировка задачи:
Здравствуйте! Делаю не на лиспе, но язык такой же практически, немного названия функций другие.
Задание: написать функцию, возвращающую список позиций вхождения list2 в list1 и глубину нахождения list2 в list1.
Сделала для возвращения глубины. Подскажите как доделать до нужного результата?
;count - счетчик списков на текущей глубине
;newL - список элементов на следующей глубине
#lang racket
(define (fun L A1)
(define (fun-iter L newL tekGlubina count)
(if (null? L)
(if (= count 0) tekGlubina
(fun-iter newL '() (+ tekGlubina 1) 0))
(let ((fstL (car L)))
(if (list? fstL)
(fun-iter (cdr L) (append fstL newL) tekGlubina (+ count 1))
(fun-iter (cdr L) newL tekGlubina count)))))
(fun-iter L '() 1 0))
(fun '(1 ((1)) 5 6) 1)Решение задачи: «Вернуть список позиций вхождения list2 в list1 и глубину нахождения list2 в list1»
textual
Листинг программы
#lang racket (define (func L) (define (inter L newL lvl count result) (cond [(null? L) (if (null? newL) (reverse result) (inter newL '() (+ lvl 1) 0 (cons (list lvl count) result)))] [(list? (car L)) (inter (cdr L) (append (cons 1 (car L)) newL) lvl (+ count 1) result)] [else (inter (cdr L) newL lvl count result)])) (inter L '() 0 0 '()))