# einfaches JAVA Projekt



## babuschka (28. Nov 2010)

Ich arbeite an einem Projekt das folgende Rahmenbedingungen erfüllen soll:

1) es soll ein Array enthalten
2) mind. ein Standardalgorithmus

Wie ihr seht, also ziemlich offen gelassen was daraus werden soll.
Ich habe an ein Spiel a la Vier Gewinnt gedacht, muss aber inzwischen feststellen das meine Kenntnisse bei weitem nicht reichen und wollte fragen ob ihr vielleicht eine Idee habt, was diese Bedingungen erfüllt, aber schon anspruchsvoller ist als ein Tannenbaum aus Zahlen.

Danke im voraus


----------



## Gast2 (28. Nov 2010)

iLeen hat gesagt.:


> Ich arbeite an einem Projekt das folgende Rahmenbedingungen erfüllen soll:
> 
> 1) es soll ein Array enthalten
> 2) mind. ein Standardalgorithmus
> ...



Das klingt eher nach einer mehr akademischen Aufgabe, der Algorithmus für eine Spiel wie Vier Gewinnt ist auch nicht so kompliziert aber es gibt doch etwas geeignetere Beispiele. Ich würde einfach ein Array sortieren lassen. Z.B. BubbleSort oder Mergesort implementieren und fertig.

Einfach mal hier im Forum nach suchen oder per Google. Gibt es genug Beispiele.


----------



## gman (28. Nov 2010)

Wenn das ein einfaches Projekt zum Lernen sein soll und die genannten Anforderungen nicht unbedingt sein
müssen wäre:

Coding Kata: Home

eventuell was für dich. Die Seite bietet halbwegs fertige Projekte mit einer bestimmten Aufgabenstellung an,
man kann sich dann ganz auf die Aufgabenlösung konzentrieren.


----------



## babuschka (28. Nov 2010)

Die Anforderungen müssen leider berücksichtigt werden, da es sich um ein Schulprojekt handelt.


----------



## Network (28. Nov 2010)

Wie währe es mit "Tic Tac Toe"
relativ leicht umzusetzen... Ein Array evt. als KI-Ausführungsliste (wie soll die KI reagieren wenn...) und/oder evt. als Feldliste einfach.

Standardalgorithmus währe dann selbstverständlich, im Zusammenhang mit evt. der KI-Ausführungsliste, ein KI-Algorithmus.


----------



## Landei (28. Nov 2010)

Game of Life, Sudoku lösen, Acht-Damen-Problem, Springer-Tour, Zyklen in Graphen...


----------



## babuschka (28. Nov 2010)

Soduku gefällt mir gut! Vielleicht hast du ja mal einen Pseudocode oder eine Art Anleitung, an die ich mich halten kann ?


----------



## Landei (28. Nov 2010)

Es gibt prinzipiell zwei Arten, ein Sudoku zu lösen: Entweder man hat ein Menge von Regeln, nach denen man die Werte, die die Felder annehmen können, immer weiter einschränkt, eindeutige Werte einträgt, u.s.w. Das wäre die "menschliche" Methode, und die wäre für dich zu kompliziert. Die "Maschinen-Methode" nennt sich Backtracking. Dazu wird in das erste freie Feld die erste "passende" Zahl eingesetzt, in das nächste Feld wieder die erste passende Zahl u.s.w. Natürlich gerät man mit dieser Vorgehensweise irgendwann in eine Sackgasse, wo nichts mehr passt. Wie in einem Labyrinth geht man dann zur letzten Entscheidung zurück, und versucht es mit der nächsten Zahl. Hat man erfolglos alles durchprobiert, geht man eventuell weitere Schritte zurück. Das Verfahren ist (zumindest bei Sudoku) viel zu umständlich für einen Menschen, aber (vergleichsweise) leicht zu implementieren, und selbst für hunderttausende Stellungen braucht der Computer nur Sekundenbruchteile.

Zur Implementierung: Du brauchst ein 2D Array. Du belegst die vorgegebenen Stellen mit den jeweiligen Zahlen, den Rest mit 0. Dann brauchst du eine Methode, die testet, ob ein Array "gültig" ist (also keine der Sudoku-Regeln verletzt). Zum Schluss brauchst du eine Liste für das Backtracking. Du suchst im Array das erste "freie" Feld (eine 0) und setzt dort eine 1, testest ob die OK ist, nein, dann halt eine 2. Passt die 2, in Ordnung. *Wichtig*: Dann musst du dir diese Entscheidung in der Liste merken: Position 1,1 eine 2 gesetzt. Nächstes freies Feld suchen, so weitermachen. Bleibst du irgendwo stecken, findest du keine Lösung. setzt du das letzte Feld wieder auf 0, löschst den letzten Eintrag in der Liste und schaust, ob an der Position vom vorletzten Listeneintrag die nächste Zahl passen würde. Falls ja, weiter "vorwärts", falls nein, wieder wie beschrieben einen Schritt "zurück".


