-
Quiz #17
Wörter kreuz und quer
Regeln
Die Regeln und der Ablauf der Quizrunde können in der entsprechenden Ankündigung eingesehen werden. Bitte lest sie euch aufmerksam durch, da sie alle wichtigen Informationen enthält. Es ist erlaubt und erwünscht, dass ihr euch direkt in diesem Thema über die Aufgabe austauscht. Also stellt bei Unklarheiten in der Aufgabenstellung oder Problemen bei der Umsetzung Fragen, versorgt uns mit nützlichen oder weiterführenden Links, diskutiert mögliche Lösungsansätze. Macht bei Beiträgen, die allzu viel verraten, aber bitte trotzdem Gebrauch vom [spoiler]-Tag.
Abgabe
Die Abgabe erfolgt wie immer im Abgabeforum. Abgabefrist ist Sonntag, der 22. August 2010 um ca. 21 Uhr.
Die Aufgabe
Kreuzworträtsel sind ein beliebter Zeitvertreib. Doch was tun, wenn gerade kein ungelöstes Rätsel zur Hand ist? Für einen Programmierer ist die Antwort klar: ein Programm schreiben, das neue Kreuzworträtsel generiert.
Stufe 1
In der ersten Schwierigkeitsstufe soll ein Rätsel folgender Form erzeugt werden:
Die Antworten sollen also waagrecht eingetragen werden, wobei sich das senkrecht zu lesende Lösungswort ergibt.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
Lösungswort ______ \ v 1: [_]|_|[_][_] 2: [_][_][_]|_|[_] 3: [_][_][_]|_|[_][_][_][_][_] 4: [_][_][_][_][_]|_|[_][ ] 5: [_][_]|_|[_][_][_][_][_] 6: [_]|_|[_][_][_][_][_][_] 7: [_]|_|[_][ ] 8: [_][_]|_| 9: [_][_][_][_]|_|[_][_][_][_][_] |.| 10: [_][_][_]|_|[_][_][_] 11: [_][_]|_|[_] 1: Textauszeichnungssprache (Abk.) 2: Freies Betriebssystem 3: Programm zur Fotobearbeitung 4: Ausstellungsort für Kunstwerke 5: Sammelbegriff für physische Bestandteile eines Rechners 6: 3D-Programm 7: Programmiersprache von Oracle 8: Datenbanksprache (Abk.) 9: Browser-Skriptsprache 10: Betriebssystem aus Redmond 11: ... helfen ...n
Stufe 2
Ab Stufe 2 soll es tatsächlich kreuz und quer gehen: ein sogenanntes „einfaches Kreuzworträtsel“ ist zu generieren:
.png/220px-Crossword_(PSF).png)
Wörter können entweder waagrecht oder senkrecht eingetragen werden. Die schwarzen Blindkästchen markieren die Grenze zwischen Wörtern. Eine symmetrische Anordung der Blindkästchen verleiht dem Rätsel eine gewisse Ästhetik:

Eine weitere Ausprägung dieser Rätselart lässt immer mindesten ein Kästchen Platz zwischen den Lösungen und erinnert ein bisschen an Scrabble.
Stufe 3
Die Königsdisziplin der Kreuzworträtsel sind die Schwedenrätsel:

