|
1 | | -# OI |
2 | | -Archiwum moich rozwiązań do zadań z Olimpiady Informatycznej. |
| 1 | +# Materiały przygotowujące do Olimpiady Informatycznej. |
| 2 | + |
| 3 | +## Repozytorium ma na celu: |
| 4 | +- Przekazanie wiedzy przydatnej w Olimpiadzie Informatycznej dla wszystkich chętnych do nauki. |
| 5 | +- Promowanie systematycznego podejścia do treningu i zdrowych nawyków. |
| 6 | +- Zapewnienie prostych, przystępnych narzędzi do mierzenia swojego progresu |
| 7 | +- Naukę powszechnie stosowanych narzędzi programistycznych poprzez praktykę. |
| 8 | + |
| 9 | +## Repozytorium zawiera: |
| 10 | +- Rozwiązania zadań z Olimpiady Informatycznej, które napisałem, często alternatywne do omówień ze strony OI. |
| 11 | +- Skrypty linuksowe przydatne na olimpiadzie z prostym wytłumaczeniem każdej instrukcji. |
| 12 | +- Krótkie wykłady na temat korzystania z narzędzi linuksowych przydatnych w pisaniu i testowaniu zadań. |
| 13 | +- Automatycznie aktualizujący się licznik rozwiązanych zadań oraz tabelę pokazującą, |
| 14 | +które zadania z każdej z edycji OI zostały już rozwiązane z podziałem na etapy olimpiady. |
| 15 | +Przydaje się to do mierzenia progresu, oraz do doboru zadań na treningu. |
| 16 | +- Odnośniki do innych przydatnych źródeł. |
| 17 | + |
| 18 | + |
| 19 | +## Struktura repozytorium: |
| 20 | + |
| 21 | +Zawartości katalogów `skrypty`, oraz `materialy` łatwo się domyślić, zachęcam do zapoznania się z nią. |
| 22 | +W katalogu `rozwiazania` znajdziesz wszystkie rozwiązania zadań z OI, które zaimplementowałem. |
| 23 | +Katalog `rozwiazania/<edycja_oi>/<etap_oi>/[dzień_etapu]/<skrót zadania>` zawiera pliki dotyczące danego zadania z OI. |
| 24 | +- `<skrót zadania>.cpp` - moje rozwiązanie zadania, które otrzymuje 100 pkt na testach na sio2/szkopule, |
| 25 | + dodatkowo z dopiskiem `_alt` bądź `_oi` pojawiają się czasem rozwiązania alternatywne oraz wprost z omówienia zadania, |
| 26 | + w przypadkach gdy rozwiązałem zadanie na 100 punktów na kilka różnych sposobów. |
| 27 | +- `<skrót zadania><liczba punktów>.cpp` - Rozwiązania, które dostają mniej niż 100 punktów, takie jak bruty, bądź rozwiązania podgrup. |
| 28 | +I dosyć często również pliki: |
| 29 | +- `<skrót zadania>g.cpp` - moja generatorka do zadania, której używałem testując rozwiązanie. |
| 30 | +- `<skrót zadania>chk.cpp` - moja czekerka w przypadku zadań, w których istnieje więcej niż jedno poprawne rozwiązanie inne niż generowane przez bruta. |
| 31 | +- Katalog `virtual_contest/`, zawierający moje skrypty, generatorki, czekerki i różne podejścia do zadania w przypadku, gdy symulowałem ograniczenia czasu i widoczności werdyktów występujące na olimpiadzie, tzn. w przypadku etapów I i II olimpiady, nie mogłem poznać liczby punktów, które dostanie moje zadanie na sprawdzarce szkopuł. Testowałem rozwiązanie lokalnie, i wysyłałem dopiero po przetestowaniu. Rozwiązania zadań z III etapu mogłem wysłać do 10 rozwiązań na szkopuła poznając ich wynik. |
| 32 | + |
| 33 | +Katalogi `checklista` oraz `.github` zawierają skrypty automatycznie generujące checklisty, nie należy ich modyfikować. |
| 34 | +Jeśli coś nie działa, daj mi znać przez [Issue](https://github.com/Kulezi/oi/issues) na GitHubie. |
| 35 | + |
| 36 | +Przykładowo katalog `rozwiazania/xxv/etap3/dzien1/kom/` będzie zawierał moje rozwiązania do zadania 'Liczby kompletne' z III etapu XXV OI. |
| 37 | +Rozwiązania konkretnego zadanie można łatwo znaleźć sprawdzając, z której edycji i etapu olimpiady jest na [Liście zadań OI](https://oi.edu.pl/l/oi_zadania/), |
| 38 | +bądź przy pomocy polecenia `grep 'nazwa zadania' -R .` wywołanego z głównego katalogu repozytorium, np. `grep `Trójkąty` -R .`. |
| 39 | + |
| 40 | +## Jak samemu skorzystać z checklisty: |
| 41 | + |
| 42 | +Sforkuj [szablon](https://github.com/testowyuczen/oi) tego repozytorium [klikając tutaj](https://github.com/testowyuczen/oi/fork), |
| 43 | +i przy wbiciu jakiegoś zadania, np 'Rycerz:wq' z pierwszego dnia II etapu XXXI OI: |
| 44 | +- Zapisz rozwiązanie. np. w pliku `rozwiazania/xxxi/etap2/dzien1/ryc/ryc.cpp`. |
| 45 | +- Dodaj je do repozytorium wykonując `git add `rozwiazania/xxxi/etap2/dzien1/ryc/ryc.cpp`, (przy pomocy `git status` możesz zobaczyć co już dodałeś w tym commicie). |
| 46 | +- Scommituj je np. w ten sposób: `git commit -m "Dodano rozwiązanie zadania 'Rycerz' z XXXI OI"` (jeśli zapomnieliśmy czegoś dodać wystarczy powtórzyć poprzedni krok i użyć `git commit --am`. |
| 47 | +- Zaktualizuj repozytorium na GitHub o lokalne zmiany przy pomocy `git push`, ewentualnie `git push -f`. |
| 48 | +- Checklista w `README.md` na GitHub zaktualizuje się automatycznie w ciągu kilku minut. |
| 49 | +- `git pull` wciągnie aktualną wersję checklisty z GitHuba (bez tego będziesz potrzebował robić `git push -f` przy każdym pushu. |
3 | 50 |
|
4 | | -Katalog `<edycja>/<etap>/<skrót zadania>` zawiera: |
5 | | -- `<skrót zadania>.cpp` moje rozwiązanie, które otrzymuje 100 pkt na testach na sio2/szkopule. |
6 | | -- `<skrót zadania><liczba punktów>.cpp` moje rozwiązania z olimpiady, które dostały mniej niż 100 punktów na zawodach. |
7 | | -- Katalog `virtual contest/`, zawierający moje skrypty, generatorki, czekerki i różne podejścia do zadania w przypadku, gdy symulowałem ograniczenia czasu i widoczności werdyktów występujące na olimpiadzie, tzn. w przypadku etapów I i II olimpiady, nie mogłem poznać liczby punktów, które dostanie moje zadanie na sprawdzarce szkopuł. Testowałem rozwiązanie lokalnie, i wysyłałem dopiero po przetestowaniu. Rozwiązania zadań z III etapu mogłem wysłać do 10 rozwiązań na szkopuła poznając ich wynik. |
8 | 51 | <!-- AUTO-CHECKLIST --> |
9 | 52 |
|
10 | 53 | > ⚠️ **UWAGA:** Sekcja poniżej jest generowana automatycznie. |
|
0 commit comments