Вернуть список позиций вхождения 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 '()))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д