Lista 12 (17 stycznia 2006): 11 punktów.

Argumenty wywołania programu i generator liczb pseudolosowych.

  1. (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:
    +---+---+---+---+
    |       |   |   |
    +   +---+   +   +
    |               |
    +---+   +   +---+
    |       |       |
    +---+---+---+---+

  2. (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:
    +---+---+---+
    |   |   |   |
    +---+---+---+
    |   | # | # |
    +---+---+---+
    |   |   |   |
    +---+---+---+
    | # | # |   |
    +---+---+---+
    |   |   |   |
    +---+---+---+
    |   | # |   |
    +---+---+---+
    |   | # |   |
    +---+---+---+