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