> 1 <

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

finticul

Members


Статус

8 сообщений

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

#2691   2010-08-08 03:49 GMT+3 часа(ов)      
Использую Dr.Scheme.
Помогите пожалуйста разобраться.

Допустим,
(> (remainder 3 3) 0) - ложь
(> (remainder 2 3) 0) - истина

Я хочу сконструировать составной предикат

(> (and (remainder 3 3) (remainder (- 3 1) 3)) 0)

По идее интерпретатор должен вычислить выражения по одному слева направо и если хотя бы одно значение ложно, то
всё выражение ложно и остальные значения не вычисляются. Т.е я жду результата - ЛОЖЬ, но в результате машина выдаёт мне - ИСТИНА. Почему?

Вообще, мне это нужно, чтобы получить последовательность
(1 2 1 1 4 1 1 6 1 1 7 1 1 8 1 1 ...)

Но у меня выходит
(1 2 8/3 1 4 14/3 1 6 20/3 1 8 26/3)

Мой код
(define (d k)
(if (> (and (remainder k 3) (remainder (- k 1) 3)) 0)
(+ 2 (* 2 (/ (- k 2) 3)))
1))

(> (and (remainder 3 3) (remainder (- 3 1) 3)) 0) - результат ИСТИНА, а не ложь.

(list (d 1) (d 2) (d 3) (d 4) (d 5) (d 6) (d 7) (d (d 9) (d 10) (d 11) (d 12))
(1 2 8/3 1 4 14/3 1 6 20/3 1 8 26/3)

отредактировал(а) finticul: 2010-08-08 18:41 GMT+3 часа(ов)

misha

Moderators


Статус

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

#2692   2010-08-08 04:05 GMT+3 часа(ов)      
>Подскажите, пожалуйста, почему я получаю истину, как результат в этом случае. Ведь (остаток 3 3) - есть нуль.

Только #f является ложью.

misha

Moderators


Статус

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

#2694   2010-08-08 19:04 GMT+3 часа(ов)      
>(> (and (remainder 3 3) (remainder (- 3 1) 3)) 0) - результат ИСТИНА, а не ложь.

Так и должно быть. Воспользуйтесь отладчиком.

misha

Moderators


Статус

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

#2695   2010-08-08 19:30 GMT+3 часа(ов)      
(define (d k)
(if (and (> (remainder k 3) 0) (> (remainder (- k 1) 3) 0))
(+ 2 (* 2 (/ (- k 2) 3)))
1))

misha

Moderators


Статус

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

#2696   2010-08-08 19:40 GMT+3 часа(ов)      
Почему Вы выбрали лисп(схему)?
Вы занимаетесь по книге?

finticul

Members


Статус

8 сообщений

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

#2699   2010-08-09 03:09 GMT+3 часа(ов)      
Да, я начал недавно заниматься по книге "Структура и интерпретация компьютерных программ". Опыта в программировании нет.
Спасибо большое за помощь. Думаю, вопросов будет ещё много.
> 1 <


Онлайн :

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