Inspiriert von diesem Beispiel für die Verwendung von d3js fordere ich Sie auf, eine Zeichenfläche (oder eine Sprache Ihrer Wahl) zu erstellen, in der die Spuren des Mauszeigers mit der folgenden Drehung angezeigt werden:
Der Twist
Sie sollten nicht die Spuren anzeigen, auf denen sich der Mauszeiger befand , sondern die "Spuren", auf denen er sich (möglicherweise) in Zukunft befinden wird.
Sie können es tun, indem Sie entweder:
Eine Zeitmaschine oder
Wahrscheinlichkeitsschätzungen basierend auf vorherigen Mausbewegungen
Annahmen
Im Fall haben Sie die Zeitmaschine Implementierung nicht wählen, wenn die Maus nicht mehr als bewegen Schwelle , Millisekunden Sie keine der Routen anzeigen können. (Der Schwellenwert liegt bei Ihnen).
Das Cursorbild liegt bei Ihnen und muss nicht mit dem Cursor des Betriebssystems identisch sein (Sie können sogar einfache kleine Kreise oder Punkte zeichnen).
Es wird keine böse Eingabe getestet: Sie können davon ausgehen, dass die Bewegungen reibungslos sind. Die Definition für "reibungslos" in diesem Fall lautet: Wenn die Mausbewegungen eine Funktion über die x- und y-Achse der Zeichenfläche wären, wäre dies eine kontinuierliche Funktion.
Gewinnen
Die gültige Antwort mit den wenigsten Zeichen im Code gewinnt. Bei einem Gleichstand gewinnt derjenige, der zuerst gebucht wurde.
EDIT: Die gültige Antwort mit den meisten Upvotes gewinnt. Bei einem Gleichstand gewinnt derjenige, der zuerst gebucht wurde. Sie können kreativ bei der Implementierung sein oder präzise bei der Vorhersage. Ich bin nicht mehr der Richter, wir alle sind :)
- Eine gültige Antwort muss eine Möglichkeit enthalten, mit der ich spielen kann (Test! Ich meinte Test), entweder auf einem Online-Tool oder auf einem frei herunterladbaren Compiler / Interpreter / Runtime / etc.
quelle
Antworten:
Javascript
Mein Programm sagt die Richtung des Zeigers voraus, indem es den Durchschnitt der Winkeländerung in Richtung der letzten 20 Mausbewegungen verwendet. Sie verwendet auch die Varianz der Winkeländerung, um eine "Wolke" möglicher Positionen und Richtungen des Zeigers zu erzeugen. Die Farbe jedes Zeigers in der "Wolke" soll die Wahrscheinlichkeit darstellen, dass es sich um die neue Position des Mauszeigers handelt, wobei dunklere Farben eine größere Wahrscheinlichkeit darstellen. Die Entfernung der Zeigerwolke vor der Maus wird anhand der Geschwindigkeit der Mausbewegung berechnet. Es macht nicht die besten Vorhersagen, aber es sieht ordentlich aus.
Hier ist eine Geige: http://jsfiddle.net/5hs64t7w/4/
Es ist interessant, die Zeigerwolke zu vergrößern. Dies kann durch Ändern der
cloudSize
Variablen in der ersten Zeile des Programms eingestellt werden. Hier ist eine Geige mit einer Wolkengröße von 10: http://jsfiddle.net/5hs64t7w/5/Ich habe diese Quellen verwendet, um Formeln für den Mittelwert und die Varianz zu erhalten:
Circular Mean: http://en.wikipedia.org/wiki/Circular_mean
Circular Variance: http://www.ebi.ac.uk/thornton-srv/software/ PROCHECK / nmr_manual / man_cv.html
Hier ist der Code, wenn jemand interessiert ist:
quelle
Java
Ich entschied mich für den Zeitmaschinenansatz. Es stellt sich heraus, dass der Schlüsselbestandteil einer Zeitmaschine java.awt.Robot ist. Mit meinem Programm können Sie Ihre Maus 10 Sekunden lang bewegen. Nach den 10 Sekunden geht es in die Vergangenheit zurück und erstellt Ihre Mausbewegung neu, während Sie diese perfekt vorhersagen.
Hier ist der Code:
quelle
Vanille Javascript
Um den Anfang zu machen, folgt hier eine einfache Vorhersage, die auf zwei Werten basiert. Die letzten
n
Mauspositionen werden gespeichert und in einer Warteschlange gespeichert. Die Vorhersage ist eine einfache lineare Extrapolation des ersten und letzten Elements in der Warteschlange.Dies ist nur der Vorhersagecode. Den vollständigen Code einschließlich der Demo finden Sie in this fiddle:
Die Demo enthält einen Kommentar in der Vorhersage, mit dem Sie stattdessen die letzten beiden Elemente in der Warteschlange für die Vorhersage verwenden können. Macht das Ergebnis "Echtzeit", aber auch weniger "glatt".
Wenn jemand boilerplate workeinen anderen Vorhersagealgorithmus implementieren möchte , zögern Sie nicht. Es ist sowieso nicht viel Arbeit.
quelle
Javascript
Die Vergangenheit ist die beste Vorhersage für die Zukunft - ich und wahrscheinlich auch jemand anderes
Meine Lösung ist sehr einfach. Hier ist zuerst die >>> Geige! <<<
Alles, was es tut, ist die Vergangenheit zu verschieben, so dass es aussieht wie die Zukunftsspur. Grundsätzlich ist keine Mathematik beteiligt (ich weiß, ziemlich langweilig). Sie können die Fehler leicht erkennen, insbesondere wenn Sie den Cursor in Kreisen bewegen. Deshalb habe ich den Weg so kurz gemacht;)
Der Code:
quelle