Etap II - kategoria LICEUM i GIMNAZJUM
Transkrypt
Etap II - kategoria LICEUM i GIMNAZJUM
Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy FORDOŃSKI TURNIEJ WIEDZY ALGORYTMICZNEJ Świat gier komputerowych etap 2 Bydgoszcz, 20 marca 2009 Fordoński Turniej Wiedzy Algorytmicznej Zadanie 1 Edycja VIII - marzec 2009 – etap 2 STATKI (OKRĘTY) 10pkt ZASADY GRY: Gra przeznaczona jest dla dwóch graczy. Każdy z graczy rysuje na swojej kartce dwie mapy o wielkości 10 na 10 pól. Każdą mapę opisuje się u góry (poziomo) literami od A do J , a z lewej strony (pionowo) liczbami od 1 do 10. Każdy z graczy na początku gry rozmieszcza swoje statki (jeden czteromasztowiec, dwa trójmasztowce, trzy dwumasztowce oraz cztery jednomasztowce) na jednej z plansz. Ilość masztów statku określa ile zajmuje on kratek na mapie. Statki można dowolnie ustawiać i obracać z zachowaniem zasad, że każdy maszt jednego statku musi stykać się z jego kolejnym masztem ścianką boczną (nie może łączyć się na ukos) oraz dwa statki nie mogą stykać się zarówno bokiem masztu, jak i jego narożnikiem (na ukos). Po rozstawieniu swoich statków następuje właściwa rozgrywka. Gracze na przemian oddają po jednym strzale określając koordynaty poprzez podanie współrzędnych poziomych i pionowych, np. gracz oddaje strzał w pole D6. Drugi gracz określa czy nastąpiło trafienie: – jeśli nie został trafiony żaden statek - odpowiada "PUDŁO"; – jeśli został trafiony statek, ale posiada jeszcze nie trafione maszty, odpowiada "TRAFIONY"; – jeśli został trafiony jednomasztowiec lub nastąpiło trafienie w ostatni sprawny maszt statku (tzn. gdy statek trafiony nie ma już nie trafionych masztów) odpowiada "TRAFIONY ZATOPIONY!" Gracz strzelający odpowiednio zaznacza na swojej drugiej mapie pudła stawiając kropkę lub trafienia stawiając krzyżyk x. Gdy statek zostanie "trafiony i zatopiony" gracz strzelający obrysowuje dookoła kreską wszystkie maszty trafionego statku. Gracz broniący również na swojej mapie (pierwszej, ze statkami) odznacza wszystkie trafienia i strzały niecelne przeciwnika. Gracz atakujący ma prawo do oddania kolejnego strzału, gdy trafił w okręt przeciwnika i tak do czasu pierwszego nieudanego strzału (pudła). Gdy gracz atakujący spudłuje role się zmieniają i gracz broniący się do tej pory oddaje swój strzał. Wygrywa gracz, który zatopi cała flotę przeciwnika jako pierwszy. Twoje zadanie polega na napisaniu komputerowej wersji tej gry zgodnie z poniższymi zasadami: 1. Komputer automatycznie generuje planszę do gry oraz automatycznie rozmieszcza na niej wszystkie okręty (zarówno gracza jak i komputera – drugiego gracza), zgodnie z powyżej opisanymi zasadami. – 5pkt 2. Strzały oddane zarówno przez gracza jak i komputer oznaczane powinny zostać następująco: – 3pkt – statki na własnej planszy – znak "x" (iks) – pudło – znak "-" (minus) – trafiony – znak "+" (plus) – trafiony zatopiony – znak "#" (krzyżyk) – gdy wszystkie maszty statku zostały trafione znaki "+" powinny zostać zamienione na znaki "#". Poniżej przykład plansz do gry generowany w trybie konsolowym: 1 2 3 4 5 6 7 8 9 10 A B C D E F G H I J --- --- --- --- --- --- --- --- --- --| | | | | | | | x | | | --- --- --- --- --- --- --- --- --- --| | x | | # | # | # | | | | | --- --- --- --- --- --- --- --- --- --| x | x | | | | | | | # | | --- --- --- --- --- --- --- --- --- --| | x | | | | | - | | # | | --- --- --- --- --- --- --- --- --- --| | | | | x | | | - | | | --- --- --- --- --- --- --- --- --- --| | | | | x | + | | | | | --- --- --- --- --- --- --- --- --- --| | x | | | | | | | x | | --- --- --- --- --- --- --- --- --- --| | | | | | # | + | | x | | --- --- --- --- --- --- --- --- --- --| | | | x | | | - | | | | --- --- --- --- --- --- --- --- --- --| # | | | | | | | | | | --- --- --- --- --- --- --- --- --- --- 1 2 3 4 5 6 7 8 9 10 A B C D E F G H I J --- --- --- --- --- --- --- --- --- --| | | | | | | | | | | --- --- --- --- --- --- --- --- --- --| | | + | | | | | | | | --- --- --- --- --- --- --- --- --- --| | | + | - | | | - | | | | --- --- --- --- --- --- --- --- --- --| | | | | | | | | | | --- --- --- --- --- --- --- --- --- --| | + | | - | | | | - | | | --- --- --- --- --- --- --- --- --- --| | | | | | | | | | | --- --- --- --- --- --- --- --- --- --| | | | | | | | - | | | --- --- --- --- --- --- --- --- --- --| | | - | | | | | | | | --- --- --- --- --- --- --- --- --- --| | | | | | - | | | | | --- --- --- --- --- --- --- --- --- --| | | | | | | | | | | --- --- --- --- --- --- --- --- --- --- Jeśli gra będzie ukończona i działająca uzyskasz dodatkowo 2 punkty. str. 2 Fordoński Turniej Wiedzy Algorytmicznej Zadanie 2 Edycja VIII - marzec 2009 – etap 2 SUDOKU 10pkt ZASADY GRY: Jest to łamigłówka, której celem jest wypełnienie diagramu 9x9 w taki sposób, aby w każdym wierszu, w każdej kolumnie i w każdym dziewięciopolowym kwadracie 3x3 znalazło się po jednej cyfrze od 1 do 9. Na początku gry niektóre z pól planszy Sudoku są już wypełnione liczbami (patrz rysunek po prawej stronie). Celem gry jest uzupełnienie pozostałych pól planszy cyframi od 1 do 9 (po jednej cyfrze w każdym polu) przy zachowaniu następujących reguł: – każda cyfra może się pojawić tylko raz w każdym wierszu, – każda cyfra może się pojawić tylko raz w każdej kolumnie, – każda cyfra może się pojawić tylko raz w każdym obszarze. Poniżej dwa przykłady wypełnionionych diagramów realizowanych w trybie konsolowym: ========================================= || 1 | 2 | 3 || 4 | 5 | 6 || 7 | 8 | 9 || ----------------------------------------|| 4 | 5 | 6 || 7 | 8 | 9 || 1 | 2 | 3 || ----------------------------------------|| 7 | 8 | 9 || 1 | 2 | 3 || 4 | 5 | 6 || ========================================= || 2 | 3 | 4 || 5 | 6 | 7 || 8 | 9 | 1 || ----------------------------------------|| 5 | 6 | 7 || 8 | 9 | 1 || 2 | 3 | 4 || ----------------------------------------|| 8 | 9 | 1 || 2 | 3 | 4 || 5 | 6 | 7 || ========================================= || 3 | 4 | 5 || 6 | 7 | 8 || 9 | 1 | 2 || ----------------------------------------|| 6 | 7 | 8 || 9 | 1 | 2 || 3 | 4 | 5 || ----------------------------------------|| 9 | 1 | 2 || 3 | 4 | 5 || 6 | 7 | 8 || ========================================= 2 1 3 8 7 9 5 4 6 5 4 6 2 1 3 8 7 9 8 7 9 5 4 6 2 1 3 6 5 7 3 2 4 9 8 1 9 8 1 6 5 7 3 2 4 3 2 4 9 8 1 6 5 7 1 9 2 4 3 5 7 6 8 4 3 5 7 6 8 1 9 2 7 6 8 1 9 2 4 3 5 Twoje zadanie polega na napisaniu komputerowej wersji tej łamigłówki zgodnie z poniższymi zasadami: 1. Komputer automatycznie generuje diagram (w trybie konsolowym można dodać nazwy wierszy i kolumn, podobnie jak w grze w statki, w celu określenia położenia komórki, w którą ma zostać wpisana liczba) oraz automatyczne wypełnienie go (całkowite) losowymi liczbami zgodnie z powyższymi zasadami – 5pkt 2. Po wygenerowaniu na ekranie wypełnionego losowymi liczbami diagramu (w celu zaliczenia części pierwszej zadania) komputer generuje drugą planszę z około 30 liczbami (pozostałe liczby powinny zostać ukryte). Dodatkowo zadaniem programu jest dopilnowanie, aby łamigłówka po usunięciu liczb z diagramu miała rozwiązanie. – 3pkt Jeśli gra będzie ukończona i działająca uzyskasz dodatkowo 2 punkty. str. 3 Fordoński Turniej Wiedzy Algorytmicznej Zadanie 3 Edycja VIII - marzec 2009 – etap 2 MASTERMIND 10pkt ZASADY GRY: Jest to gra planszowa o prostych regułach, lecz wymagająca logicznego myślenia, polegająca na odgadnięciu przez gracza ukrytego kodu. Została wynaleziona przez Izraelczyka Mordecai Meirowica na początku lat 70-tych ubiegłego stulecia. Wynalazca początkowo chciał zainteresować swoją grą duże firmy produkujące gry, jednakże wszędzie został zignorowany. W końcu udało mu się zawrzeć kontrakt z małą angielską firmą Invicta Plastics, która produkowała pomoce dydaktyczne. Grę nieco przebudowano i nadano jej nazwę MasterMind. Wkrótce sprzedano ponad 50 milionów egzemplarzy w ponad 80 krajach, co sprawiło, iż stała się ona kasowym przebojem rynku gier logicznych w latach 70-tych. Do gry potrzebna jest plansza oraz kolorowe, plastikowe grzybki z wyprofilowanymi główkami (patrz rysunek powyżej), które wtykamy nóżkami w otwory na planszy. Grzybki są w dwóch rodzajach: kodowe o sześciu różnych kolorach oraz kluczowe, mniejsze o dwóch kolorach - czarnym i białym. W grze uczestniczy zawsze dwóch graczy - koder (ang. coder) oraz łamacz kodu (ang. code breaker). Koder przy pomocy grzybków kodowych tworzy tajny kod zbudowany z 4 kolorów. Kod ten zostaje ukryty przed drugim graczem specjalną przykrywką na końcu planszy. Łamacz kodu w co najwyżej 6 podejściach stara się odgadnąć kod kodera. W tym celu z kolorowych grzybków układa swoje propozycje 4 kolorowych kodów. Dla każdej propozycji koder odpowiada kombinacją co najwyżej 4 grzybków kluczowych. Grzybek czarny oznacza, iż w kodzie łamacza jeden kolor (nie wiadomo który) jest na tym samym miejscu, co w kodzie kodera. Grzybek biały oznacza, iż kolor łamacza występuje w kodzie kodera, lecz na innym miejscu. Brak grzybków kluczowych oznacza, iż żaden z kolorów kodu łamacza nie występuje w kodzie kodera. Na pierwszy rzut oka gra MasterMind nie wygląda na problem tekstowy. Skoro tak, to sprowadźmy ją do problemu tekstowego. W tym celu grzybki kodowe przedstawmy jako cyfry ze zbioru {0,1,2,3,4,5,6,7,8,9}. Koder będzie tworzył z tych cyfr 5-cio literowy kod tajny, który ma odgadnąć drugi gracz - łamacz kodu. Grzybki kluczowe przedstawmy jako znaki: x - literka kodu łamacza odpowiada dokładnie literce kodu kodera co do rodzaju i co do położenia w kodzie. o - literka kodu łamacza zgadza się z literką kodu kodera tylko co do rodzaju. Przykład: Kod Kod kodera Klucz 25413 1. Kod łamacza 89702 o 2. Kod łamacza 47201 ooo 3. Kod łamacza 24501 xooo 4. Kod łamacza 24513 xxxoo 5. Kod łamacza 25413 xxxxx Twoje zadanie polega na napisaniu komputerowej wersji tej gry zgodnie z powyższym opisem i poniższymi zasadami: 1. Koder (komputer) losuje bez powtórzeń dowolnych 5 znaków ze wszystkich cyfr (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) pamiętając o tym, że pierwszą od lewej cyfrą nie może być zero! 2. Zadaniem łamacza (gracza) jest odgadnięcie utworzonej przez komputer liczby w max 10 próbach. 3. Pamiętaj o zastosowaniu oznaczeń w podpowiedziach zgodnych z powyższym opisem (x, o). 4. Program powinien być zabezpieczony przed wprowadzeniem innych znaków niż cyfry str. 4