20 / 31
Jan 2019

Uwaga! Poniższe rozwiązanie jest niepoprawne ponieważ Mariusz zmodyfikował zadanie po moich testach. Dzisiaj wrzucę poprawione omówienie. Przepraszam za wprowadzenie w błąd.

W tym zadaniu naszym celem jest stwierdzenie czy istnieje spójny niepusty podciąg trasy Jasia, który utworzy pętlę.

Pierwsze spostrzeżenie jest takie, że trasa jaką pokonał Jasiu jest krótka i zawiera co najwyżej 100 znaków, a zatem spokojnie możemy zbadać wszystkie możliwe podciągi.

Przejdźmy zatem do weryfikacji czy dany podciąg jest poprawną pętlą (łamaną). Sprawdźmy definicję łamanej.

Łamaną nazywamy figurę geometryczną, która jest sumą skończonej liczby odcinków takich, że każde dwa kolejne mają wspólny koniec oraz:

  • każde dwa kolejne odcinki i tylko dwa kolejne odcinki mają wspólny koniec,
  • żadne dwa następujące po sobie odcinki nie są zawarte w jednej prostej.

Zgodnie z treścią zadania nasz bohater może na trasie wykonywać skręty o 90 lub 180 stopni. Jednak jak widzimy w definicji łamanej nawroty (skręty o 180 stopni) spowodują, że dana figura nie będzie już łamaną ponieważ 2 następujące po sobie odcinki będą zawarte w jednej prostej. I to jest główny haczyk w tym zadaniu. W związku z powyższym pierwszym etapem jest sprawdzenie czy w wybranym podciągu trasy występują nawroty czyli: NS, SN, WE lub EW. Jeżeli występują to dany podciąg nie będzie poprawną pętlą.

Jeżeli nawroty nie występują to pozostało nam sprawdzić czy po przejściu całego podciągu wróciliśmy do punktu, z którym się zaczynał. Można to zrobić np. zliczając liczbę wystąpień liter N, S, E, W. Jeżeli N = S i E = W tzn. że wróciliśmy do punktu wyjścia, a co za tym idzie znaleźliśmy poprawną pętlę.

Wybranie podciągu do sprawdzenia ma złożoność O(n^2), sprawdzenie tego podciągu O(n), a zatem całość ma złożoność O(n^3) co przy maksymalnej wartości n = 100 jest w zupełności wystarczające.

jak dla mnie to rozwiązanie zadania pętla ma zbyt dużą złożoność, używając tablicy dwuwymiarowej mam rozwiązanie o złożoności O(n)

Oczywiście, że można. Możemy założyć sobie, że startujemy z punktu 100,100 i generować kolejne współrzędne. Wchodząc na dany punkt sprawdzamy czy byliśmy na nim wcześniej (co możemy odczytać właśnie z tablicy 2 wymiarowej) i jednocześnie sprawdzamy czy to nie jest nawrót itd.

Jednak specjalnie opisałem wolniejsze rozwiązanie, żeby uczyć ludzi, że nie ma sensu wytaczać armaty na muchy jeżeli zadanie tego nie wymaga. Ostatecznie drugim kryterium po liczbie rozwiązanych zadań jest czas ich rozwiązania.

Julia, testowałem Twoje ostatnie zgłoszenie i np. dla takiego testu:

1
NSEESSWWNNS

Twój program zwraca NIE, a powinien TAK, bo mamy pętlę EESSWWNN począwszy od 3 znaku.

Dopiero się przebiłem przez łatwe zadania. Bardzo fajnie napisane, gratulacje. Mimo już X edycji było czuć w nich dużo świeżości.

Jak dla mnie termin kolidował z wyjazdem do domu rodzinnego i lepieniem świątecznych pierogów, ale cieszę się, że frekwencja dopisała.

Zadanie “Czworościan” było pierwszym fraktalowym zadaniem “szkolno-geometrycznym”, które rozwiązałem nie posiłkując się internetami. Odbiłem się od Wikipedii i od wyników duckduckowania więc uznałem, że w końcu nadszedł ten straszny dzień i postanowiłem pomyśleć a nie pałować geometrię na konkursie. Ku mojemu zaskoczeniu szybko poszło.

