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