Ćwiczenia z tablicami
Przygotowanie rozwiązania zadania:
- Znaleźć zadanie na stronie olimpiady juniorów:
- https://oij.edu.pl/ - strona olimpiady
- https://sio2.mimuw.edu.pl/c/oij19-1/p/ - zadania 19 olimpiady, jesień 2024
- https://oij.edu.pl/zbior_zadan/ - zadania z poprzednich lat
- Stworzyć oddzielny folder dla tego zadania.
- Resztę kroków wykonujemy i zapisujemy w folderze zadania.
- Pobrać treść zadania (pdf)
- Przykład będzie oparty o zadanie Różnorodny Ciąg ze zbioru:
- Stworzyć pusty plik rozwiązania (main.py)
- W pliku rozwiązania
- stworzyć funkcję logującą
- zalogować że plik się uruchamia
- Sprawdzić że plik rzeczywiście uruchamia się i loguje to co nakazaliśmy
- Z konsoli cmd:
- python main.py
- ewentualnie python3 main.py
- poprawić ewentualne błędy, dodać brakujące biblioteki
- Stworzyć pliki z przykładowymi danymi testowymi
- Zwykle zadanie ma trzy przykładowe testy. Tworzymy pliki tekstowe:
- test-0.txt
- test-1.txt
- test-2.txt
- Wypełniamy danymi z treści zadania. W przykładowym zadaniu dane są opisane jako:
- Wejście dla testu cia0a
- Wejście dla testu cia1a
- Wejście dla testu cia2a
- Stworzyć plik tekstowy .bat do uruchamiania testu numer 0.
- test-0.bat
- W środku jedna linijka
- python main.py < test-0.txt
- Linia ta oznacza uruchomienie skryptu rozw.py i skierowaniu na jego wejście danych z pliku test-0.txt
- Pamiętaj o zmianie rozszerzenia pliku z .txt na .bat.
- Najlepiej skopiować plik z poprzednich zadań i zaadaptować.
- Uruchom test-0.bat z konsoli i ewentualnie popraw.
- Stwórz pozostałe pliki testów:
- test-1.bat
- test-2.bat
- sprawdź czy się uruchamiają.
- W pliku main.py dodaj wczytywanie danych wejściowych.
- Wczytaj wszystkie linie wejścia
- Wypisz co wczytałeś.
- Zapisz wartości na zmiennych
- Podziel zbiory na tablice.
- Zamień napisy na liczby tam gdzie dane mają znaczenie liczbowe.
- Wypisz wszystkie wczytane dane
- Postaraj się aby było co wypisujesz bez zaglądania do kodu.
- Wypisuj wartości oraz nazwy zmiennych.
- W pliku main.py dodaj wypisywanie wyniku.
- Wprost wypisz wynik podpowiadany w pierwszym teście.
- Sprawdź czy dane z wszystkich przykładowych testów wczytują się poprawnie.
Oto plik main.py dla zadania z 2023 roku. Możesz oprzeć się tworząc rozwiązanie swojego zadania.
import sys
# funckja logująca którą można łątwo wyciszyć
# poprzez zakomentowanie dwóch lini
def info(data):
import logging
logging.warning(data)
pass
# gdy moduł import logging jest niedostępny
# możemy logować też tak
# jest to jednak trudniej zapamiętać
def info2(data):
print(data, file=sys.stderr)
pass
# warto widzieć że program się w ogóle uruchomił
info("start")
info2("start2")
# warto dodać tę linię
# gdybyśmy nie podali pliku z danymi wejściowymi program zatrzyma się
# będziemy widzieć w consoli co się dzieje
info("wczytuje wejscie")
line = input()
# wypisuję dane tuż po wczytaniu - łatwiej wtedy rozwiązać problemy
info("line1: "+line)
# n ma być liczbą
n = int(line)
# ważne żeby na diagnostyce było widać nazwę zmiennej. Stąd "n: "
info("n: "+str(n))
line = input()
info("line2: "+line)
a_str = line.split(' ')
info("a_str: "+str(a_str))
# a_str to tablica napisów, a potrzezbujemy liczby
a = []
for cyfra in a_str:
a.append(int(cyfra))
# teraz a to tablica napisów
info("a: "+str(a))
# to jest informacja dla nas aby łatwiej zorientować się gdzie jesteśmy w kodzie
info("info koniec wczytywania danych")
info("koniec")
print(8)
Tak wygląda mój przygotowany folder:
Analiza zadania
Poprzednie kroki, przygotowanie testów i wczytywanie wyglądają dla każdego zadania podobnie.
Kolejnym etapem jest analiza samego zadania i rozwiązanie podanych przykładów na kartce.
Kolejnym etapem jest analiza samego zadania i rozwiązanie podanych przykładów na kartce.
- Weź kartkę i długopis!!!
- Przeczytaj jeszcze raz zadanie
- Czy wiesz co oznaczają dane wejściowe?
- Czy wiesz co ma być na wyjściu?
- Przeanalizuj dane z pierwszego przykładu
- Czasem jest dołączony rysunek.
- Rozumiesz go?
- Czy umiesz zrobić rysunki dla pozostałych przykładów?
- Zrób je.
- Jeśli nie ma rysunku samemu zrób.
- Może to być szkic figur geometrycznych
- albo graf przejść między liczbami
- albo tableka
- ...
- Spróbuj rozwiązać pierwszy przykład.
- Twój wynik zgadza się z wynikiem przykładu.
- Spróbuj rozwiązać pozostałe przykłądy
- Może któryś jest łatwiejszy
- Może któryś zawiera "podchwytliwe dane".
Comments
Post a Comment