No ale od czego były inne zadania, np. w jednym przez ok 8h szukałem błędu (wysyłając ileś zgłoszeń z kosmetycznymi poprawkami w stylu “o to musiało chodzić autorowi”) i w końcu znalazłem - zwracałem long longa i przypisywałem go do inta :wink: Ale myślę, że nawet pomimo takiej wtopy mój wynik jest o.k. tym bardziej, że od dawna nie robiłem zadań tego typu.

Czekamy na Fraktal XI.

1 month later

Ja jeszcze nie. Ale to wina min arduina, skubany zabiera trochę czasu ;-). Wczoraj zrobiłem kolejne podejście do czworościanu i znowu głupi błąd, ale w końcu udało mi się wyprowadzić prawidłowy wzór. Możliwe, że rozwiązanie jest gdzieś w necie, lub w tym wątku, ale póki sam się nie uporam z pętlą, nie będę kombinował. :wink:

PS
Oczywiście zadania miód malina, Brawo you!

Jeżeli jest, albo miało to być dowcipne, to pewnie straciłem poczucie humoru i wcale ale to wcale mnie to nie rozbawiło. Nie rozumiem też, czemu zmarnowałeś czas, przecież udział i rozwiązywanie zadań nie jest obowiązkowy ale jest całkowicie dobrowolny. Więc zamiast tracić czas, mogłeś w tym czasie robić cokolwiek innego. Mogłeś na przykład wyjść na spacer, pojeździć na rowerze albo pobiegać. Pewnie uważasz, że to też strata czasu, ale to właśnie jest dobre przede wszystkim dla zdrowia.

Nie zaprzeczam, że mój post może być odebrany jako chamski. Z drugiej strony sądzę, że zapoznanie się z treścią komentarzy pod tym zadaniem (https://www.spoj.com/FRAKTAL/problems/FR_10_04/13), a w szczególności z zawartością ostatniego z nich:

2018-12-22 15:03:23 Maciej Boniecki

  1. Liczby na wejściu nie zawierają zer wiodących
  2. Przyznaje, że zgubiła mnie pewność siebie i nie sprawdziłem definicji rzędu wielkości. Jego użycie w treści było błędem, bo rząd wielkości to potęga 10 najbliższa danej liczbie. W zadaniu chodzi o to żeby największa potęga 10, która nie jest większa od danej liczby była zawsze taka sama. Przepraszam za wprowadzenie w błąd :frowning:

może się przyczynić do zmiany nastawienia. Prawdopodobnie nadal będzie ciężko uznać mój post za zabawny, ale może chociaż nabierze on trochę sensu.

Myślę, że wiele zależy od podejścia, oraz od postawionego celu. Niektórzy uczestnicy konkursu biorą udział dla zabicia nudy, inni żeby zmierzyć się ze znajomymi. Jeszcze inni stawiają poprzeczkę nieco wyżej: jedni będą chcieli skończyć na podium, drudzy będą dokładać wszelkich starań żeby wygrać.
Postawmy się teraz na miejscu uczestnika, który celuje w top 3. Wydaje mi się, że dla takiej osoby umiejętne zarządzanie dostępnym czasem jest jednym ze środków do celu. Napotkanie podczas konkursu niekorzystnych czynników zewnętrznych (takich jak błędna treść, lub niepoprawne testy) spowalnia dążenie do upragnionego celu. Czy w tym przypadku nie można stwierdzić, że te czynniki przyczyniły się do straty/zmarnowania cennego czasu?

Pozostawię to bez komentarza.

Myślę, że nie ma co wracać do tematu. Pomyłka niestety była, przeprosiłem i życie się toczy dalej :slight_smile:

Suggested Topics

Topic Category Replies Views Activity
Konkursy 6 204 Mar 25

Want to read more? Browse other topics in Konkursy or view latest topics.