Kodowanie Efektywnych Algorytmów - Ćwiczenia 10
Poprzednie
Następne
Temat: Przygotowanie do sparingu
Zapisy
Na sparing można zapisać się pod tym linkiem: http://goo.gl/8J8o1
Dobre rady sparingowe
- Nalezy trenowac indywidualnie. To najwazniejsze.
- Próbować rozwiązywać zadania wspólnie z kolegami z druzyny w konkursach lub na sprawdzarkach
- „Cos”, co zmienia druzyne nie do poznania: Osoba, która zrobiła najmniej zadan
w konkursie, stawia pozostałym obiad. Jest to banalne ale bardzo wazne, gdyz
bez tego nie ma szans traktowac konkursu powaznie i z pełną koncentracją. Zasada stawiania obiadów odnosi sie równiez do treningów.
- Nalezy omawiac w obrebie zespołu rózne strategie, modyfikowac je zaleznie od doswiadczen.
Mozliwe są rózne podejscia, ale generalnie najlepsza jest strategia — dzielimy sie
losowo zadaniami, kazdy rozwiązuje jedno na kartce, implementuje na komputerze, wysyła,
rozwiązuje nastepne, implementuje i tak dalej. Mozna odkładac zadania,
które są rodzaju niezbyt lubianego przez siebie, lub którego nie umie się zrobić, na specjalnie wydzielony „wspólny
stosik zadan na pózniej”.
- Nalezy „wywalac” zaakceptowane zadania pod stół i zapominac o nich do konca konkursu.
- Nie wolno równoczesnie zajmowac komputera i myslec. Jesli okaze sie (nie powinno), ze
zaczelismy wpisywac program i nie do konca wiemy co dalej, to drukujemy, zwalniamy
komputer, dopracowujemy szczegóły na kartce i czekamy na swoją kolejke dostepu do
komputera w celu zaimplementowania brakuj¸acej czesci.
- Nie wolno debugowac przy komputerze. Zle działaj¸acy program trzeba czytac na wydruku
do skutku, to znaczy do znalezienia błedu. Do tego trzeba sie przyzwyczaic. Wyjątek: w pewnym momencie konkursu mozemy podjąc decyzje,
ze pracujemy juz tylko nad jednym zadaniem. Inne definitywnie odkładamy. Dopiero
wtedy mozna debugowac. Zostawia sie komputer piszącemu rozwiązanie do pełnej
dyspozycji.
- Nikt nie jest przyzwyczajony do konkursowego trybu pracy, dlatego potrzebny jest
wspólny udział w treningach.
- Po konkursie nalezy analizowac jakie były błedy strategiczne — w szczególnosci czy
ktos marnował duzo czasu czekając na komputer.
- Komunikacja miedzy członkami druzyny musi byc bardzo efektywna. Zawodnicy powinni
znac sie na tyle dobrze, aby w momencie napotkania na problem szybko ustalic
kogo powinni zapytac o rade oraz byc w stanie niezwłocznie przedstawic powstały
problem.
- Liczy sie zespół i tylko w przypadku pracy całego zespołu mozna wygrac. Niezaleznie od
poziomu technicznego indywidualnych zawodników, brak pracy dowolnego zawodnika
uniemozliwia zwyciestwo.
- Pojecie kapitana zespołu jest bez sensu. Trzyosobowy zespół powinien rozumiec sie bez
słów. Jesli tak nie jest, to nie ma szans na zwyciestwo.
- Regularne treningi są bardzo potrzebne. Jesli ktos nie ma na nie czasu lub ochoty, to
lepiej go wymienic.
- Treningi nie powinny byc smutnym obowiązkiem. Po kazdym treningu, niezaleznie od
jego wyników, druzyna jest lepsza, bardziej zgrana i blizsza celu. W czasie treningów
sprawdza sie przydatnosc wskazówek starszych kolegów i dopracowuje strategie.
- Komunikacje nalezy ograniczyc do minimum. Na początku konkursu nalezy podzielic
sie równo zadaniami, kazdy członek druzyny zapoznaje sie ze swoimi i próbuje je rozwiązać
sam w kolejnosci od najłatwiejszego do najtrudniejszego. Jeśli mu się nie udaje przekazuje zadanie koledze.
- Nie nalezy myslec nad rozwiązaniem zadania zanim go sie dokładnie nie zrozumie.
Nie powinno sie takze pisac kodu, dopóki nie ma pewnosci co do metody rozwiązania
zadania. Nie wysyła sie tez rozwiązania, bez upewnienia sie, ze jest poprawne. Nalezy
pracowac samodzielnie, nie przeszkadzając innym. Zadanie moze byc odłozone tylko
wówczas, gdy stwarza duze problemy i czas pozwala na rozpoczecie innego od nowa.
- Jesli komputer jest zajety, kod nalezy pisac na kartce. Gdy przepisuje sie kod do komputera,
nalezy jeszcze raz dokładnie przeczytac, aby nie było pomyłek (przy okazji
poprawic).
- W przypadku, gdy program nie działa, nalezy zwolnic klawiature i szukac dalej błedów
na wydruku. Debugując przy komputerze nalezy spróbowac wypisac wyniki czesciowe
działania programu. Zwykle jest to skuteczniejsze od wykonywania programu krok po
kroku, a dodatkowo mozna te wyniki wydrukowac i przeanalizowac nie zajmując komputera.
- Pod koniec konkursu zasady nieco sie zmieniają. Nalezy ocenic, które zadania mozna
jeszcze dokonczyc i wówczas pracuje sie razem. Kazdy zawodnik zapoznaje sie z trescią
zadania.
- Trzeba umiec sobie radzic z błedami. Błąd staje sie grozny dopiero wtedy, gdy powoduje
rezygnacje z dalszej walki.
- Nie nalezy zapominac o odpoczynku. Chwila relaksu ułatwia spojrzenie na problem z
innej strony i zazwyczaj pozwala na znalezienie jakiegos rozwiązania.
- Nie nalezy bac sie odpowiedzialnosci. Jezeli zadanie jest proste, nalezy je rozwiązac, nie
czekając na innych.
- Zadanie, które sie zaczyna nalezy dociągnąc do konca, ale tez trzeba miec odwage
zrezygnowac, gdy naprawde nie wychodzi.
- Na początku konkursu najlepiej losowo podzielic sie zadaniami i kazdy rozwiązuje swoje.
Oczywiscie zadaniami mozna sie wymieniac. Odrzuccie zadania, co do
których wiecie, ze ich nie zrobicie i byc moze wtedy rozwiązujcie wspólnie jakies zadanie.
- Bądzcie biegli w tym, jak działa Wejscie/Wyjscie w jezykach konkursu (dokładnie w
tej wersji kompilatora jaka bedzie uzywana), jak efektywnie (wazne dla duzych wejsc
i wyjsc), jakie ma błedy i nietypowe cechy. Jest to w gruncie rzeczy jedyna biblioteka
typowo informatyczna (czyli zasadniczo niedoskonała i niepewna) z której musicie
korzystac.
- Zabierzcie na zawody papier w kratke i coś do pisania.
- Po zaliczonym zadaniu, przybijajcie sobie dłonie, najlepiej hałasując na tyle głosno, aby
zdeprymowac druzyny w poblizu.
- Obserwujcie ranking! Tam widać, które zadania są najprostsze (robione najczęściej).
- Wypracujcie własny, efektywny styl pracy i podział zadan. Nie dajcie sobie narzucic
czegos z zewnąrz; kazda druzyna jest inna i nie ma tu jednakowej recepty.
- Nie musicie zrobic wszystkich zadan, wystarczy wiecej niz inni.