Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 1
Регистрация: 19.10.2012
Сообщений: 37

Бесконечный список

01.11.2012, 15:40. Показов 2208. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с задачей. Ума не приложу.
Под именами х и у заданы списки Лиспа (a (b c) и (d e), соответственно. Нужно используя их, и не тратя при этом дополнительных списковых ячеек памяти, создать бесконечный (при выведении на экран) список (e b c d e b c d e ...).
Обязательным приемом выполнения задачи является использование функций Лиспа, которые разрушают структуры.
Заранее огромное спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.11.2012, 15:40
Ответы с готовыми решениями:

Бесконечный список совершенных чисел
Здравствуйте! Помогите пожалуйста дополнить программу. Вот задание: Сгенерировать бесконечный список совершенных чисел. Пока что,...

Бесконечный список объектов класса?
В данный момент изучаю тему Классы и пробую практиковаться.:) И недавно возник вопрос: как сделать список объектов с количество заданным...

Опишите бесконечный список чисел [1,-1,1,-1,...]
А) опишите бесконечный список чисел Б) с помощью этого списка, списка и функции zipWith опишите бесконечный список Заранее спасибо)

6
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
01.11.2012, 15:59
Цитата Сообщение от Oliveyra Посмотреть сообщение
Под именами х и у заданы списки Лиспа (a (b c) и (d e)
Чему равен x? (a (b c)) или (a b c)?

Если x = '(a (b c)):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
CL-USER> (defvar x '(a (b c)))
X
CL-USER> (defvar y '(d e))
Y
CL-USER> (setf *print-circle* t)
T
CL-USER> (rplacd (last (cadr x)) y)
(C D E)
CL-USER> (rplacd (last y) (cadr x))
#1=(E B C D . #1#)
CL-USER> (cdr y)
#1=(E B C D . #1#)
CL-USER>
2
1 / 1 / 1
Регистрация: 19.10.2012
Сообщений: 37
01.11.2012, 17:17  [ТС]
да именно x = '(a (b c))
Спасибо огромное!

Добавлено через 12 минут
Хотел еще спросит, а что означает вот этот вывод
Lisp
1
#1=(E B C D . #1#)
почему у меня вместо 1 выводит 0 в этом выводе, и еще каким вы пользуетесь компилятором?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
01.11.2012, 17:25
Oliveyra, компилятор — SBCL.

Цитата Сообщение от Oliveyra Посмотреть сообщение
Хотел еще спросит, а что означает вот этот вывод
Это нотация, используемая при печати циклических списков (когда переменная *print-circle* не равна nil, иначе печать приведет к бесконечному циклу). Буквально означает: список #1# (наш результат) содержит в начале себя атомы E, B, C, D, а дальше повторяется, т.е. список равен (e b c d e b c d e b c d …).

Цитата Сообщение от Oliveyra Посмотреть сообщение
почему у меня вместо 1 выводит 0 в этом выводе
Это зависит от компилятора и не имеет, по сути, никакого значения. Значение #n# ссылается на выражение #n=EXPR, введенное раньше.

PS. Синтаксис #n# имеет также определенное значение для reader'а лиспа. Например, этот бесконечный список можно было бы ввести с помощью этого синтаксиса:

Lisp
1
2
3
4
5
CL-USER> (defvar result '#0=(e b c d . #0#))
RESULT
CL-USER> result
#1=(E B C D . #1#)
CL-USER>
1
1 / 1 / 1
Регистрация: 19.10.2012
Сообщений: 37
17.12.2012, 20:13  [ТС]
а можно как-то решить эту же задачу, только не используя *print-circle* ?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,699
Записей в блоге: 14
17.12.2012, 20:47
Странная задача... Странность в постановке (не используя лишних ячеек). По моим подсчетам две ячейки тут вообще лишние (они высвобождаются):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;; создаем переменные
 
(setq x '(a (b c)))
 
==> (a (b c))
 
(setq y '(d e))
 
==> (d e)
 
;; решение
 
(rplacd (cdr y) (cadr x))
 
==> (e b c)
 
y
 
==> (d e b c)
 
x
 
==> (a (b c))
 
(setq x y)
 
==> (d e b c)
 
(setq y (cdr x))
 
==> (e b c)
 
(rplacd x nil)
 
==> (d)
 
(rplacd (cddr y) x)
 
==> (c d)
 
(rplacd (cdddr y) y)
 
==> (d e b c d e b c ...)
 
y
 
==> (e b c d e b c d e b c d e b c ...)
1
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.12.2012, 02:09
Цитата Сообщение от Oliveyra Посмотреть сообщение
а можно как-то решить эту же задачу, только не используя *print-circle* ?
Ну не используй *print-circle*, мое решение от этого не поменяется.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2012, 02:09
Помогаю со студенческими работами здесь

Бесконечный список чисел Пелля-Люка
а) Используя функцию iterate, написать функцию, которая строит бесконечный список чисел Пелля-Люка б) Написать функцию, которая читает...

Потенциально бесконечный список с условием внутри выражения
Стоит задача: "вывести числа фибоначчи, меньше 4 миллионов". fib = 1:1: --возвращаем последовательность фибоначи, у которой...

Составить бесконечный список последовательностей биномиальных коэффициентов
Здравствуйте! Так вышло, что в сжатые сроки нужны решения некоторых задач. Решал бы сам, если бы не был занят проектом. Как уже поняли с...

Кольцевой список, программа входит в бесконечный цикл
здравствуйте, помогите пожалуйста с задачей. Я ее написал, но у меня всегда идет бесконечный цикл, не могу найти ошибку. дан...

Задать бесконечный список и найти в нем указанную величину
а) Задать бесконечный список - Шестиугольных чисел – 1,6,15,28… б) Найти в нем указанную величину - наибольшее трехзначное число, кратное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru