Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Kreuzworträtsel erstellen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Kreuzworträtsel erstellen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Kreuzworträtsel erstellen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
09.05.2016 16:34 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

RE: Kreuzworträtsel erstellen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
09.05.2016 19:52 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es fällt auf, dass manche Worte gar keine echten Worte sind. Solltest du sowas verhindern?

__________________
Syntax Highlighting fürs Board (Link)
09.05.2016 21:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wenn durch die Anordnung der richtigen Worte andere Worte entstehen, oder Unworte, so ist das erlaubt.
10.05.2016 07:45 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

__________________
Syntax Highlighting fürs Board (Link)
11.05.2016 06:31 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Kreuzworträtsel erstellen