diff --git a/specifikace.md b/specifikace.md index 3b3dccd..694ab63 100644 --- a/specifikace.md +++ b/specifikace.md @@ -128,6 +128,19 @@ Všimněte si, že simulace má několik neintuitivních zjednodušení a vlastn Dále, pro detekci průsečíku lodi s asteroidem či cílem schválně používáme `euclidean_distance`, která má odmocninu zaokrouhlenou dolů. Sice by kolize šly počítat exaktně pomocí druhých mocnin vzdálenosti, ale v okrajových případech bychom naráželi na limity velikosti čísel. +Dejte pozor, že toto neexaktní počítání kolizí je třeba implementovat i do akcelerační struktury pro hledání blízkých asteroidů a cílů, +pokud nějakou budete používat. -Naše rustová (vyhodnocovadlo) i typescriptová (webová vizualizace) implementace používá místo exaktní `isqrt` klasickou float64 odmocninu, kterou poté zaokrouhlí dolů na celé číslo. +Naše rustová (vyhodnocovadlo) i typescriptová (webová vizualizace) implementace používá místo exaktní `isqrt` klasickou "float64" odmocninu, kterou poté zaokrouhlí dolů na celé číslo. Pro rozsahy hodnot relevantní v této úloze dávají obě funkce stejné výsledky. + +#### Debugování pomocí webové vizualizace + +Do [webové vizualizace](https://kvaleya.gitlab.io/asteracer/) můžete nahrát svou sadu instrukcí, kterou stránka poté vyhodnotí. +Pro debugování se může hodit stáhnout si z ní "záznam simulace" následujícího formátu: + +Záznam obsahuje jeden řádek pro každou vstupní instrukci. +Každý řádek popisuje stav světa po vykonání dané instrukce. +První dvě čísla jsou X a Y pozice lodi, třetí a čtvrté číslo je X a Y rychlost lodi. +Poté následuje několik jedniček nebo nul, kdy každá odpovídá jednomu cíli. +Pokud už byl v simulaci daný cíl dosažen, má hodnotu 1, jinak má hodnotu 0.