Предыдущая страница [1] > 2 <

Автор Сообщение

artemt

Members


Статус

25 сообщений

Где: Russia
Род занятий:
Возраст:

#3184   2010-10-16 21:21 GMT+3 часа(ов)      
VH
По мотивам Хювёнен-Сеппянен "Мир Лиспа" т.1 стр.255:

Спасибо, буду щас читать.=)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3185   2010-10-16 21:25 GMT+3 часа(ов)      
6.9.
(defun F (N L)
(cond
((null L) nil)
((minusp N) 'error)
((zerop N) (car L))
(T (F (1- N) (cdr L)))))

отредактировал(а) VH: 2010-10-16 22:29 GMT+3 часа(ов)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3186   2010-10-16 21:34 GMT+3 часа(ов)      
6.10.
(defun F (L)
(if L
(if (oddp (car L))
(if (cdr L)
(F (cdr L))
T))))

отредактировал(а) VH: 2010-10-16 22:29 GMT+3 часа(ов)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3187   2010-10-16 21:44 GMT+3 часа(ов)      
6.11.
«...относящуюся к хвостовой рекурсии с одним тестом завершения...» - термины эти незнакомы, предлагаю
(defun F (L)
(cond
((null L) nil)
((null (cdr L)) (car L))
(T (F (cdr L)))))

отредактировал(а) VH: 2010-10-16 22:29 GMT+3 часа(ов)

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 30

#3188   2010-10-16 21:49 GMT+3 часа(ов)      
> В одну строчку решение, а медленнее менее чем в 2 раза.
Cлишком просто, так не интересно

VH, думаю, имелось ввиду не более одной проверки.
Типа такого:
(defun last-car (list)
(if #1=(cdr list)
(last-car #1#)
(car list)))

отредактировал(а) ander-skirnir: 2010-10-16 21:59 GMT+3 часа(ов)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3190   2010-10-16 22:06 GMT+3 часа(ов)      
6.13.
«...функцию, которая возвращает <что-то>, возможно создавая некоторые
вспомогательные функции» - канечна, в данном случае всего лишь «велик могучим русский языка (с)А.Иванов», но ЧСХ в LISPе именно функция и может именно создавать функции.
(defun F (L)
(if L
((lambda (elem result)
(cond
(result)
((oddp elem) elem)))
(car L)
(F (cdr L)))))

отредактировал(а) VH: 2010-10-16 22:29 GMT+3 часа(ов)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3191   2010-10-16 22:12 GMT+3 часа(ов)      
6.14.
«...cons-дополняемую рекурсию с одним тестом завершения...» - термины эти незнакомы, предлагаю
(defun F (L)
(if L
(cons
(* (car L) (car L))
(F (cdr L)))))


>ander-skirnir
См. Warning

отредактировал(а) VH: 2010-10-16 22:30 GMT+3 часа(ов)

artemt

Members


Статус

25 сообщений

Где: Russia
Род занятий:
Возраст:

#3192   2010-10-16 22:24 GMT+3 часа(ов)      
VH Спасибо большое! Ты меня выручил, значит больше времени уделю теории)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3193   2010-10-16 22:25 GMT+3 часа(ов)      
6.15.
(defun F (L) ; список нечетных
(cond
((null L) nil)
((oddp (car L)) (cons (car L) (F (cdr L))))
(T (F (cdr L)))))

(defun F (L) ; список четных
(cond
((null L) nil)
((evenp (car L)) (cons (car L) (F (cdr L))))
(T (F (cdr L)))))

(defun F (L) ; сумма нечетных
(cond
((null L) 0)
((oddp (car L)) (+ (car L) (F (cdr L))))
(T (F (cdr L)))))

(defun F (L) ; сумма четных
(cond
((null L) 0)
((evenp (car L)) (+ (car L) (F (cdr L))))
(T (F (cdr L)))))

отредактировал(а) VH: 2010-10-16 22:30 GMT+3 часа(ов)

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 30

#3194   2010-10-16 22:30 GMT+3 часа(ов)      
VH, нет никакого ворнинга.

(car nil) => nil
(cdr nil) => nil

Это есть в стандарте.

Добавлено:
А, не понял сначала о чём речь.
Но зачем? Почему бы не использовать cl?

отредактировал(а) ander-skirnir: 2010-10-16 22:38 GMT+3 часа(ов)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3195   2010-10-16 22:42 GMT+3 часа(ов)      
7.8.
(defun F (L) ; рекурсия
(cond
((null L) nil)
((numberp (car L)) (F (cdr L)))
(T (car L))))

artemt

Members


Статус

25 сообщений

Где: Russia
Род занятий:
Возраст:

#3196   2010-10-16 23:37 GMT+3 часа(ов)      
VH
Можешь расписать как ты мыслишь при решении этой задачи?
5. Написать простой вариант игры в кости, в котором бросаются две правильные кости. Если сумма выпавших очков равна 7 или 11 --- выигрыш, если выпало (1,1) или (6,6) --- игрок получает право снова бросить кости, во всех остальных случаях ход переходит ко второму игроку, но запоминается сумма выпавших очков. Если второй игрок не выигрывает абсолютно, то выигрывает тот игрок, у которого больше очков. Результат игры и значения выпавших костей выводить на экран с помощью функции print.

artemt

Members


Статус

25 сообщений

Где: Russia
Род занятий:
Возраст:

#3202   2010-10-17 19:14 GMT+3 часа(ов)      
Решите эту задачу. Уже несколько дней с ней мучаюсь
5. Написать простой вариант игры в кости, в котором бросаются две правильные кости. Если сумма выпавших очков равна 7 или 11 --- выигрыш, если выпало (1,1) или (6,6) --- игрок получает право снова бросить кости, во всех остальных случаях ход переходит ко второму игроку, но запоминается сумма выпавших очков. Если второй игрок не выигрывает абсолютно, то выигрывает тот игрок, у которого больше очков. Результат игры и значения выпавших костей выводить на экран с помощью функции print.


Онлайн :

0 пользователь(ей), 37 гость(ей) :