widziałem już rozwiązane zadanie w innych językach (linklink) ale przy próbie rozwiązania w php napotykam ścianę - nie wiem jak to "ładnie" napisac.
Bo brzydko potrafię: obliczam odległości, tworze ich tablicę, sortuje ją i następnie przyrównuje posortowaną wartosć do wartości zapisanej jako atrybut obiektu punkt i go wypisuje (w założeniach jest "Żadne 2 punkty nie leżą w tej samej odległości od środka układu współrzędnych"). Dodam, że nie przejmuje się algorytmami sprawdzającymi spoja i chcę tylko napisać program który da poprawny wynik, ale nawet biorąc to pod uwagę wydaje mi się ze ten kod jest beznadziejny:
class Punkt { public $x; public $y; public $odleglosc; public function obliczOdleglosc() { $this->odleglosc = sqrt(pow($this->x, 2) + pow($this->y, 2)); return $this->odleglosc; } } // tworze punkty $punkt1 = new Punkt(); $punkt1->x = 2; $punkt1->y = 0; $punkt2 = new Punkt(); $punkt2->x = 2; $punkt2->y = 2; $punkt3 = new Punkt(); $punkt3->x = -3; $punkt3->y = 0; // tworze tablice z punktami i tablice z ich odleglosciami $punkty = [ $punkt1, $punkt2, $punkt3 ]; $odleglosci = [ $punkt1->obliczOdleglosc(), $punkt2->obliczOdleglosc(), $punkt3->obliczOdleglosc() ]; // sortuje asort($odleglosci); // wypisuje var dumpem foreach ($odleglosci as $odleglosc) { foreach ($punkty as $punkt) { if ($odleglosc == $punkt->odleglosc) { var_dump($punkt); } } }
jak to rozwiązać lepiej? jakieś wskazówki proszę