----------



## dehlen (28. Nov 2010)

Aber würde die Backtracking Methode nicht nur für einen Sodokulöser was bringen.... ich denke hier ist eher nach einem Programm gefragt wo man selber die Zahlen eingibt und dann am Ende der Computer überprüft ob das Ergebniss des Menschen richtig ist.... mit der Backtracking Methode kann man doch nur den Computer das Soduku lösen lass oder ?!


----------



## babuschka (28. Nov 2010)

Genau das habe ich mir auch grade überlegt.


----------



## Landei (28. Nov 2010)

Das Überprüfen eines fertigen Sudokus ist natürlich vieeeel einfacher  

Ist nur die Frage, ob das dann für das Projekt "kompliziert genug" ist.


----------



## babuschka (28. Nov 2010)

Tja also ich finde es schwierig etwas zu finden, was meine Kenntnisse nicht maßlos übersteigt aber auch nicht so anspruchslos ist wie eine Liste mit Zahlen zu sortieren.


----------



## dehlen (28. Nov 2010)

aber dann müsste man theoretisch nur genügend viele JTextFields erstellen in die man dann die Zahlen 1-9 reinschreiben kann... außerdem bräuchte man eine random Methode die zufällige Zahlen schon vorgibt und einen Algorithmus zum überprüfen des Sudokus.... allerdings gibt es noch sicherlich schönere Varianten habe ich recht .. =) ? ich hätte es dann so gemacht aber man braucht ja auch ein Array siehe Aufgabenstellung und es gibt bestimmt noch eine schönere Lösung als 9x9 Textfelder zu erstellen nicht wahr?! .. =)

Bin selber erst Programmieranfänger deswegen kann ich da jetzt nicht direkt aushelfen aber vielleicht hat ja @Landei eine Idee ?! =)


----------



## Landei (28. Nov 2010)

Mit zufälligen Zahlen bekommst du kein Sudoku hin, entweder ist es nicht lösbar, oder es gibt mehrere Lösungen.


----------



## dehlen (29. Nov 2010)

Ja aber ist das nicht auch bei den ganzen Sudokus so das es manchmal nicht aufgeht ?!


----------



## ARadauer (29. Nov 2010)

> 1) es soll ein Array enthalten
> 2) mind. ein Standardalgorithmus


ich würd einfach zahlen sortieren...


----------



## Andi_CH (29. Nov 2010)

Back to the roots : Da stand


iLeen hat gesagt.:


> Ich arbeite an einem Projekt das folgende Rahmenbedingungen erfüllen soll:
> 
> 1) es soll ein Array enthalten
> 2) mind. ein Standardalgorithmus



Ich wundere mich immer noch, warum ein Sort-Algorithums nicht in Frage kommt - der ist anfängertauglicher als ein Sudoku - was für ein Standardalgorithums kommt denn im Sudoku vor?

Oder dann halt eben ein Algorithums der überprüft ob ein vollständig ausgefülltes Sudoku korrekt ist. (Das ist wirklich SEHR einfach, aber ob das "standard" ist???)

EDIT:  Da war wieder einmal einer mit derselben Idee schneller


----------



## Landei (29. Nov 2010)

dehlen hat gesagt.:


> Ja aber ist das nicht auch bei den ganzen Sudokus so das es manchmal nicht aufgeht ?!



Die Sudokus in der Zeitung oder im Netz gehen immer auf und die Lösung ist immer eindeutig (so denn niemand geschlampt hat).


----------



## Gast2 (29. Nov 2010)

Andi_CH hat gesagt.:


> EDIT:  Da war wieder einmal einer mit derselben Idee schneller



Viel schneller:

http://www.java-forum.org/hausaufgaben/109633-einfaches-java-projekt.html#post703112

Aber das hat wohl keiner gelesen


----------



## Final_Striker (29. Nov 2010)

Einen "Lotto"-Automat.

Du muss man Zufallszahlen erstellen, gezogene Zahlen sortieren und eine einfache GUI ist auch noch drin.


----------

