Języki programowania cz. 3b –

Transkrypt

Języki programowania cz. 3b –
Języki programowania cz. 3b –
Zadania projektowe nr. 2 – grupa A (2016/17)
1. Zaimplementuj predykat czy_graficzny( lista,odp ), stwierdzający, czy lista
tworzy ciąg graficzny (7 pkt.).
2. W wariancie gry Nim mamy 3 stosy kamieni. Dwóch graczy na przemian zdejmuje
kamienie ze stosów i ten który wykona ostatni ruch (po jego ruchu nie zostaną żadne
kamienie, lub drugi gracz nie może wykonać dozwolonego ruchu) przegrywa.
Zaimplementuj predykat czy_wygrywa( A,B,C ) stwierdzający, czy gracz, który
wykonuje ruch dla odpowiednio A, B i C kamieni na stosach ma strategię
wygrywającą. (8 pkt).
Dozwolone ruchy dla graczy to (według numeru grupy projektowej):
1. zdjęcie jednego lub dwóch kamieni z dowolnego stosu,
2. zdjęcie dwóch lub trzech kamieni z dowolnego stosu,
3. zdjęcie jednego kamienia z dowolnego stosu lub dwóch kamieni z różnych
stosów,
4. zdjęcie jednego kamienia z dowolnego stosu i jednego kamienia z pierwszego
stosu lub dwóch kamieni z dowolnego stosu,
5. zdjęcie po jednym kamieniu z każdego stosu lub zdjęcie dwóch kamieni z
dowolnego stosu,
6. zdjęcie dwóch kamieni z drugiego stosu lub jednego kamienia z dowolnego
stosu,
7. zdjęcie jednego kamienia z dowolnego stosu i przełożenie jednego kamienia ze
stosu pierwszego na drugi lub zdjęcie dwóch kamieni z dowolnego stosu,
8. zdjęcie jednego kamienia z dowolnego stosu i przełożenie dwóch kamieni ze
stosu pierwszego na trzeci lub zdjęcie dwóch kamieni z dowolnego stosu,
9. przełożenie jednego kamienia z pierwszego stosu na drugi i zdjęcie po jednym
kamieniu z każdego stosu lub zdjęcie dwóch kamieni z drugiego stosu,
10. zamiana miejscami stosów drugiego i trzeciego i zdjęcie jednego kamienia ze
stosu pierwszego, lub zdjęcie jednego kamienia z dowolnego stosu i jednego
ze stosu trzeciego.
Gracz A ma strategię wygrywającą, gdy niezależnie od ruchów przeciwnika,
odpowiednio wybierając posunięcia, zawsze wygra. Dla danego układu kamieni gracz
A może przejść do takiego układu, że niezależnie od tego, jaki ruch wybierze gracz B,
gracz A wygra. Sytuację taką można przedstawić w postaci drzewa (Si to kolejne
stany gry).
Gdy gracz A wykonuje ruch, wystarczy, że tylko jeden z nich prowadzi do wygranej (LUB).
Gdy gracz B wykonuje ruch – wszystkie jego ruchy muszą prowadzić do wygranej A (AND;
gdyby było inaczej, B mógłby przejść do stanu gry, w którym A nie wygrywa).
Projekty realizowane są w grupach 2, 3 albo 4 osobowych grupach projektowych. Na
zajęciach proszę się podzielić na grupy, którym zostaną losowo przydzielone numery. Każdy
ze studentów przesyła swoją wersję rozwiązanych zadań na adres: [email protected]
Proszę koniecznie zatytułować pocztę w następujący sposób: JP_Z2_GX_PY_INDEKS
gdzie:



GX – X - numer grupy dziekańskiej, przykładowo: 1 - grupa nr. 1
PY – Y numer części projektowej: 3 to Prolog, a 4 to Haskell.
INDEKS – sześcioliterowy numer indeksu, przykładowo: 103057
Przykład poprawnie zatytułowanego maila: JP_Z2_G2_P3_103057 – drugie zadanie
projektowe z Prologa, studenta z drugiej grupy dziekańskiej o numerze indeksu 103057.

Podobne dokumenty