Die Blindfelder dienen hier gleichzeitig als Tippgeber für ein angrenzendes Wort.
Eingabe
Für jeden Rätseltyp soll euer Programm eine Liste von Hinweisen und Lösungen entgegennehmen, z.B. im CSV-Format. Abhängig von der Stufe können auch noch weitere Eingaben nötig sein, z.B. das Lösungswort bei Stufe 1 oder die Rätselgröße bei den Stufen 2 & 3.
Ausgabe
Das Ausgabeformat steht euch frei.
Beispielfragen
CSV-Datei (UTF8-codiert) mit 1543 Fragen und Antworten: fragen.csv.txt
Quelle: http://moxquizz.de/
Und jetzt ran an die Tasten und viel Spaß beim Programmieren!Geändert von Matthias Reitinger (11.08.10 um 20:01 Uhr) Grund: Beispielfragen hinzugefügt
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
An Kreuzwort Rätseln habe ich mich schonmal versucht.
Irgendwie fehlt mir eine vernünftige Idee um „schöne” Rätsel hinzubekommen.
Naja Stufe 1 sollte drin sein
Gruß
Erik
-
10.08.10 19:13 #3
Ich will jetzt zum Ersten Mal mitmachen.
Ich werde PHP und HTML nehmen, als Ausgabeformat lassen sich die Tabellen in HTML nehmen
Geändert von ComFreek (10.08.10 um 19:27 Uhr)
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
11.08.10 11:01 #4
Das Bild zum Coding Quiz hat mit an meine Oma erinnert, sie rätselt auch gerne die Rätsel, wo
a) Die Wörter schon vorgegeben sind (nach Länge und Alphabet geordnet) und diese ins Gitter eingebaut werden müssen
b) Die Buchstaben der Lösungswörter vorgegeben, aber alphabetisch geordnet sind, d.h. diese müssen geschüttelt werden
c) Die Buchstaben durch Zahlen/Symbole ersetzt wurden
Ich denke diese sind abgesehen von den Beschreibungen für die einzutragenden Wörtern den oben aufgelisteten Rätseln sehr ähnlich. Die Textdatei könnte die gleiche sein. Wer Lust hat kann sich ja auch daran versuchen
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
11.08.10 11:29 #5Hat jemand schon einen Ansatz? Ich habe folgenden:Es ist erlaubt und erwünscht, dass ihr euch direkt in diesem Thema über die Aufgabe austauscht. Also stellt bei Unklarheiten in der Aufgabenstellung oder Problemen bei der Umsetzung Fragen, versorgt uns mit nützlichen oder weiterführenden Links, diskutiert mögliche Lösungsansätze. Macht bei Beiträgen, die allzu viel verraten, aber bitte trotzdem Gebrauch vom [spoiler]-Tag.
Achtung Spoiler:
Das Dateiformat ist bei mir ein serialisiertes Array, das so ausschaut:
Code :1 2 3 4 5 6 7 8 9 10
array(2) { ["solution"]=> string(5) "ssl" ["words"] => array(5) { ["Menschen wohnen darin"] => string(4) "haus" ["Das beste Forum im Internet"]=> string(12) "tutorials.de" ["Ein Verweis auf eine externe Datei"]=> string(4) "link" } }
Doch ich weiß nicht, wie ich das Lösungwort bilden kann bzw. an welcher Stelle der jeweile String sein muss, damit die Lösung rauskommt.Geändert von ComFreek (11.08.10 um 11:38 Uhr)
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Mahlzeit,
ich arbeite schon fieberhaft an meinem Generator - mein Ansatz:
Achtung Spoiler:
Ich fülle erst mal eine Datenbank mit Frage, Lösung und Schwierigkeitsgrad der Aufgabe (von Frage und Lösung abhängig).
Dann soll der Anwender ein Lösungswort eingeben -> Datenbank wird ausgelesen.
Für jeden Buchstaben des Lösungswortes wird geprüft, ob der Datensatz diesen enthält -> falls ja ab in das Array für den n.-Lösungsbuchstaben.
Dann noch kräftig durchgeschüttelt und man hat schon mal eine zufällige Auswahl an Fragen-Lösungen.
Wie man das ganze dann aber noch positioneren soll - darüber muss ich mir dann mal noch Gedanken machen
.
Geändert von Alex_T (11.08.10 um 18:19 Uhr) Grund: Spoilergefahr behoben
Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
11.08.10 17:48 #7Das ist genau mein Problem! Ich weiß, dass es irgendwas mit str_pos sein muss, aber weiter komme ich nicht.
Zitat von Alex_T

