30.03.2015 Aufrufe

Hinweis zu diesem Aufgabenblatt Zulassung zur Prüfung Das ...

Hinweis zu diesem Aufgabenblatt Zulassung zur Prüfung Das ...

Hinweis zu diesem Aufgabenblatt Zulassung zur Prüfung Das ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Lehrstuhl für Softwaretechnik und Programmiersprachen<br />

Professor Dr. Michael Leuschel<br />

Softwaretechnik und Programmiersprachen – Sommersemester 2009<br />

Prolog-Projektaufgabe<br />

Abgabetermin: 17. August 2009<br />

<strong>Hinweis</strong> <strong>zu</strong> <strong>diesem</strong> <strong>Aufgabenblatt</strong><br />

Auf Wunsch einiger Kursteilnehmer veröffentlichen wir schon heute (6. Juli 2009) die Aufgabenstellung der<br />

Projektaufgabe. <strong>Das</strong> hat uns, den Organisatoren, wenig Zeit gelassen, die Aufgabe sorgfältig <strong>zu</strong> prüfen und eine<br />

Musterlösung <strong>zu</strong> erarbeiten und <strong>zu</strong> testen. <strong>Das</strong> werden wir in den nächsten 14 Tagen tun, und daraus könnten<br />

sich kleine Korrekturen in der Aufgabenstellung ergeben.<br />

Bitte besuchen Sie regelmäßig die STUPS-Webseite, wo eventuelle Revisionen der Aufgabenstellung<br />

angekündigt werden.<br />

Keine Sorge, Es wird sich nichts Gravierendes ändern; aber es könnte bspw. sein, dass wir stärkere Anforderungen<br />

an die Datenstrukturen stellen, um uns das testen <strong>zu</strong> erleichtern, oder kleine Fehler und Inkonsistenzen<br />

bereinigen.<br />

<strong>Zulassung</strong> <strong>zu</strong>r Prüfung<br />

Für die <strong>Zulassung</strong> <strong>zu</strong>r STUPS-1 Klausur muss die Prolog-Projektaufgabe erfolgreich <strong>zu</strong>m Abgabetermin bearbeitet<br />

werden. Die Projektaufgabe wird nicht benotet.<br />

Schicken Sie die Lösung per Email an jastram@cs.uni-duesseldorf.de, und lassen Sie sich den Empfang<br />

bestätigen! Gehen Sie ohne Empfangsbestätigung nicht davon aus, dass Ihre Lösung empfangen wurde!<br />

Bei Fragen wenden Sie sich bitte an Michael Jastram, jastram@cs.uni-duesseldorf.de, Raum 12.25.02.52. Sie<br />

können gern per Email einen Termin vereinbaren, oder auf gut Glück vorbeikommen.<br />

<strong>Das</strong> Tantrix-Spiel<br />

Bei Tantrix handelt es sich um ein Legespiel, das mit sechseckigen Kacheln gespielt wird. Jede Kachel ist mit<br />

drei farbigen Linien bedruckt, die den Kanten der Kachel eine entsprechende Farbe <strong>zu</strong>ordnen. Im folgenden<br />

sind einige typische Tantrix-Kacheln gezeigt.<br />

<strong>Das</strong> Ziel des Spieles ist, die Kacheln so an<strong>zu</strong>ordnen, dass nur <strong>zu</strong>sammenpassende Kacheln aneinander liegen.<br />

Es gib mehrere Variationen des Spieles, von denen wir nur eines hier bearbeiten werden.<br />

Die Tantrix-Aufgabe<br />

Sie sollen das folgende Tantrix-Problem bearbeiten:<br />

Sie bekommen ein Anzahl angeordneter Tantrix-Kacheln. Schreiben Sie ein Programm, dass diese Kacheln<br />

so rotiert, dass alle Kanten <strong>zu</strong>sammen passen. <strong>Das</strong> folgende Bild zeigt eine Aufgabe mit vier Kacheln (a) und<br />

die da<strong>zu</strong>gehörige Lösung (b). Beachten Sie, das wirklich nur rotiert wurde - nicht verschoben oder vertauscht.<br />

Die Details <strong>zu</strong> Tantrix<br />

1. Alle Linien auf einer Kachel haben unterschiedliche Farben (es gibt also immer genau drei Farben pro<br />

Kachel).<br />

2. Es gibt Tantrix-Spiele mit unterschiedlich vielen Farben. Ihr Programm muss das unterstützen können.


Die Details <strong>zu</strong>m Programm<br />

<strong>Das</strong> <strong>zu</strong> lösende Puzzle wird folgendermaßen an Ihr Programm übergeben: Für jede Kachel bekommen Sie zwei<br />

Koordinaten eines Koordinatensystems, das folgendermaßen aussieht:<br />

Außerdem bekommen Sie die Kantenfarben als einfache Bezeichner. <strong>Das</strong> in der Abbildung gezeigte Problem<br />

würde dann folgendermaßen aussehen:<br />

% Die Kacheln haben eine Position (x, y) und sechs Farben, im Uhrzeigersinn,<br />

% beginnend mit der unteren Kante<br />

setup(<br />

[kachel(0, 0, b, b, r, y, r, y),<br />

kachel(1, 0, g, r, g, r, b, b),<br />

kachel(1, 1, y, b, r, y, r, b),<br />

kachel(0,-1, b, g, g, b, r, r)<br />

]<br />

).<br />

% Die Lösung ist eine Liste mit einer Liste pro Kachel. Die Kachel-Listen<br />

% enthalten drei Elemente: die Koordinaten der Kachel und die Anzahl der Schritte,<br />

% die die Kachel im Uhrzeigersinn gedreht werden muss.<br />

setup(P), solve(P,L), L = [[0, 0, 4], [1, 0, 3], [1, 1, 0], [0,-1, 5]].<br />

Viel Erfolg!

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!