| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > LISP > Где_ошибка |
| Автор: camakob 25.2.2009, 13:32 |
| Здравствуйте, товарищи ! В первый раз в жизни столкнулся с XLISP. Нашел в сети маленькую программку, запускаю на выполнение, она не работает. Подскажите в чем дело. Определите функцию, которая меняет местами первый и последний эле-менты списка, оставляя остальные на своих местах. (defun swap-first-last (list) (let ((copy (copy-list list))) (rotatef (car copy) (car (last copy))) copy)) Ругается на copy-list. |
| Автор: kosmonaFFFt 25.2.2009, 13:52 | ||
| Видимо нету такой функции в xlisp, только что проверил на sbcl - прекрасно работает. Я бы сделал так:
но эта функция изменяет переданный ей список... |
| Автор: camakob 25.2.2009, 18:26 |
| Спасибо за ответ, но в helpe функция есть: Copy-list Syntax : (copy-list <list>) Copy the top level of a list. In file common.lsp <list> the list Returns : a copy of the list (new cons cells in top level) Добавлено через 12 минут и 20 секунд И если не сложно, еще одна маленькая задача: Определите функцию (summa_digits n), результатом которой является сум-ма цифр натурального числа n. Для цифр, заданных списком, я нашел программку в книге "Мир Лиспа"(Хювенен, Сеппянен), а вот для цифр натурального числа мозгов не хватает, точнее мозгов хватает, но мозги пытаются программировать как в Паскале, но как говорят в Одессе, тут две большие разницы, то есть до недавнего времени я не подозревал, что есть такие языки программирования, все с ног на голову. |
| Автор: VH_ 25.2.2009, 21:15 | ||
Действительно, в Help функция (copy-list) есть, но в примечании указано: "In file common.lsp", то есть в файле common.lsp, содержащем функции, определяемые для совместимости с Common LIsp. Вероятно, этот файл следует загрузить.
«...все с ног на голову...» - скорее наоборот, с головы на ноги: исключение лишнего. |
| Автор: kosmonaFFFt 25.2.2009, 21:16 | ||
| Писать за тебя не буду, ибо занят щас, но есть мысль - замутить строковое представление числа например с помощью
потом нагуглить про работу со строками и создать список символов строки, выкинув оттуда десятичную запятую, если она есть, а потом с этим списком можно сделать что угодно... Создание списка символов строки можно вывести в отдельную функцию, а мб его можно и не создавать и работать со строкой как с массивом... Примерно так. З. Ы. Пока писал все это VH_ уже все сделал, причем намного лучше, чем я предлагал... |
| Автор: VH_ 25.2.2009, 22:04 |
| «...выкинув оттуда десятичную запятую, если она есть...» - «...сумма цифр натурального числа n...» |
| Автор: camakob 25.2.2009, 22:07 |
| Спасибо за помощь товарищи, будем грызть гранит, правда еще меня ждут программирование(громко сказано) на Прологе, тоже первый раз сталкиваюсь, раньше слышал, что есть такой язык. |
| Автор: kosmonaFFFt 26.2.2009, 15:26 | ||
Мда... Еще со школы натуральные с рациональными (вроде так называются) путал... |
| Автор: _sg 25.4.2014, 07:02 | ||
как ввариант:
|