einfaches JAVA Projekt

babuschka

Top Contributor
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 ;)
 
G

Gast2

Gast
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

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.
 
G

gman

Gast
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.
 

Network

Top Contributor
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

Top Contributor
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

Bekanntes Mitglied
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 ?!
 

Landei

Top Contributor
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

Top Contributor
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

Bekanntes Mitglied
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 ?! =)
 

Andi_CH

Top Contributor
Back to the roots : Da stand
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: :D Da war wieder einmal einer mit derselben Idee schneller
 

Neue Themen


Oben