> 1 <

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

irishka753

Members


Статус

10 сообщений

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

#764   2009-12-15 12:18 GMT+3 часа(ов)      
В универе дали задание: "Определить функцию (ПЕРЕВЕР L), которая записывает элементы списка в обратном порядке." Я преподу принесла выполненное задание:
define (ПЕРЕВЕР(lambda (l))
(cond (null l) l)
( t ( cons (car l) (ПЕРЕВЕР (cdr l)))))
))

Препод говорит, что здесь получится тот же список, что был исходным. Нужно исправить какую-то мелочь, тогда всё будет в порядке. Помогите пож-та доделать работу! (И ЕЩЁ: Я ПРАВИЛЬНО РАССТАВИЛА СКОБКИ?)

VH

Members


Статус

289 сообщений

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

#766   2009-12-15 14:44 GMT+3 часа(ов)      
Хювёнен-Сеппянен "Мир Лиспа" т.1:
(defun REVERSE1 (L)
(cond
((null L) nil)
(T
(append
(REVERSE1 (cdr L))
(cons (car L) nil)))))

irishka753

Members


Статус

10 сообщений

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

#767   2009-12-16 16:57 GMT+3 часа(ов)      
А что здесь означает append?

_lee

Members


Статус

69 сообщений

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

#768   2009-12-16 18:53 GMT+3 часа(ов)      
Без APPEND даже проще:

 
(defun REVERSE1 (L &optional r)
(if L
(REVERSE1 (cdr L) (cons (car L) r))
r))
 
 

VH

Members


Статус

289 сообщений

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

#769   2009-12-16 20:45 GMT+3 часа(ов)      
> _lee
А вдруг в Scheme нет &optional параметров?
> irishka753
(append) - встроенная функция, «склеивающая» (то есть <официально> объединяющая) списки.

VH

Members


Статус

289 сообщений

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

#770   2009-12-16 21:01 GMT+3 часа(ов)      
А вот еще вариант
Хювёнен-Сеппянен "Мир Лиспа" т.1 (с некоторой «доработкой»):
(defun REV (L)
(cond
((eq L nil) nil)
((eq (cdr L) nil) L)
(T
(cons
(car (REV (cdr L)))
(REV
(cons
(car L)
(REV (cdr (REV (cdr L))))))))))

участвуют исключительно(!) БАЗОВЫЕ функции.

ufasoft

Members


Статус

20 сообщений

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

#771   2009-12-17 02:37 GMT+3 часа(ов)      
VH>А вдруг в Scheme нет &optional параметров?

завести вспомогательную функцию с 2 параметрами и вызывать ее

irishka753

Members


Статус

10 сообщений

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

#779   2009-12-18 14:22 GMT+3 часа(ов)      
Ребята, большое спасибо! Вы меня выручили. VH, последний вариант самый наипонятный ))
Если честно, фразу "А вдруг в Scheme нет &optional параметров?" не поняла. Scheme - это прога для ЛИСПа?

VH

Members


Статус

289 сообщений

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

#781   2009-12-18 15:50 GMT+3 часа(ов)      
Scheme - это Ваш диалект LISPа, на это слово define прямо указывает.

irishka753

Members


Статус

10 сообщений

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

