Höchstgeschwindigkeit: Unterschied zwischen den Versionen

Aus KaroWiki
Zur Navigation springen Zur Suche springen
K (Höchstgeschwindigkeiten)
 
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Die [[Höchstgeschwindigkeit]] der [[Rennwagen|Karoautos]] auf Karopapier beträgt etwa 181 Kästchen/Zug. Diese ist aber nur in diagonaler Richtung von rechts unten nach links oben zu erreichen. Die maximale Geschwindigkeit in der horizontale beträgt 128 (nach links fahrend) oder 127 (nach rechts fahrend).
+
Die theoretische [[Höchstgeschwindigkeit]] der [[Rennwagen|Karoautos]] auf Karopapier beträgt etwa 182,4 Kästchen/Zug. Diese ist aber nur in diagonaler Richtung von rechts unten nach links oben zu erreichen. Die maximale Geschwindigkeit in der horizontale beträgt -129 (nach links fahrend) oder 128 (nach rechts fahrend).
  
Diese Grenze ist technisch bedingt, da {{Benutzer|Didi}} den Zugvektor in der Datenbank als „signed <code>smallint</code>“ (-128 bis 127) speichert, und dabei sowohl die horizontalen als auch vertikalen Vektoren separat speichert. Dabei ist die Zugrichtung „nach links“ als negativ, die Zugrichtung „nach rechts“ als positiv gespeichert. Ähnliches gilt für die Zugrichtung „nach oben“ (negativ gespeichert) und „nach unten“ (positiv gespeichert). Aus dem Satz des Pythagoras ergeben sich somit die maximalen Geschwindigkeiten:
+
Diese Grenze ist technisch bedingt, da {{Benutzer|Didi}} den Zugvektor in der Datenbank als „signed <code>tinyint</code>“ (-128 bis 127) speichert, und dabei sowohl die horizontalen als auch vertikalen Vektoren separat speichert. Dabei ist die Zugrichtung „nach links“ als negativ, die Zugrichtung „nach rechts“ als positiv gespeichert. Ähnliches gilt für die Zugrichtung „nach oben“ (negativ gespeichert) und „nach unten“ (positiv gespeichert).
 +
 
 +
