НавигацияВход для пользователейМетки20 лет
25 лет
9860
add-ins
Atmega16
Casio
casio 9860
CITIZEN
COM-порт
FA-124
Geany
hello world
HP
HP-48
HP-50
HP 50g
IDE
iOS
mk.exe
mk161 for dummies
mkl2mkp
SPI
TI-89 Titanium
Андроид
Анонсы
Дополнительные вопросы по SPI-интерфейсу.
Игры
Импульсная характеристика
История
Итоги
КЭИ
Комбинаторика
Комплексные числа
Конкурсы
Криптография
Куплю БРП Москва
Лунолёты
МК-52
МК-161
Математика
Мысли
ПМК
ПО
Поломка
Пробел в знаниях
Программные метки в МК-1хх
Программы
Прогрессия
Простые числа
Разложение
Регламент
Секундомер
Сервис
События
Справочник В.П. Дьяконова
Справочное пособие
Стыковка
Факторизация
Физика
Фото
ЭКВМ
Юмор
ЯВУ
браузер
версия
внешний модуль
гибкий
гипербола
градиент
дети
дивергенция
калькулятор
книги
компилятор
кривые второго порядка
матрицы
методичка
мк-61
парабола
подзатыльник
практическое руководство
преобразоване координат
программируемый
производная n-го порядка
производная по направлению
прошивка
ротор
рынок
ряд Фурье
справочник
среда разработки
текст
учебник
цветы жизни
цифровая обработка сигналов
частная производная
числовой ряд
читалка
шахматы
эллипс
Новости других сайтов
|
Симметрия на часах (конкурс)На рекламных фотографиях часовая и минутная стрелки часов обычно устанавливаются на отметках 10 и 2 часа, таким образом, чтобы они были симметричны по отношению к вертикальной оси. Реальные часы имеют некоторую дискретность. Например, у конкретной модели часовая стрелка может перемещаться только после окончания очередной минуты. А то и 12 минут. Будем считать наши часы более совершенными: часовая стрелка перемещается всегда пропорционально минутной, а минутная, в свою очередь, пропорционально секундной. Соответственно, говорить о полной симметрии вряд ли уместно, углы могут незначительно отличаться. Требуется найти все положения часовой и минутной стрелок, соответственно, с точностью до секунды, когда достигается симметрия и выбрать из них максимально симметричное относительно оси "12-6" часов. Решений может быть представлено два:
Для участия в конкурсе нужно предложить программы для ПМК, описание и результаты расчетов. Никаких ограничения по моделям нет. Язык программирования должен быть основным входным языком для данного устройства. Допускаются также программы для эмуляторов ПМК. Критерии оценки решения:
Пример решенияДля начала мы попробуем предложить более формальную постановку задачи и наиболее простое в алгоритмическом плане решение на МК-61/52/152. Нетрудно заметить, что за часовая стрелка поворачивается на 30° за 1 час, а минутная и секундная - на 6° за минуту и секунду, соответственно. Если задавать время в виде тройки чисел (h, m, s), где h - часы в диапазоне [0..11], m - минуты [0..59], s - секунды [0..59], тогда углы стрелок можно вычислить следующим образом: Симметрию можно определить по-разному. Используя тригонометрию, необходимо найти значения cos b и cos c, отличающиеся на заданную погрешность. При этом sin b и sin с должны иметь разные знаки. Получаем систему уравнений: Арифметическая проверка чуть более длинная: Поскольку тригонометрия в общем случае вычисляется медленнее арифметики, то для программы поиска решений методом перебора будем использовать арифметику. Программа для МК-61/52/152 будет выглядеть следующим образом: 00.Сх 01.1 02.8 03.0 04.П5 05.1 06.1 07.ПО 08.5 09.9 10.П1 11.5 12.9 13.П2 14.ИП2 15.6 16.0 17.: 18.ИП1 19.+ 20.2 21.: 22.3 23.0 24.ИП0 25.х 26.+ 27.ПС 28.ИП2 29.1 30.0 31.: 32.ИП1 33.6 34.х 35.+ 36.ПВ 37.ИПС 38.Кmax 39.ИП5 40.- 41.Fх≥0 42.68 43.ИП5 44.- 45.К|к| 46.ипс 47./-/ 48.ИПВ 49./-/ 50.Кmax 51./-/ 52.XY 53.FO 54.B^ 55.ИП5 56.- 57.Fx<0 58.68 59.FO 60.- 61.П4 62.К|к| 63.ип3 64.- 65.Fх<0 66.68 67.С/П 68.КИП2 69.ИП2 70.Fх<0 71.14 72.КИП1 73.ИП1 74.Fх<0 75.11 76.КИП0 77.ИП0 78.Fх<0 79.08 80.С/П В регистр П3 заносим µ2. Опытным путем выбрано значение 0,055. Меньшие значения пропускают часть решений, бОльшие дают группы аналогичных результатов с разными погрешностями. Предостерегаю от запуска программы на старых ПМК. Очевидно, что вычисления и проверки на интервале в 1 секунду будут выполняться медленее, чем эта самая секунда, поэтому счет может затянуться на несколько суток. Прогон на эмуляторе дает следующие результаты в порядке их вычислений (положение стрелок 0 часов 0 минут 0 секунд не рассматриваем).
Что дальше?Имеются пути оптимизации переборного алгоритма. Например, можно ограничиться перебором положений часовой стрелки, вычислять симметричное положение минутной и искать положение реальной стрелки в окрестностях этого угла. Думаю, такой алгоритм работал бы на порядки быстрее. Решение, полученое в аналитическом виде (система уравнений и программа поиска корней) потенциально может оказаться наиболее быстрым.
Идеально Автор: Black_queen152
Пусть так Автор: Serguei_Tarassov
Ужасы прошивки 1.02 Автор: Black_queen152
ЗЫЫЫ. Ну почему Автор: Black_queen152
Патамушта Автор: AtH
А как с прогоном Автор: Serguei_Tarassov
Ещё нет МК-152? Проблем нет. Автор: AtH
И не скоро Автор: Serguei_Tarassov
Заменить на
B^ Автор: Serguei_Tarassov
Простенький вариант Автор: Black_queen152
Вопросы Автор: Serguei_Tarassov
1. Время счёта - Автор: Black_queen152
Общее? Автор: Serguei_Tarassov
Конечно, это Автор: Black_queen152
Новая программа Автор: Black_queen152
Ждем Автор: Serguei_Tarassov
Гамма - 40 шагов. Автор: Black_queen152
Описание? Автор: Serguei_Tarassov
Уравнения Автор: Black_queen152
Хронометраж Автор: Serguei_Tarassov
Полный расчёт = Автор: Black_queen152
Программа Автор: Олег (не проверено)
|