#805   2009-12-22 12:22 GMT+3 часа(ов)      
Ребята, засада! Препод то ли жутко вредничает, то ли чего-то хочет... Он забраковал все предложенные вами варианты, сказал, что я "слишком намудрила". Предлагает в программе использовать дополнительный список, напр-р Х, который изначально будет пуст. Выдёргивать по одному элементу из L, вставлять в Х - так типа получится правильный порядок. Помогите написать это грамотно, чтоб придраться было не к чему!

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#808   2009-12-22 16:12 GMT+3 часа(ов)      
(define (reverse input-list)
(let get-reverse ((input-list input-list) (new-list '()))
(if (null? input-list)
new-list
(get-reverse (cdr input-list) (cons (car input-list) new-list)))))

> (reverse '(a b c d e f))
(f e d c b a)

VH

Members


Статус

289 сообщений

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

#809   2009-12-22 16:18 GMT+3 часа(ов)      
Программировать с учетом уровня некомпетентности препода - довольно ЗАБАВНО.
У племянника <грызущего гранит углубленно, в том числе с "личным" преподом> в школе «преподавательница физики» сказанула: "Стирай всё с доски - таких формул НЕ БЫВАЕТ".
То, что препод предложил - ровно то, что в сообщении _lee #768.
А ежели препод хочет, чтобы было (setq) как на Бейсике - так Бейсик бы и преподавал.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#810   2009-12-22 16:40 GMT+3 часа(ов)      
У препода тоже интернет есть И про сайт этот он также знает.
С человеком достаточно поговорить, чтобы понять разбирается ли он в предмете. Думаю, разговор с иришкой будет не долгим...
ИМХО, схема не сложнее барсика, а вот последний знать бы не помешало.

VH

Members


Статус

289 сообщений

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

#811   2009-12-22 16:52 GMT+3 часа(ов)      
Достаточно услышать из уст препода <как оценку работы> "...слишком намудрила...", чтобы понять, что сам препод умственных усилий <панически> боится, особенно предложение их со стороны сайта (ха-ха), а конкурировать с сайтом (чтобы на сайте студент предлагал продукт умственного труда препода, а не наоборот) сил-то и нету.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#812   2009-12-22 17:05 GMT+3 часа(ов)      
Да, преподы сейчас ленивые пошли. Раньше бывало объяснят, разжуют и диплом напишут
А теперь:
- Вы мне мешаете, не видите я первокурсников арифметики учу!
- Так Зарумшан, смотри два пальца плюс два пальца. Сколько будет пальцев? Считай на калькуляторе, если умеешь.
Вот так то.

irishka753

Members


Статус

10 сообщений

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

#813   2009-12-22 17:40 GMT+3 часа(ов)      
Не, ну вот это вот

(define (reverse input-list)

(let get-reverse ((input-list input-list) (new-list '()))

(if (null? input-list)

new-list

(get-reverse (cdr input-list) (cons (car input-list) new-list)))))

Мне вообще трудно понять. Можете немного прокомментировать?
Я не утверждаю, что ЛИСП понимаю. Мне до Вас, ребята ещё ого-го сколько...

LispUser

Members


Статус

20 сообщений

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

#815   2009-12-22 18:38 GMT+3 часа(ов)      
irishka753
define (ПЕРЕВЕР(lambda (l))
(cond (null l) l)
( t ( cons (car l) (ПЕРЕВЕР (cdr l)))))
))


Может,
 
(define (ПЕРЕВЕР l)
(cond (null l) l)
(t (cons (ПЕРЕВЕР (cdr l)) (car l))))
 

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#816   2009-12-22 19:15 GMT+3 часа(ов)      
А сиЁ на каком диалекте

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#818   2009-12-22 21:41 GMT+3 часа(ов)      
Коль все молчат! Может так тебе будет понятнее:
 
(define (reverse input-list)
(define (get-reverse input-list result-list)
(if (null? input-list)
result-list
(get-reverse (cdr input-list) (cons (car input-list) result-list))))
(get-reverse input-list '()))

P.S. Если это не понятно:
> (cons 'x '(y z))
(x y z)
> (cons 'x '())
(x)
> (cons '(x y) 'z))
((x y) . z)
рекомендую дать взятку

отредактировал(а) misha: 2009-12-22 21:53 GMT+3 часа(ов)

irishka753

Members


Статус

10 сообщений

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

#834   2009-12-23 13:13 GMT+3 часа(ов)      
misha, я не знакома с таким способом записи. Что такое input-list, или как понимать get-reverse, а уж что означает null?, я даже не предполагаю(зачем знак вопроса нужен???). Боюсь, что он не примет у меня это решение, сказав, что я опять намудрила. Он мне недавно выдал, что ф-ии if нет в ЛИСПе.
А взятку он вряд ли будет брать. Он немного сдвинутый. Весь семестр нам рассказывал, что человек рождён для того, чтобы преодолевать трудности и что мудрей самим себе эти трудности создавать, нежели чтоб они свалились на голову неожиданно. И обещал нам в этом помогать.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#835   2009-12-23 13:53 GMT+3 часа(ов)      
Жесть! Короче, быстро и внимательно проработай краткое руководство. Важно: набирай примеры в интерпритаторе, изменяй их, а затем анализируй результат. За 8 часов смему даже школьник на 50% осилит, тут главное упорство.

отредактировал(а) misha: 2009-12-23 14:47 GMT+3 часа(ов)

LispUser

Members


Статус

20 сообщений

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

#838   2009-12-23 15:18 GMT+3 часа(ов)      
irishka753, какой у Вас институт?

Цитата
misha :
А сиЁ на каком диалекте


Scheme? Кстати, спасибо за ссылку на руководство.

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#840   2009-12-23 15:39 GMT+3 часа(ов)      
Цитата
LispUser :
Цитата
misha :
А сиЁ на каком диалекте


Scheme? Кстати, спасибо за ссылку на руководство.

Да не за что! Посмотрите на синтаксис cond, и как понимать null. Не все то схема, что с define начинается

irishka753

Members


Статус

10 сообщений

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

#871   2009-12-24 18:12 GMT+3 часа(ов)      
LispUser, в СГУ я учусь...
misha, спасибо за ссылочку )) ...изучаю...

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#876   2009-12-24 19:44 GMT+3 часа(ов)      
Цитата
irishka753 :
misha, спасибо за ссылочку )) ...изучаю...

С этого и надо было начинать

VH

Members


Статус

289 сообщений

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

#880   2009-12-24 19:59 GMT+3 часа(ов)      
Препод не соизволил сообщить студентам, что будет им Scheme преподавать,
придурок

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#881   2009-12-24 20:07 GMT+3 часа(ов)      
Может это и не схема, а какой нибудь-другой диалект.
> 1 <


Онлайн :

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