ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
1236
1236
EMPFEHLEN
-
22.08.10 21:01 #1
Hi,
hier meine Lösung des Coding Quizes. Leider habe ich aus Zeitgründen nur die erste Stufe geschafft, und davon auch nur den Algorithmus zum Finden der richtigen Positionen der Wörter. Die Position wird mit jedem Wort in einem Objekt gespeichert, dazu auch noch der Lösungshinweis. Der Algorithmus sieht wie folgt aus:
Die Methode createPuzzle nimmt eine Liste aus PuzzleWords entgegen. Ein PuzzleWord ist nichts anderes als ein Paket, indem Wort, Lösungshinweis und Position des Wortes vereint sind. Die erste Zeile im Rätsel hat Position 0. Der X-Wert bezieht sich auf das Lösungswort, welches den Wert 0 hat, sodass alle Wörter entweder einen negativen X-Wert oder 0 besitzen.
Das Puzzle wird generiert, in dem jedes Wort in der Liste durchlaufen wird und an die erste passende Stelle des Lösungswortes gesetzt wird. Diese Y-Position wird dann gespeichert. Wenn das nächste Wort keine passende Stelle findet, die noch frei ist, aber eine, die schon besetzt ist, dann wird probiert, ob dieses Wort, das die Stelle besetzt, noch woanders platziert werden kann. Dies passiert rekursiv. Wenn ein Wort nicht gesetzt werden kann, ist das ganze Rätsel mit diesen Worten nicht generierbar und der Algorithmus liefert ein false.
Code java: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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
public class SimplePuzzleGenerator { private int solutionLenght; private PuzzleWord[] puzzleList; private String solutionWord; public boolean createPuzzle(ArrayList<PuzzleWord> words, String solution, boolean keepOrder) { if(words.size() != solution.length()){ return false; } solutionLenght = solution.length(); puzzleList = new PuzzleWord[solutionLenght]; solutionWord = solution; boolean isSuccesful = true; int wordIndex = 0; while(wordIndex < words.size() && isSuccesful){ isSuccesful = setWord(words.get(wordIndex), 0); wordIndex++; } return isSuccesful; } private boolean setWord (PuzzleWord word, int startPosition){ int charPlace = startPosition; boolean isSet = false; while(charPlace < solutionLenght && !isSet){ if(word.getWord().indexOf(solutionWord.charAt(charPlace)) > -1){ if(puzzleList[charPlace] == null){ puzzleList[charPlace] = word; word.setPositionX(getPositionX(word, charPlace)); word.setPositionY(charPlace); isSet = true; }else{ if(setWord(puzzleList[charPlace], charPlace+1)){ puzzleList[charPlace] = word; word.setPositionX(getPositionX(word, charPlace)); word.setPositionY(charPlace); isSet = true; } } } charPlace++; } return isSet; } private int getPositionX(PuzzleWord word, int range){ return -(word.getWord().indexOf(solutionWord.charAt(range))); }
Diese Liste mit den PuzzleWords wird an eine Klasse übergeben, die daraus ein Bild generiert. Oder, falls gewünscht, andere Export-Formen unterstützt. Wie gesagt, so weit bin ich leider nicht gekommen, wer Interesse daran hat, kann sich ja per PN oder hier im Thread bei mir melden.Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.
Sollte ich mal Mist labern weist mich bitte darauf hin.
Ich freue mich über ein Danke, wenn ich helfen konnte!
Ähnliche Themen
-
Quiz XML mit Java DOM
Von Simon Berger im Forum XML TechnologienAntworten: 1Letzter Beitrag: 16.06.10, 08:20 -
[QUIZ#13] Erik (Java)
Von Erik im Forum ArchivAntworten: 0Letzter Beitrag: 17.01.10, 15:53 -
[QUIZ#11]DosCoder(Java)
Von DosCoder im Forum ArchivAntworten: 2Letzter Beitrag: 25.10.09, 12:22 -
[Quiz#1]DosCoder(VisualBasic 2005)
Von DosCoder im Forum ArchivAntworten: 0Letzter Beitrag: 21.09.08, 12:43 -
Quiz mit Java?
Von fraus im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 13.07.01, 10:22





Login





