Kreuzworträtsel erstellen

Neue Frage »

Auf diesen Beitrag antworten »
Haevelin Kreuzworträtsel erstellen

Hallo, folgendes Problem: ich habe n Worte. Diese Worte sollen in einem Kreuzworträtsel so angeordnet werden, dass von jedem Wort zu jedem anderen Wort ein direkter oder indirekter Weg besteht. Die Größe des Kreuzworträtsels bestimmt sich dann in Abhängigkeit von den Wortlängen. Wenn es nicht möglich ist, von jedem Wort zu jedem anderen Wort zu traversieren, dann soll eine Exception geworfen werden.
 
Auf diesen Beitrag antworten »
Haevelin RE: Kreuzworträtsel erstellen

Habe bis jetzt folgende Lösung erstellt. Die Namen der Methoden sind sprechend. Es wird ein Feld übergeben, welches mit lauter 1 en initialisiert ist. Dann geht es in die Rekursion, je nachdem, ob senkrecht oder waagrecht ein neuer Name gesetzt werden kann.


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
public void besetze(char[][] rk_feld, String[] Worte, int index) {
 		char[][] feld_1 = null;
 		char[][] feld_2 = null;
  		if (index < Worte.length) {
 			for (int i = 0; i < rk_feld.length; i++) {
 				for (int j = 0; j < rk_feld.length; j++) {
 					if (passt_horizontal(rk_feld, Worte[index], i, j))
 { 
						if (passt_vertikal(rk_feld, Worte[index], i, j)) {
 						feld_1=setze_vertikal(rk_feld, Worte[index], i, j);
 						feld_2=setze_horizontal(rk_feld, Worte[index],i, j);
  						} else { 							 
                       feld_2=setze_horizontal(rk_feld, Worte[index], i,j);
 						}
  					} else if (passt_vertikal(rk_feld, Worte[index], i, j)) 
                                        {
 						feld_1=setze_vertikal(rk_feld, Worte[index], i, j);
 					}
 				}
 			}
 			if (feld_1!=null){
 				besetze(feld_1, Worte, index+1);
 			}
 			if (feld_2!=null){
 				besetze(feld_2, Worte, index+1);
 			}
 		}
 		 		if (index>=Worte.length){
 			al.add(rk_feld);
 		}
  	}




Als Felder erhalte ich lediglich einige Ausgaben:


Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 N E T T M A T S E 1
E S S E N H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 N
1 1 1 1 1 1 1 1 1 1 1 E
1 1 1 1 1 1 1 1 1 1 1 T
1 1 1 1 1 1 M A T S E T
E S S E N H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 M
1 1 1 1 1 1 1 1 1 1 1 A
1 1 1 1 1 1 1 1 1 1 1 T
1 1 1 1 1 1 1 1 1 1 1 S
1 1 1 1 1 1 1 N E T T E
E S S E N H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 M
1 1 1 1 1 1 1 1 1 1 N A
1 1 1 1 1 1 1 1 1 1 E T
1 1 1 1 1 1 1 1 1 1 T S
1 1 1 1 1 1 1 1 1 1 T E
E S S E N H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 E
1 1 1 1 1 1 1 1 1 1 1 S
1 1 1 1 1 1 1 1 1 1 1 S
1 1 1 1 1 1 1 1 1 1 1 E
1 1 1 1 1 1 1 N E T T N
M A T S E H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 E
1 1 1 1 1 1 1 1 1 1 N S
1 1 1 1 1 1 1 1 1 1 E S
1 1 1 1 1 1 1 1 1 1 T E
1 1 1 1 1 1 1 1 1 1 T N
M A T S E H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 M E
1 1 1 1 1 1 1 1 1 1 A S
1 1 1 1 1 1 1 1 1 1 T S
1 1 1 1 1 1 1 1 1 1 S E
1 1 1 1 1 1 1 1 1 1 E N
1 N E T T H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 M E
1 1 1 1 1 1 1 1 1 N A S
1 1 1 1 1 1 1 1 1 E T S
1 1 1 1 1 1 1 1 1 T S E
1 1 1 1 1 1 1 1 1 T E N
1 1 1 1 1 H U N G E R 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 1 1 U
1 1 1 1 1 1 1 1 1 1 1 N
1 1 1 1 1 1 1 1 1 1 1 G
1 1 1 1 1 1 1 1 1 1 1 E
1 1 1 1 1 1 1 N E T T R
1 M A T S E E S S E N 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 1 1 U
1 1 1 1 1 1 1 1 1 1 N N
1 1 1 1 1 1 1 1 1 1 E G
1 1 1 1 1 1 1 1 1 1 T E
1 1 1 1 1 1 1 1 1 1 T R
1 M A T S E E S S E N 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 1 M U
1 1 1 1 1 1 1 1 1 1 A N
1 1 1 1 1 1 1 1 1 1 T G
1 1 1 1 1 1 1 1 1 1 S E
1 1 1 1 1 1 1 1 1 1 E R
1 1 N E T T E S S E N 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 1 M U
1 1 1 1 1 1 1 1 1 N A N
1 1 1 1 1 1 1 1 1 E T G
1 1 1 1 1 1 1 1 1 T S E
1 1 1 1 1 1 1 1 1 T E R
1 1 1 1 1 1 E S S E N 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 1 E U
1 1 1 1 1 1 1 1 1 1 S N
1 1 1 1 1 1 1 1 1 1 S G
1 1 1 1 1 1 1 1 1 1 E E
1 1 1 1 1 1 1 1 1 1 N R
1 1 N E T T M A T S E 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 1 E U
1 1 1 1 1 1 1 1 1 N S N
1 1 1 1 1 1 1 1 1 E S G
1 1 1 1 1 1 1 1 1 T E E
1 1 1 1 1 1 1 1 1 T N R
1 1 1 1 1 1 M A T S E 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 M E U
1 1 1 1 1 1 1 1 1 A S N
1 1 1 1 1 1 1 1 1 T S G
1 1 1 1 1 1 1 1 1 S E E
1 1 1 1 1 1 1 1 1 E N R
1 1 1 1 1 1 1 N E T T 1
Neues Feld
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 H
1 1 1 1 1 1 1 1 1 M E U
1 1 1 1 1 1 1 1 N A S N
1 1 1 1 1 1 1 1 E T S G
1 1 1 1 1 1 1 1 T S E E
1 1 1 1 1 1 1 1 T E N R
1 1 1 1 1 1 1 1 1 1 1 1



Es fällt auf, dass die Werte der Worte alle am rechten Rand sind.
Auf diesen Beitrag antworten »
eulerscheZahl

Es fällt auf, dass manche Worte gar keine echten Worte sind. Solltest du sowas verhindern?
Auf diesen Beitrag antworten »
Haevelin

Wenn durch die Anordnung der richtigen Worte andere Worte entstehen, oder Unworte, so ist das erlaubt.
 
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast leider nur Teile deines Codes angegeben. So kann ich das nicht nachvollziehen.

Ich kann dir sagen, wie ich es angehen würde, falls das deine Frage war:
code:
1:
2:
3:
4:
5:
6:
7:
class Word [
    private String text;
    private Point location;
    private boolean vertical;
    
    //...
}

Du hast eine Liste von bereits platzierten Wörtern. Um ein neues vertikal zu platzieren, gehst du alle horizontalen Wörter durch und für diese jeweils alle Buchstaben. Wenn ein Buchstabe auch im neuen Wort vorhanden ist, schaust du, ob du es dort einfügen kannst. Wenn du ein Wort nicht unterbringst, machst du mit dem nächsten weiter (vielleicht schaffst du das aktuelle ja später noch).
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »