
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.45.80] |
![]() |
|
Сообщ.
#1
,
|
|
|
Пытались мы реализовать общими усилиями задание по Лиспу, навыков нет особо(
Задание: Дан список элементов. Найти все позиции элемента в списке, допустим элемент "а", список (а b a c a). Наш пример, не работающий))): (defun start(lst el) (find lst el 0 nil) ) (defun find(lst el index reslst) (cond ((null lst) ((reverse reslst))) ((eql(nth index lst) el) (find lst el (add index 1) (cons index reslst))) (T(find lst el (add index 1) reslst)) ) ) Помогите пожалуйсто довести до ума, чтото трудно с этим лиспом... Заранее спасибо. |
Сообщ.
#2
,
|
|
|
![]() ![]() 1 (defun list_count (N L CurPos) 2 (if (null L) 3 nil 4 (if (= N (first L)) 5 (cons CurPos (list_count N (rest L) (+ CurPos 1))) 6 (list_count N (rest L) (+ CurPos 1)) 7 8 ) 9 ) 10 ) |
Сообщ.
#3
,
|
|
|
огромное спасибо)
последний вопрос, как правильно теперь это запустить? (defun (a v a c d) a) ? |
Сообщ.
#4
,
|
|
|
![]() ![]() detrit% clisp [1]> (load "list.lisp") ;; Loading file list.lisp ... ;; Loaded file list.lisp T [2]> (list_count 3 '(1 3 5 3 4) 0) (1 3) [3]> http://www.cs.sfu.ca/CC/310/pwfong/Lisp/1/tutorial1.html |
Сообщ.
#5
,
|
|
|
ммм... я вот не знаю сколько версий лиспа есть, у нас приложение mulisp.com называется и вся папка с файлами на 1мб) там ещё не видел такого запуска)
|
Сообщ.
#6
,
|
|
|
Омг.
Это обычный Common Lisp. Вот тут методичка к мюлиспу. На первый взгляд сильно отличатся не должно. Запустить в командной строке ![]() ![]() MuLisp87.com Common.lsp Он покажет приглашение к вводу команды. ![]() ![]() $ Потом загрузить файл с определением функции, у меня он назывался list.lisp ![]() ![]() (load "list.lisp") Cнова дождаться приглашения к вводу и вызвать функцию ![]() ![]() (list_count 3 '(1 3 5 3 4) 0) Единственное что, возможно он будет ругаться на first и rest, тогда замените их на car и cdr соответственно(разница только в читабельности). |