Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список и проверка на соответствие, Список и проверка на соответствие 
:(
    Опции темы
Tomsk11
Дата 13.1.2013, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.4.2011

Репутация: нет
Всего: нет



Вот еще задача. Вроде несложная, но то, что написал- не работает.
Условие задачи:
Определите функцию (f N V P), которая выдает список всех элементов списка V, удовлетворяющих некоторому предикату P и встречающихся в исходном списке более N раз. 
PM MAIL   Вверх
Catstail
Дата 14.1.2013, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.1.2013

Репутация: нет
Всего: нет



Пойдет?

(defun task (x n p)
  (cond ((null x) nil)
        (t (let* ((v (car x))
                  (w (remove v x))
                  (k (- (length x) (length w))))
                 (if (and (funcall p v) (>= k n)) (cons v (task w n p)) (task w n p))))))


==> task

(task '(1 2 3 1 2 3 2 2 4 6) 2 #'evenp) 

==> (2)


PM MAIL   Вверх
_sg
Дата 16.1.2013, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



Код

(defun massp (n w p)
  (labels ((mass  (n v p)
             (cond ((null v) nil)
                   ((> (count (car v) v) n)
                    (cons (car v) (mass n (delete (car v) v) p)))
                   ((mass n (cdr v) p)))))
    (mass n (remove-if-not p w) p)))

> (massp  2 '(1 2 3 1 3 2 3 2 2) #'evenp)
(2)
> (massp  2 '(1 2 3 1 3 2 3 2 2) #'oddp)
(3)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
Tomsk11
Дата 9.3.2013, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.4.2011

Репутация: нет
Всего: нет



Приветствую! Но в XLisp это не работает.
В XLispe немного тяжело отлаживать программу.

PM MAIL   Вверх
_sg
Дата 10.3.2013, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



Код

(defun massp (n w p)
  (mass n w p nil))

(defun mass (n w p v)
  (cond ((null w) v)
        ((and (funcall p (car w))
              (not (mmb (car w) v)) 
              (> (cnt (car w) w) n))
         (mass n (cdr w) p (cons (car w) v)))
        ((mass n (cdr w) p v))))

(defun mmb (a w)
    (cond ((null w) nil)
    ((eql a (car w)) (cons (car w) (cdr w)))
    ((mmb a (cdr w)))))

(defun cnt (a w)
    (cond ((null w) 0)
          ((eql a (car w)) (+ 1 (cnt a (cdr w))))
          ((cnt a (cdr w)))))

> (massp  2 '(1 2 3 1 3 2 3 2 2) #'evenp)
(2)
> (massp  2 '(1 2 3 1 3 2 3 2 2) #'oddp)
(3)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
_sg
Дата 25.4.2014, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



как вариант Common Lisp:
Код

(defun massp (n w p)
  (labels ((mass  (n v p)
             (when v (if (> (count (car v) v) n)
                         (cons (car v) (mass n (delete (car v) v) p))
                         (mass n (cdr v) p)))))
    (mass n (remove-if-not p w) p)))

> (massp  2 '(1 2 3 1 3 2 3 2 2) #'evenp)
(2)
> (massp  2 '(1 2 3 1 3 2 3 2 2) #'oddp)
(3)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.1127 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.