Matlab Kakuro: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
 
Zeile 1: Zeile 1:
 
== Inhalt ==
 
== Inhalt ==
Ziel des Projektes ist die Erstellung eines Lösungsprogramms für Sudokus belieber Größe, z.B. 9x9 oder 16x16, und beliebigen Schwierigkeitsgrades. Dazu werden eine Reihe von Hilfsroutinen und ein Lösungsprogramm benötigt.
+
Ziel des Projektes ist die Erstellung eines Lösungsprogramms für Kakuros belieber Größe mit den Zahlen 1 bis9. Dazu werden eine Reihe von Hilfsroutinen und ein Lösungsprogramm benötigt.
   
Für alle Teile gibt es Vorgaben, Anregungen und Tipps wie ich es gemacht habe.
+
Für alle Teile gibt es Anregungen und Tipps wie ich es gemacht habe.
   
Eine Beschreibung, was Sudokus sind, findet man unter [http://de.wikipedia.org/wiki/Sudoku].
+
Eine Beschreibung, was Kakuros sind, findet man unter [http://de.wikipedia.org/wiki/Kakuro].
  +
  +
Bitte lesen sie auch die Beschreibung von [[Matlab Sudoku]], da es auch dort wertvolle allgemeine Hinweise gibt.
   
 
== Schwierigkeit ==
 
== Schwierigkeit ==
Zeile 10: Zeile 12:
   
 
== Ziel ==
 
== Ziel ==
Ziel ist die Lösung des Problems unter vorwiegender Verwendung von Array-Operationen in Matlab. D.h., die Verrwendung von for-Schleifen sollte so weit als möglich vermieden werden. Sie sind aber schonerlaubt, wenn man etwas niicht anders lösen kann oder keine andere Idee hat. Typischerweise werden die Programme langsamer, wenn man zu viele Schleifen verwendet. Die Programmstruktur mit einigen Hilfsprogrammen und einem rekursiven Lösungsprogramm wie ich es geschrieben habe, gibt es weiter unten. Ihr müsst und sollt euch nichtt sklavisch daran halten. Man kann von den Tipps etwas lernen bzw. sehen, wie eine Strategie aussehen kann, es muss aber nicht so gemacht werden. Oft gibt es viele Möglichkeiten und wir können sie ja am Ende bei einer Sudoku-Party vergleichen.
+
Ziel ist die Lösung des Problems unter vorwiegender Verwendung von Array-Operationen in Matlab. D.h., die Verrwendung von for-Schleifen sollte so weit als möglich vermieden werden. Sie sind aber schon erlaubt, wenn man etwas nicht anders lösen kann oder keine andere Idee hat. Typischerweise werden die Programme langsamer, wenn man zu viele Schleifen verwendet. Die Programmstruktur mit einigen Hilfsprogrammen und einem rekursiven Lösungsprogramm wie ich es geschrieben habe, gibt es weiter unten. Ihr müsst und sollt euch nichtt sklavisch daran halten. Man kann von den Tipps etwas lernen bzw. sehen, wie eine Strategie aussehen kann, es muss aber nicht so gemacht werden. Oft gibt es viele Möglichkeiten und wir können sie ja am Ende bei einer Kakuro-Party vergleichen.
   
 
== Prüfung ==
 
== Prüfung ==
Zeile 24: Zeile 26:
 
* Teilnehmer:
 
* Teilnehmer:
 
** [mailto:student@student.tugraz.at| Vorname Nachname]
 
** [mailto:student@student.tugraz.at| Vorname Nachname]
** [mailto:christian.straka@student.tugraz.at| Christian Straka]
 
** [mailto:cheil@sbox.tugraz.at| Christoph Heil]
 
** [mailto:hetzelr@sbox.tugraz.at| Reinhold Hetzel]
 
** [mailto:joao@sbox.tugraz.at| Rudolf Werber]
 
** [mailto:a_dorda@sbox.tugraz.at| Antonius Dorda]
 
** [mailto:krausp@sbox.tugraz.at| Kraus Patrick]
 
** [mailto:mmr@sbox.tugraz.at| Mayrhofer - R. Michael]
 
** [mailto:hoerz@sbox.tugraz.at| Hörzinger Michael]
 
** [mailto:pedross@sbox.tugraz.at| Andreas Pedroß]
 
** [mailto:oswaldst@sbox.tugraz.at| Stefan Oswald]
 
** [mailto:davidl86@sbox.tugraz.at| David Love]
 
** [mailto:krugm@sbox.tugraz.at| Markus Krug]
 
   
 
== Matlab Programme zur Lösung des Problems ==
 
== Matlab Programme zur Lösung des Problems ==
Zeile 42: Zeile 32:
 
=== Grundlagen ===
 
=== Grundlagen ===
   
In der hier gewählten Darstellung ist ein Sudoku ein <math>(n^2 \times n^2)</math>-Feld mit Zahlen zwischen 1 und <math>n^2</math>. An jenen Stellen, wo Zahlen gesetzt werden müssen steht eine Null. In jeder Zeile (row), in jeder Spalte (column) und in jedem Block (sub-square) darf eine Zahl nur einmal vorkommen.
 
   
 
=== Hilfsroutinen ===
 
=== Hilfsroutinen ===

Version vom 13. Mai 2007, 15:33 Uhr

Inhalt

Ziel des Projektes ist die Erstellung eines Lösungsprogramms für Kakuros belieber Größe mit den Zahlen 1 bis9. Dazu werden eine Reihe von Hilfsroutinen und ein Lösungsprogramm benötigt.

Für alle Teile gibt es Anregungen und Tipps wie ich es gemacht habe.

Eine Beschreibung, was Kakuros sind, findet man unter [1].

Bitte lesen sie auch die Beschreibung von Matlab Sudoku, da es auch dort wertvolle allgemeine Hinweise gibt.

Schwierigkeit

Das Problem ist ideal für Matlab, setzt aber gute Kenntnisse der Sprache voraus. Im Prinzip reicht sicher der Inhalt der ersten sechs Übungen, man muss aber die Syntax und die logischen Zusammenhänge gut beherschen. Die Aufgabe ist also auf keinen Fall leicht und stellt durchaus hohe Anforderungen an die Teilnehmer.

Ziel

Ziel ist die Lösung des Problems unter vorwiegender Verwendung von Array-Operationen in Matlab. D.h., die Verrwendung von for-Schleifen sollte so weit als möglich vermieden werden. Sie sind aber schon erlaubt, wenn man etwas nicht anders lösen kann oder keine andere Idee hat. Typischerweise werden die Programme langsamer, wenn man zu viele Schleifen verwendet. Die Programmstruktur mit einigen Hilfsprogrammen und einem rekursiven Lösungsprogramm wie ich es geschrieben habe, gibt es weiter unten. Ihr müsst und sollt euch nichtt sklavisch daran halten. Man kann von den Tipps etwas lernen bzw. sehen, wie eine Strategie aussehen kann, es muss aber nicht so gemacht werden. Oft gibt es viele Möglichkeiten und wir können sie ja am Ende bei einer Kakuro-Party vergleichen.

Prüfung

Die Teilnehmer erledigen mit der Fertigstellung des Projektes die Prüfung.

Die Lösungen können durchaus zwischen den Teilnehmern besprochen und diskutiert werden, es sollte aber jeder seine Variante abliefern, die er dann auch genau erklären kann. Es gibt also kein Problem mit Zusammenarbeit. Kopierversuche von Personen, die es nicht selbst machen können, sollten aber von den Teilnehmern verhindert werden. Ich persönlich hätte dafür kein Verständnis und würde derartige Angebote für Prüfungen nicht mehr anbieten.

Involvierte Personen

Hier kann sich jeder Teilnehmer leicht eintragen. Man braucht sich nur im Wiki anmelden (rechts oben) und den File editieren. Die Syntax ist extrem einfach.

Matlab Programme zur Lösung des Problems

Hier gibt es den Hilfetext meiner Routinen und Anmerkungen wieso und warum ich sie gemacht habe. Es gliedert sich in Hilfsroutinen und den eigenlichen Solver.

Grundlagen

Hilfsroutinen

sudoku_sub