Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lisp

Войти
Регистрация
Восстановить пароль
 
Kot_Enot
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 33
#1

Функция Все-равны, которая возвращает T, если первый элемент списка равен второму - Lisp

01.03.2012, 21:20. Просмотров 998. Ответов 5
Метки нет (Все метки)

как создать функцию Все-равны, которая возвращает T, если первый элемент списка равен второму, второй третьему и т.д. При первом же неравенстве элементов возвращается NIL
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 21:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция Все-равны, которая возвращает T, если первый элемент списка равен второму (Lisp):

Функция которая возвращает первый, второй, предпоследний и последний элемент списка, в виде четырехэлементного списка - Lisp
Был бы признателен за помощь. И если не затруднит, то с комментариями. Задание: Дан список произвольной длинны. Написать функцию,...

Написать функцию, которая возвращает первый, второй, предпоследний и последний элементы этого списка - Lisp
Дан список произвольной длины. Написать функцию, которая возвращает первый, второй, предпоследний и последний элементы этого списка в виде...

Если 1-й элемент списка равен 1, то заменить его на букву А - Lisp
Если 1-й элемент списка равен 1, то заменить его на букву А.

PROG функция, которая возвращает в качестве значения длину списка - Lisp
Помогите разобраться в программе. Нужно преподу объяснить как она работает, а я ни как не вразумлю:( Само задание звучит так: Запишите с...

Продублировать каждый 3 элемент списка ,если тот равен некому Х - Lisp
Здравствуйте. Помогите с решением такой задачки . Спасибо .

Функция, которая находит первый атом, не являющийся массивом, списка с подсписками - Lisp
Здравствуйте, помогите с задачей... Написать функцию, которая находит первый атом, не являющийся массивом, списка с подсписками.

5
bokunopico
303 / 258 / 2
Регистрация: 03.04.2011
Сообщений: 456
01.03.2012, 21:49 #2
Lisp
1
2
3
4
(defun f (lst)
  (if (cdr lst)
      (and (eql (car lst) (cadr lst)) (f (cdr lst)))
      t))
1
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
02.03.2012, 04:47 #3
Цитата Сообщение от Kot_Enot Посмотреть сообщение
как создать функцию Все-равны, которая возвращает T, если первый элемент списка равен второму, второй третьему и т.д. При первом же неравенстве элементов возвращается NIL
если равенство у нас транзитивное, то все просто — нам нужно определить, равны ли все элементы списка:
Lisp
1
2
(defun fun (list)
  (apply #'= list))
0
Hretgir
201 / 75 / 2
Регистрация: 25.01.2012
Сообщений: 2,777
Записей в блоге: 20
03.03.2012, 09:15 #4
Добавлено через 12 минут
bokunopico,
Nameless One,
извините, а вы могли бы прокомментировать? у bokunopico всё ясно, но к созданию цикла для решения одной и той же задачи, как правило можно подойти с двух позиций, как минимум. или я ошибаюсь? давно не кодил, сорри, если что, очень давно.
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
03.03.2012, 09:27 #5
Hretgir, что именно? Мой код? Дано условие
Цитата Сообщение от Kot_Enot Посмотреть сообщение
возвращает T, если первый элемент списка равен второму, второй третьему и т.д.
т.е. http://www.cyberforum.ru/cgi-bin/latex.cgi?(x_1 = x_2) \wedge (x_2 = x_3) \wedge \ldots \wedge (x_{n-1} = x_n), где http://www.cyberforum.ru/cgi-bin/latex.cgi?x_i \, (i = \overline{1,n}) — элементы исходного списка http://www.cyberforum.ru/cgi-bin/latex.cgi?L.
Из чего следует (если допустить, что равенство транзитивно), что любые два элемента списка равны, т.е. http://www.cyberforum.ru/cgi-bin/latex.cgi?x_1 = x_2 = \ldots = x_n, что на Лиспе соответствует записи:
Lisp
1
(= x_1 x_2 x_3 x_4)
т.к. функция «=» принимает переменное число аргументов и проверяет, равны ли они одинаковому значению. Функция «apply» же просто применяет функцию, переданную первым аргументом, к списку, как если бы эта функция была вызвана с аргументами, составляющими список.
0
Hretgir
201 / 75 / 2
Регистрация: 25.01.2012
Сообщений: 2,777
Записей в блоге: 20
03.03.2012, 09:47 #6
спасибо, хотелось бы детально, по каждому слову, не просто вникать по книгам 70-ых годов, тем более большей части функций, встроенных, тогда и не было наверное. можно посмотреть в набор функций home lisp, но не факт что это там будет, да и не факт что всякий читающий ваш ответ будет иметь информацию.

Добавлено через 11 минут
придумал самую первую прогу, которую нужно накодить-прогу пишущую комментарии О_о, не знаю насколько это реально, и работоспособно, но нужно, и можно делать по ходу освоения языка. хотя у задачи науверное есть минимальный стартовый уровень знания языка, при владении которого она выполнима. мм. скорее всего его нужно знать весь. это практически ещё один компилятор, только на человеческий язык. задача для настоящих профи
0
03.03.2012, 09:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2012, 09:47
Привет! Вот еще темы с ответами:

Определить функцию, которая возвращает последний элемент первого списка, входящий также и во второй список - Lisp
Даны два списка. Определить функцию, которая возвращает последний элемент первого списка, входящий также и во второй список, в противном...

Определить функцию, которая имеет значение T, если n-й элемент списка L есть атом. - Lisp
Для каждого из следующих условий определить функцию одного аргумента L , которая имеет значение T , если условие удовлетворяется, и NIL в...

Функция, которая проверяет, являются ли все элементы списка положительными числами - Lisp
Помогите понять, в чем ошибка. Нужно-ли третье условие? Если в списке числа (положительные) то "Истина"? Задачка: а) напишите...

Написать функцию, которая выдает в качестве результата предпоследний элемент списка, если он есть, а иначе NIL - Lisp
Написать функцию, которая выдает в качестве результата предпоследний элемент списка, если он есть, а иначе NIL


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.