Язык LISP.
Нужно проверить является ли один список фрагментом другого списка.
пожалуйста если кто знает могли бы показать пример как это делать, буду очень признателен. спасибо
Язык LISP.
Нужно проверить является ли один список фрагментом другого списка.
пожалуйста если кто знает могли бы показать пример как это делать, буду очень признателен. спасибо
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
10 марта 2010 в 22:04
length – дорогое удовольствие (:
10 марта 2010 в 21:01
oh shi. ща поправлю
10 марта 2010 в 21:01
я вроде переправил под Scheme вроде так?
(define (sps2 p1 p2)
(if (= (length p1) 0) 1
(if (> (length p1) (length p2)) 0
(if (= (car p1) (car p2))
(sps2 (cdr p1) (cdr p2)) 0))))
(define (sps p1 p2)
(if (> (length p1) (length p2)) 0
(if (= (sps2 p1 p2) 1) 1
(sps p1 (cdr p2)))))
10 марта 2010 в 20:01
> (search '(1 2) '(1 3 4 1 4 2 3 5))
true
- не тру
10 марта 2010 в 18:03
вот
(define (search sub list)
(if (null? list)
#f
(if (equal? (car sub) (car list))
(if (null? (cdr sub))
#t
(search (cdr sub) (cdr list)))
(search sub (cdr list)))))
зы а как ты форматирование сохранил? а то пробелы контакт пожирает
10 марта 2010 в 18:03
> (search '(1 2) '(1 3 4))
#f
> (search '(1 2) '(1 3 4 1 2 3 5))
#t
10 марта 2010 в 17:04
в схеме define. и let и setq там вроде нет… Common lisp и Scheme – два разных языка с лиспоподобным синтаксисом. эта программа на языке коммон лисп
10 марта 2010 в 17:04
могли бы подкорректировать в моем коде под Scheme?
10 марта 2010 в 17:03
я запускаю в Scheme
10 марта 2010 в 17:02
всё работает. запускал в clisp. только скобку в конце одну забыл
вызов:
[5]> (sublistp '(1 2 3) '(1 2 3 1 2))
T
[6]> (sublistp '(1 2 3) '(1 2 4 1 2))
NIL
10 марта 2010 в 10:02
Проверь скобки. Лисп к ним очень чувствителен. Посмотри чтобы они закрывались там где надо.
10 марта 2010 в 1:01
Не знаю можно или нельзя. С Лиспом пока еще на Вы
10 марта 2010 в 1:01
Вот я что-то написал но задача не запускается выскакивают какие-то ошибки могли бы посмотреть что не так:
(defun sublistp (xs ys &key (test 'eql))
(let ((list xs))
(block foo
(dolist (y ys)
(cond ((null list)
(return-from foo t))
((funcall test (first list) y)
(setq list (cdr list)))
(t (setq list xs))))))
10 марта 2010 в 0:04
А что, в LISPe нельзя просмотреть исходный код стандартной функции?
9 марта 2010 в 20:01
есть стандартная функция которое это делает
мвахаха)
9 марта 2010 в 20:01
ну я знаю про стандартную функцию. дело в том что мне надо это сделать без ее использования.
9 марта 2010 в 19:02
RTFM!!!