Вдохновленный этим примером использования d3js , я призываю вас создать холст (или ваш эквивалент по выбору языка), в котором будут отображаться следы указателя мыши со следующим поворотом:
Твист
Вы не должны показывать следы , где указатель мыши был , но «следы» , где она будет (может) быть в будущем.
Вы можете сделать это с помощью:
Машина времени или
Вероятностные оценки, основанные на предыдущих движениях мыши
Предположения
Если вы не выбрали реализацию машины времени, когда мышь не двигается более пороговых миллисекунд, вы не можете отобразить ни один из следов. ( Пороговое значение зависит от вас, чтобы выбрать).
Изображение курсора зависит от вас и не обязательно должно совпадать с курсором ОС (вы даже можете нарисовать простые маленькие кружки или точки).
Никакой злой вклад не будет проверен: вы можете считать, что движения плавные. «Гладкое» определение для этого случая: если бы движения мыши были функцией по осям x и y холста - это была бы непрерывная функция.
выигрыш
Действительный ответ с наименьшим количеством символов в коде победит. В случае ничьей победит тот, кто был размещен первым.
РЕДАКТИРОВАТЬ: победит действительный ответ с наибольшим количеством голосов . В случае ничьей победит тот, кто был размещен первым. Вы можете быть креативным в реализации или быть точным с предсказанием. Я больше не судья, мы все такие :)
- Действительный ответ должен включать в себя способ игры (тест! Я имел в виду тест), либо с помощью онлайн-инструмента, либо с помощью свободно загружаемого компилятора / интерпретатора / среды выполнения / и т.д.
источник
Ответы:
Javascript
Моя программа предсказывает направление указателя, используя среднее угловое изменение в направлении последних 20 движений мыши. Он также использует дисперсию углового изменения для создания «облака» возможных местоположений и направлений указателя. Предполагается, что цвет каждого указателя в «облаке» представляет вероятность того, что он является новой позицией указателя мыши, в то время как более темные цвета представляют большую вероятность. Расстояние до облака указателя впереди мыши рассчитывается с использованием скорости движения мыши. Это не делает лучшие прогнозы, но выглядит аккуратно.
Вот скрипка: http://jsfiddle.net/5hs64t7w/4/
Увеличение размера облака указателя интересно посмотреть. Это может быть установлено путем изменения
cloudSize
переменной в первой строке программы. Вот скрипка с облаком размером 10: http://jsfiddle.net/5hs64t7w/5/Я использовал эти источники, чтобы получить формулы для кругового среднего и дисперсии:
Круговое среднее: http://en.wikipedia.org/wiki/Circular_mean
Круговое отклонение: http://www.ebi.ac.uk/thornton-srv/software/ ProCheck / nmr_manual / man_cv.html
Вот код, если кому-то интересно:
источник
Джава
Я решил использовать подход машины времени. Оказывается, ключевым компонентом машины времени является java.awt.Robot. Моя программа позволяет перемещать мышь в течение 10 секунд. Через 10 секунд он возвращается во времени и воссоздает движение мыши, в то же время прекрасно предсказывая.
Вот код:
источник
Ванильный Javascript
Просто для начала, вот простое предсказание, основанное на двух значениях. Последние
n
позиции мыши запоминаются и хранятся в очереди, прогноз - простая линейная экстраполяция первого и последнего элемента в очереди.Это просто код предсказания, полный код, включая демонстрацию, можно увидеть в this fiddle:
Демонстрация содержит комментарий в прогнозе, который позволяет вместо этого использовать два последних элемента в очереди для прогнозирования. Делает результат более «в реальном времени», но также и менее «гладким».
Если кто-то хочет использовать boilerplate workдля реализации другого алгоритма прогнозирования, не стесняйтесь. Это не так много работы в любом случае.
источник
Javascript
Прошлое - лучший прогноз на будущее - я и, возможно, кто-то еще
Мое решение очень простое. Во-первых, это >>> Скрипка! <<<
Все, что он делает, это смещает прошлый след, так что он выглядит как будущий след. В основном, нет математики (я знаю, довольно скучно). Вы можете легко увидеть ошибки, особенно при перемещении курсора по кругу. Вот почему я сделал след так коротким;)
Код:
источник