matematykaszkolna.pl
zadanie dla fil geometria obliczeniowa Mariusz: https://prnt.sc/st3m6x Jak napisałbyś program do znajdowania otoczki wypukłej korzystając z wyżej wymienionego algorytmu Sugerowana struktura danych to dwukierunkowa lista cykliczna
3 cze 17:24
fil: Czesc Mariusz, moge cos napisac zaraz, bo pamietam ze kiedys ten temat przerabialem, ale nie udalo mi sie skleic dzialajacego programu. Wspolrzedne punktu przyjmujemy jako inty?
3 cze 17:33
fil: "sorted by polar angle in counterclockwise order around p0" − czyli wedlug czego mam posortowac?
3 cze 18:14
fil: Podrzucam kod − udalo mi sie napisac https://pastebin.com/ra8cHmi3
3 cze 20:35
Mariusz: Na wektorze to pewnie i ja wygrzebałbym jakiś kod według miary kąta nachylenia do osi OX przeciwnie do ruchu wskazówek zegara Jeśli miałeś układ biegunowy to jest to miara kąta nachylenia promienia wodzącego do osi biegunowej Gdy poznasz liczby zespolone to dowiesz się że ten kąt to argument liczby zespolonej https://pastebin.com/07r6DwmV No ja napisałem coś takiego z bardzo małą pomocą Pytającego a ty chyba wziąłeś kod od geeksów Masz jakiś pomysł na takie zmodyfikowanie kodu aby usunięte punkty współliniowe były umieszczane na końcu wektora
3 cze 22:13
3 cze 22:17
fil: Nawet widze ze kod mozna troche zmodyfikowac, pozbyc sie zmiennej globalnej, do funkcji compare() dodac trzeci argument − wtedy fragment kodu by tak wygladal std::sort(points.begin() + 1, points.end(), [&start](auto firstpoint, auto secondpoint) { return compare(start, firstpoint, secondpoint); });
3 cze 22:19
fil: Wlasnie ten algorytm co podeslales, znalazlem taki sam ale w polskiej wersjii. Do ktorego vectora dodawac te usuniete elementy?
3 cze 22:20
fil: https://www.youtube.com/watch?v=iURPY28jOD4 −−− tutaj koles tez pokazuje tylko ten algorytm w 5:20. Tez z miesiac temu rozmawialem z wykladowca informatyki na politechnice krakowskiej o tym algorytmie
3 cze 22:22
fil: Tez widze ze napiaslem recznie sortowanie
3 cze 22:26
3 cze 22:36
Mariusz: Chodzi o to że teraz funkcja int removeDup(std::vector<Point> &A); nadpisuje punkty współliniowe i zwraca liczbę punktów Chodzi o to aby nadpisane punkty umieścić w wektorze na pozycjach prev+1,...,size−1
3 cze 22:39
fil: rozumiem ze direction(...) != 0 sprawdza czy 3 punkty sa wspoliniowe?
3 cze 22:44
Mariusz: Widziałeś ten algorytm ? https://www.youtube.com/watch?v=kdAiCZQVuvI Punkty są współliniowe gdy direction(...) == 0
3 cze 22:49
fil: jedyne co teraz na szybko przychodzi do glowy to miec jakas zmienna pomocnicza int k = 0 for (...; i < points.size() − k;...) if (...) { ... points.pushback(..); k++; } N aszybko, nie mam gwarancji ze bedzie poprawnie dzialac. Juz pozno jest, moze cos rano wymysle
3 cze 23:09
fil: Poczekaj, te "niechciane" elementy sa nadal w tej tablicy, to jutro poprawie
3 cze 23:38
Mariusz: Poza tym sugerowana była inna struktura danych np Diks i Rytter proponują dwukierunkową listę cykliczną Na wektorze napisałbym na podstawie pseudokodu Cormena przy niewielkiej pomocy Pytającego
4 cze 09:58
fil: Przy okazji −− znasz jakies strony gdzie moge sobie pocwiczyc algorytmike/rozwiazywanie problemow −− oczywiscie angielskie. Project Eulera juz znam
4 cze 10:01
Mariusz: Jeśli chodzi o otoczkę to widziałeś te kody ? https://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain Ciekawy jestem jak przepisać ten algorytm tak aby punkty przechowywane były na liście dwukierunkowej
4 cze 11:13
Mariusz: https://pastebin.com/fhgu9yS8 W liniach nr 40 oraz nr 46 ten pierwszy warunek dla pętli while mi przeszkadza aby przepisać kod z użyciem listy dwukierunkowej
4 cze 11:33
zadanko: fil,polecam hackerrank,angielski spoj,oraz codewars
4 cze 12:58