PS: Danke für den Tipp mit der Datenbank und den Schwierigkeitsgraden
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
ich mach mir mal noch gedanken, BEVOR ich meine Datenbank fülle (nicht das dann alles für umsonst war
) und falls sich ein Geistesblitz einstellt, lass ich es dich wissen
Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
Also mein erster Ansatz wegen der Positionierung sieht ungefähr so aus:
Achtung Spoiler:
Anstatt das Lösungswort in der csv (oder Array oder was auch immer) mit zu geben, habe ich den jeweiligen Lösungsbuchstaben mit einem Unterstrich "markiert".
So z.B. H_TML (T ist der Lösungsbuchstabe)
Jetzt muss man sich nur noch das Lösungswort X mit den meisten Buchstaben links des Lösungsbuchtabens raussuchen.
Dieses Wort ist ganz links positioniert, alle anderen Wörter Y sind um die Differenz der Anzahl von Buchstaben links des Lösungsbuchstabens, von X und Y, nach rechts verschoben.
Beispiel:
X = H_TML = 1 Buchstabe links des Lösungsbuchstabens
Y = LIN_UX = 3 Buchstaben links des LB
D.h. Linux steht ganz link und HTML ist um 2 "Felder" nach rechts verschoben.
In order to understand recursion, one must first understand recursion.
-
hab mir auch grad was ähnliches überlegt:
Achtung Spoiler:
Man berechnet die Anzahl der Buchstaben des längsten Wortes. Da man ja nicht weiß wo sich der Lösungsbuchstabe in diesem Wort befindet, erstellt man für jede Zeile Anzahl_der_Buchstaben_längstes_Wort - 1 Zellen nach links und nach rechts.
Nun ermittelt man die Position des Buchstaben, der Gesamt-Lösungsbuchstabe ist, eines anderen Lösungswortes und ordnet es Anzahl_der_Buchstaben_längstes_Wort minus Position_des_Buchstaben_andere_Lösung an -> fertig
Ich hoffe, dass hat jemand verstanden, denn ich kann meinen Gedanken gerade selber nur sehr schwer folgen
Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
11.08.10 18:27 #11
So habe ich das verstanden:
Achtung Spoiler:
Also man z.B. das Wort "maus" für die erste Zeile.
Dann müsste die erste Zeile so lang sein: [mono]$length=(strlen("maus")*2)-1=7
Wenn ich mir das gerade so überlege, könnte das hinhauen.
Aber man müsste die Position des senkrechten Lösungswort festlegen.
Hmm.
Ich habe mir kurz mal eine Liste mit Fragen und Lösungen hochgeladen. Wenn sie jemand braucht, kann sie frei benutzen. Die erste Spalte beinhaltet die Fragen, die zweite die Lösungen und die dritte die Schwierigkeit, wobei diese von 1(=Leicht) bis 6(=Profi) geht.
Ich denke mal ein CREATE TABLE-Skript muss ich nicht hochladen
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Mir ist gerade folgendes eingefallen:
Achtung Spoiler:
Man könnte meine oben genannte Methode auch relativ einfach ohne die Markierungen verwenden, wenn man ganz einfach davon ausgeht das immer das erste Vorkommen eines Buchstabens teil des Lösungswortes sein muss.
In order to understand recursion, one must first understand recursion.
-
11.08.10 19:05 #13
@rd4eva:
Achtung Spoiler:
Dann könnte mein vorgeschlagenes str_pos weiterhelfen.
Jetzt kam mir gerade ein Geisetsblitz
Wenn man von meiner These ausgeht (siehe rd4eva's Beitrag), dann könnte man die Positionen so berechnen:
Angenommen wir haben das Lösungswort "UHU" und die Wörter "maus", "hilfe", "bus".
Dann muss man jeweils die zurückgegebenen Werte von str_pos zusammenrechnen:
Code :1 2 3 4 5
maus | u ist an Pos. 2 hilfe | h ist an Pos. 0 bus | u ist an Pos. 1 ---------------------------- 3
Dazu muss man noch die Länge des längsten Wortes dazurechnen:
Code :1 2 3 4
3 + 5 // strlen(hilfe)=5 ----- 8
Später müsste man noch die Differenz von str_len vom aktuellen Wort und dem vorherigen machen, und diese dann als Abstand von Links bei der Tabelle nutzen:
Und der Abstand von "hilfe" von Links ist 2!Code :1 2 3 4
maus | u ist an Pos. 2 hilfe | h ist an Pos. 0 ---------------------------- 2 // 2 - 0 = 2
(c) von Idee ComFreek
Edit: Die Umsetzung mache ich Morgen.Geändert von ComFreek (11.08.10 um 19:18 Uhr)
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Mahlzeit,
das Ganze hat jetzt ganz schön lange gedauert, aber ich habe es hinbekommen.
Wenn ich mein Script mal hochladen soll, bitte hier im Thread melden -> will ja nicht unnötig spoilern
.
P.S. Ist nur das Script für die Positionierung - Datenbank-Werte in Arrays schreiben oder wie Ihr es auch immer macht müsst Ihr dann mal selber vornehmen
Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
11.08.10 19:48 #15mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
Ähnliche Themen
-
Quer Scroller nur im IE 6
Von sally66 im Forum CSSAntworten: 24Letzter Beitrag: 09.03.09, 17:25 -
Quer scrollen im Dreamweaver
Von Spelmann im Forum HTML-EditorenAntworten: 0Letzter Beitrag: 11.02.09, 15:52 -
Print - Quer
Von Sarah im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 05.04.04, 17:28 -
TABELLE (quer)
Von malex im Forum CSSAntworten: 8Letzter Beitrag: 22.05.03, 22:32 -
Quer durch!
Von Internetfun im Forum PhotoshopAntworten: 4Letzter Beitrag: 31.10.02, 12:32



8Danke




Login




