Prof. Dr. Franz Schweiggert -- Sektion Angewandte Informationsverarbeitung -- 28. Oktober 1997
Ingo Melzer Blatt 3
[c]
Systemnahe Software I
Allgemeine Informatik III (WS 97/98)

Abgabetermin 11. November 1997

5 Kleinholz (10 Punkte)

Letzte Woche haben Sie nach langer Zeit einen alten Freund wiedergetroffen. Um die alten Zeiten aufleben zu lassen, haben Sie sich im ,,Blauen Zwerg'' getroffen und Karten gespielt. Leider ist es Ihrem ,,Freund'' gelungen, Sie mit etwas zu viel Alkohol anzureichern, um Sie dann beim Glücksspiel auszunehmen.

Am nächsten Tag beschließen Sie, sich für diese Tat auf Ihre Art zu rächen, und suchen ein Spiel mit einer sicheren Gewinnstrategie. Bald entscheiden Sie sich für folgendes Spiel:

Auf einen Tisch werden eine beliebige Anzahl von Streichhölzchen beliebig auf eine ebenfalls beliebige Anzahl von Haufen verteilt. Nun nimmt jeder der zwei Spieler abwechselnd von einem Haufen mindestens ein und höchstens alle Streichhölzer. Gewinner ist, wer das letzte Holz vom Tisch nimmt.

Eine Ihnen bekannte Gewinnstrategie ist: Schreibt man die Anzahl der Hölzchen der Haufen ins Dualsystem um, so erhält man eine Gewinnstellung genau dann, wenn nach dem Zug in allen Spalten der untereinandergeschriebenen Hölzerzahlen eine gerade Anzahl von Einsen steht. Als Beispiel:

# Stapel Dez. Bin
1. 11 1011
2. 14 1110
3. 9 1001
# Einsen -- 3122

Mögliche Züge zu einer Gewinnposition wären vom 2. Stapel 12, oder von einem der anderen Stapel 4 Hölzer zu nehmen. Im ersten Fall ergibt sich folgende Situation:

# Stapel Dez. Bin
1. 11 1011
2. 2 0010
3. 9 1001
# Einsen -- 2022

Um nicht nochmals zu verlieren schreiben Sie ein Programm in C für dieses Spiel und testen es an Ihrem Tutor. Natürlich bestimmt Ihr Programm, wer -- nach Eingabe der Haufen -- mit dem Ziehen beginnen darf.


Ingo Melzer Tue Oct 28 17:53:30 MET 1997