Aus dem Satz des Pythagoras ergeben sich somit die maximalen theoretischen Geschwindigkeiten. Diese sind aber wiederum auch nicht erreichbar, da die maximale Größe einer [[Karte]] begrenzt ist (max. 65536 Karos). Siehe [[#Praktische Höchstgeschwindigkeiten]]
 +
 
 +
Obwohl dies bedeutet, dass nur Vektoren mit jeweils x und y im Bereich -128 bis 127 in der Datenbank gespeichert werden können, ist der maximal ausführbare Vektor jeweils betragsmäßig um 1 größer, weil {{Benutzer|Didi}} trotzdem immer alle Möglichkeiten +/-1 um das was in der Datenbank gespeichert ist zurück gibt. So kann man dann zwar einen Vektor mit größerem Wert als datenbanktechnisch möglich auswählen, in der Datenbank wird dieser jedoch nur mit betragsmäßig eins weniger gespeichert. So kann man diese Geschwindigkeit nicht überschreiten.
 +
 
 +
Gut zu sehen, ist dieser Unterschied im Logfile und in der API z. B. für Spiel {{GID|144964|144964 - Rekordversuch}}:
 +
* Im [https://www.karopapier.de/logs/144964.log Logfile] wird zwar -129 ausgegeben...
 +
* ...die [https://www.karopapier.de/api/games/144964?moves=1 API] gibt anschließend aber nur -128 zurück
 +
 
 +
=Theoretische Höchstgeschwindigkeiten=
 +
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
 
! Zugrichtung !! max ↔ !! max ↕ !! max Geschwindigkeit
 
! Zugrichtung !! max ↔ !! max ↕ !! max Geschwindigkeit
 
|-
 
|-
| ↖ || -128 || -128 || '''181,02''' Karos/Zug
+
| ↖ || -129 || -129 || '''182,43''' Karos/Zug
 +
|-
 +
| ↗ || +128 || -129 || 181,73 Karos/Zug
 +
|-
 +
| ↙ || -129 || +128 || 181,73 Karos/Zug
 +
|-
 +
| ↘ || +128 || +128 || 181,02 Karos/Zug
 +
|-
 +
| ← || -129 ||    0 || 129,00 Karos/Zug
 +
|-
 +
| ↑ ||    0 || -129 || 129,00 Karos/Zug
 
|-
 
|-
| || 127 || -128 || 180,31 Karos/Zug
+
| || +128 ||   0 || 128,00 Karos/Zug
 
|-
 
|-
| || -128 || 127 || 180,31 Karos/Zug
+
| ||   0 || +128 || 128,00 Karos/Zug
 +
|}
 +
 
 +
=Praktische Höchstgeschwindigkeiten=
 +
 
 +
Bei den praktischen Höchstgeschwindigkeiten muss die maximale Kartengröße von 65535 Zeichen inkl. Zeilenumbrücke für jede Zeile außer der letzten berücksichtigt werden
 +
 
 +
{| class="wikitable sortable"
 
|-
 
|-
| ↘ ||  127 ||  127 || 179,61 Karos/Zug
+
! Hauptbewegung !! min. Kartengröße in Hauptrichtung !! max. Kartengröße in anderer Richtung !! befahrbarer Bereich !! max. möglicher Vektor in anderer Richtung !! Vektorlänge
 
|-
 
|-
| ← || -128 ||   0 || 128,00 Karos/Zug
+
| vx = -129 Karos/Zug () || size_x = 129 * (129 + 1) / 2 = 8388 Karos || size_y = (65535 + 1) / (8388 + 1) = 7,8 = 7 Karos || 7 Karos - 2 Rand = 5 Karos || 2 Karos/Zug || '''129,02 Karos/Zug'''
 
|-
 
|-
| ↑ ||   0 || -128 || 128,00 Karos/Zug
+
| vy = -129 Karos/Zug () || size_y = 129 * (129 + 1) / 2 = 8388 Karos || size_x = (65535 + 1) / (8388) - 1 = 6,8 = 6 Karos || 6 Karos - 2 Rand = 4 Karos || 2 Karos/Zug || '''129,02 Karos/Zug'''
 
|-
 
|-
| → || 127 ||   0 || 127,00 Karos/Zug
+
| vx = +128 Karos/Zug () || size_x = 128 * (128 + 1) / 2 = 8256 Karos || size_y = (65535 + 1) / (8256 + 1) = 7,9 = 7 Karos || 7 Karos - 2 Rand = 5 Karos || 2 Karos/Zug || '''129,02 Karos/Zug'''
 
|-
 
|-
| ↓ ||   0 || 127 || 127,00 Karos/Zug
+
| vy = +128 Karos/Zug () || size_y = 128 * (128 + 1) / 2 = 8256 Karos || size_x = (65535 + 1) / (8256) - 1 = 6,9 = 6 Karos || 6 Karos - 2 Rand = 4 Karos || 2 Karos/Zug || '''129,02 Karos/Zug'''
 
|}
 
|}
  
 
=Trivia=
 
=Trivia=
In Spiel {{GID|144952|144952 - Max-Speed}} erreichte {{Benutzer|ultimate}} als erster eine der Höchstgeschwindigkeiten (127 Karos/Zug nach rechts fahrend).  
+
* In Spiel {{GID|144952|144952 - Max-Speed}} erreichte {{Benutzer|ultimate}} als erster eine der Höchstgeschwindigkeiten (128 Karos/Zug nach rechts fahrend).  
 +
* In Spiel {{GID|144964|144964 - Rekordversuch}} erreichte {{Benutzer|ultimate}} als erster die aufgrund der begrenzten Kartengröße maximale, praktische Höchstgeschwindigkeit von -129|2 bzw. -129|-2
  
 
[[Kategorie:Definition]]
 
[[Kategorie:Definition]]

Aktuelle Version vom 23. September 2024, 11:09 Uhr

Die theoretische Höchstgeschwindigkeit der Karoautos auf Karopapier beträgt etwa 182,4 Kästchen/Zug. Diese ist aber nur in diagonaler Richtung von rechts unten nach links oben zu erreichen. Die maximale Geschwindigkeit in der horizontale beträgt -129 (nach links fahrend) oder 128 (nach rechts fahrend).

Diese Grenze ist technisch bedingt, da Didi den Zugvektor in der Datenbank als „signed tinyint“ (-128 bis 127) speichert, und dabei sowohl die horizontalen als auch vertikalen Vektoren separat speichert. Dabei ist die Zugrichtung „nach links“ als negativ, die Zugrichtung „nach rechts“ als positiv gespeichert. Ähnliches gilt für die Zugrichtung „nach oben“ (negativ gespeichert) und „nach unten“ (positiv gespeichert).

Aus dem Satz des Pythagoras ergeben sich somit die maximalen theoretischen Geschwindigkeiten. Diese sind aber wiederum auch nicht erreichbar, da die maximale Größe einer Karte begrenzt ist (max. 65536 Karos). Siehe #Praktische Höchstgeschwindigkeiten

Obwohl dies bedeutet, dass nur Vektoren mit jeweils x und y im Bereich -128 bis 127 in der Datenbank gespeichert werden können, ist der maximal ausführbare Vektor jeweils betragsmäßig um 1 größer, weil Didi trotzdem immer alle Möglichkeiten +/-1 um das was in der Datenbank gespeichert ist zurück gibt. So kann man dann zwar einen Vektor mit größerem Wert als datenbanktechnisch möglich auswählen, in der Datenbank wird dieser jedoch nur mit betragsmäßig eins weniger gespeichert. So kann man diese Geschwindigkeit nicht überschreiten.

Gut zu sehen, ist dieser Unterschied im Logfile und in der API z. B. für Spiel 144964 - Rekordversuch:

  • Im Logfile wird zwar -129 ausgegeben...
  • ...die API gibt anschließend aber nur -128 zurück

Theoretische Höchstgeschwindigkeiten

Zugrichtung max ↔ max ↕ max Geschwindigkeit
-129 -129 182,43 Karos/Zug
+128 -129 181,73 Karos/Zug
-129 +128 181,73 Karos/Zug
+128 +128 181,02 Karos/Zug
-129 0 129,00 Karos/Zug
0 -129 129,00 Karos/Zug
+128 0 128,00 Karos/Zug
0 +128 128,00 Karos/Zug

Praktische Höchstgeschwindigkeiten

Bei den praktischen Höchstgeschwindigkeiten muss die maximale Kartengröße von 65535 Zeichen inkl. Zeilenumbrücke für jede Zeile außer der letzten berücksichtigt werden

Hauptbewegung min. Kartengröße in Hauptrichtung max. Kartengröße in anderer Richtung befahrbarer Bereich max. möglicher Vektor in anderer Richtung Vektorlänge
vx = -129 Karos/Zug (←) size_x = 129 * (129 + 1) / 2 = 8388 Karos size_y = (65535 + 1) / (8388 + 1) = 7,8 = 7 Karos 7 Karos - 2 Rand = 5 Karos 2 Karos/Zug 129,02 Karos/Zug
vy = -129 Karos/Zug (↑) size_y = 129 * (129 + 1) / 2 = 8388 Karos size_x = (65535 + 1) / (8388) - 1 = 6,8 = 6 Karos 6 Karos - 2 Rand = 4 Karos 2 Karos/Zug 129,02 Karos/Zug
vx = +128 Karos/Zug (→) size_x = 128 * (128 + 1) / 2 = 8256 Karos size_y = (65535 + 1) / (8256 + 1) = 7,9 = 7 Karos 7 Karos - 2 Rand = 5 Karos 2 Karos/Zug 129,02 Karos/Zug
vy = +128 Karos/Zug (↓) size_y = 128 * (128 + 1) / 2 = 8256 Karos size_x = (65535 + 1) / (8256) - 1 = 6,9 = 6 Karos 6 Karos - 2 Rand = 4 Karos 2 Karos/Zug 129,02 Karos/Zug

Trivia

  • In Spiel 144952 - Max-Speed erreichte ultimate als erster eine der Höchstgeschwindigkeiten (128 Karos/Zug nach rechts fahrend).
  • In Spiel 144964 - Rekordversuch erreichte ultimate als erster die aufgrund der begrenzten Kartengröße maximale, praktische Höchstgeschwindigkeit von -129|2 bzw. -129|-2