Lista 12 (17 stycznia 2006): 11 punktów.
Argumenty wywołania programu i generator liczb pseudolosowych.
- (11 punktów)
Napisz program, który wygeneruje losowy labirynt na planszy
o zadanych rozmiarach.
Rozmiary labiryntu mają być podawane jako argumenty wywołania
programu (19x19 to rozmiar maksymalny).
Labirynt (komnaty z przejściami) pamiętaj w prostokątnej tablicy
int[][].
Każda ściana komnaty ma być opisana jednym bitem (bit 0 dla sciany
górnej, bit 1 dla sciany prawej, bit 2 dla sciany dolnej i bit 3 dla
sciany lewej): jeśli bit jest ustawiony na 1, to jest przejście do
następnej komnaty, a jeśli na 0, to przejścia nie ma.
Po wygenerowaniu labiryntu wydrukuj go na standardowym wyjściu przy
pomocy znaków +, -, | i spacji, tak jak
w przykładzie zamieszczonym poniżej.
Uwaga:
Pomiędzy dwiema komnatami musi istnieć dokładnie jedna droga.
Uwaga:
Labirynt ma być dookoła otoczony ścianami.
Wskazówka:
Pomyśl o labiryncie jak o drzewie rozpinającym grafu, który jest kratą.
Przykład:
Wydrukowany labirynt 3x4 może wyglądać następująco:
+---+---+---+---+
| | | |
+ +---+ + +
| |
+---+ + +---+
| | |
+---+---+---+---+
- (11 punktów)
Napisz program, który wygeneruje losową krzyżówkę na planszy
o zadanych rozmiarach.
Rozmiary krzyżówki mają być podawane jako argumenty wywołania
programu (19x19 to rozmiar maksymalny).
Krzyżówkę (pola czarne i białe z przejściami) pamiętaj
w prostokątnej tablicy int[][].
Każda ściana pola ma być opisana jednym bitem (bit 0 dla sciany
górnej, bit 1 dla sciany prawej, bit 2 dla sciany dolnej i bit 3 dla
sciany lewej): jeśli bit jest ustawiony na 1, to sąsiednie pole jest
białe, a jeśli na 0, to sąsiednie pole jest czarne; ponadto musi być
opisany kolor pola (bit 4 dla koloru): jeśli bit jest ustawiony
na 1, to pole jest białe, a jeśli na 0, to pole jest czarne.
Po wygenerowaniu krzyżówki wydrukuj ją na standardowym wyjściu przy
pomocy znaków +, -, |, #
i spacji, tak jak w przykładzie zamieszczonym poniżej.
Uwaga:
Długości słów w krzyżówce nie mogą być krótsze niż 3-literowe.
Uwaga:
Pomiędzy każdą parą białych pól powinna istnieć biała droga.
Uwaga:
Przy każdym boku krzyżówki powinno się znaleźć jakieś białe pole.
Uwaga:
W krzyżówce nie może być jednokolorowych prostokątów większych niż 2x2.
Wskazówka:
Dopuszczam drobne odstępstwa od powyższych reguł.
Przykład:
Wydrukowana krzyżówka 7x3 może wyglądać następująco:
+---+---+---+
| | | |
+---+---+---+
| | # | # |
+---+---+---+
| | | |
+---+---+---+
| # | # | |
+---+---+---+
| | | |
+---+---+---+
| | # | |
+---+---+---+
| | # | |
+---+---+---+
|