реклама на сайте
подробности

 
 
> Движение деревянного круга, налево и направо
Andrei Aleksandr...
сообщение Sep 18 2008, 03:26
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 21-04-08
Пользователь №: 36 974



Задача имеется такая smile.gif

Есть круг, размеченный на секторы - от 0 до 15. Он крутится. Можно выбрать любой текущий ("для работы") сектор. Например, мы находимся сейчас на секторе номер пять и нам нужно перейти на сектор номер дестяь. Мы прокручиваем круг на пять секторов, допустим, вправо. Но если текущий сектор пять, а мы хотим перейти на третий, то если бы прокрутили в ту же сторону, то пришлось бы прокручивать всю остальную часть круга, прежде чем перейти на нужный - третий.

Экономичнее было бы прокрутить круг налево - и очутится на номере три уже через два сектора. Но как я могу определить, в какую сторону мне экономичнее крутить - налево или направо? Если даны две данных - номер текущего сектора и номер сектора, на который следует перейти.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Sep 19 2008, 09:31
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Вычисляете разности (n-m) и (m-n) по модулю 16, сравниваете их и крутите по меньшему. Например,

1) (5-3)mod16=2, (3-5)mod16=-2+16=14, 2<14 - крутите влево.
2) (5-10)mod16=-5+16=11, (10-5)mod16=5, 11>5 - крутите вправо.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 19 2008, 14:45
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(=GM= @ Sep 19 2008, 12:31) *
Вычисляете разности (n-m) и (m-n) по модулю 16, сравниваете их и крутите по меньшему. Например,
1) (5-3)mod16=2, (3-5)mod16=-2+16=14, 2<14 - крутите влево.
2) (5-10)mod16=-5+16=11, (10-5)mod16=5, 11>5 - крутите вправо.
А зачем вычислять вторую, она ведь жёстко связана с первой, новой информации не несёт.
Достаточно сравнивать с половиной количества

Код
(5-3) mod 16 = 2
2 <= (16 div 2) истинно - крутите влево.

(5-10) mod 16 = -5+16 = 11
11 <= (16 div 2) - ложно - крутите вправо


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 01:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016