Simple project for course Scripting Languages (Python + Batch)
Projekt powstał na bazie zadania 4 z konkursu “Algorytmion 2013”. Oto treść tego zadania:
Rolnik ma pastwisko w kształcie koła o promieniu 1 m. Na okręgu tego koła przywiązuje kozę, której łańcuch ma długość r<1 m. Napisz program wyznaczający długość łańcucha, aby koza miała możliwość wygryzienia trawy z połowy pastwiska. Zadanie to można rozwiązać eksperymentalnie: przy ustalonym promieniu r, wylosować dostatecznie dużo (przykładowo n) punktów należących do tego pastwiska. Następnie zliczyć ile spośród tych punktów trafia w „wygryziony” obszar (przykładowo m). Ilość punktów trafionych w ten obszar do ilości wszystkich punktów ma się tak, jak pole tego obszaru do pola całego obszaru. Z tej zależności da się znaleźć (pośrednio lub w przybliżony sposób) wartość r.
Po konsultacji z autorem zadania okazało się, że wersja zadania dostępna na stronie konkursu jest błędna i w treści nie powinno być warunku ograniczającego długość łańcucha kozy do maksymalnie 1 m, ponieważ ten warunek sprawia, że zadanie jest niemożliwe do rozwiązania.
Sposób rozwiązania problemu
Program rozwiązuje zadany problem metodą eksperymentalną, poprzez losowanie punktów z terenu pola rolnika i sprawdzaniu, ile z tych punktów należy do pastwiska kozy, jeśli ta będzie miała łańcuch o długości 1m, później 1.01m, 1.02m, itd. aż do momentu, kiedy koza będzie w stanie zjeść trawę z połowy pola rolnika (kiedy 50% punktów z pola rolnika będzie należało do pastwiska kozy).
Funkcjonalność:
- program pobiera dane wejścowe, czyli liczbę punktów do losowania z plików tekstowych(batch)
- losuje punkty, sprawdza czy należą do obszaru koła (python)
- wykonuje obliczenia i na końcu zwraca wynik: na konsolę, do plików tekstowych oraz zapisuje je w tabeli w pliku .html (python)
- wyświetla informacje o programie (batch)
- wykonuje backup plików .html (batch)
SCREENSHOTY:
Program posiada też swoją wersję w języku Java w postaci aplikacji okienkowej.
Funkcjonalność wersji w języku Java:
- program pobiera dane (liczbę punktów do wylosowania) od użytkownika
- program sprawdza poprawność wprowadzonych danych
- wykonuje obliczenia i na końcu zwraca wynik w okienku aplikacji
- wyświetla informacje o programie
SCREENSHOTY: