Höchstgeschwindigkeit: Unterschied zwischen den Versionen
K (tinyint) |
K (→Trivia) |
||
(4 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Die [[Höchstgeschwindigkeit]] der [[Rennwagen|Karoautos]] auf Karopapier beträgt etwa | + | 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>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). | + | 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" | ||
Zeile 7: | Zeile 17: | ||
! Zugrichtung !! max ↔ !! max ↕ !! max Geschwindigkeit | ! 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 | ||
+ | |||
+ | {| class="wikitable sortable" | ||
|- | |- | ||
− | + | ! 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= | =Trivia= | ||
− | In Spiel {{GID|144952|144952 - Max-Speed}} erreichte {{Benutzer|ultimate}} als erster eine der Höchstgeschwindigkeiten ( | + | * 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:
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