tutorials.de Buch-Aktion 02/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
27
ZUGRIFFE
4894
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.774
    Blog-Einträge
    5
    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:
    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
    Die Antworten sollen also waagrecht eingetragen werden, wobei sich das senkrecht zu lesende Lösungswort ergibt.

    Stufe 2
    Ab Stufe 2 soll es tatsächlich kreuz und quer gehen: ein sogenanntes „einfaches Kreuzworträtsel“ ist zu generieren:



    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
    smileyml, Turri, Erik und 2 weitere bedanken sich. 
    „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

  2. #2
    Erik Erik ist offline Mitglied Gold
    Registriert seit
    Jul 2008
    Beiträge
    170
    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
     

  3. #3
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  4. #4
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Brokat
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    470
    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.

  5. #5
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    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.
    Hat jemand schon einen Ansatz? Ich habe folgenden:
    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  6. #6
    Avatar von Alex_T
    Alex_T Alex_T ist offline Mitglied Brokat
    Registriert seit
    Jul 2009
    Beiträge
    305
    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)

  7. #7
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    Zitat Zitat von Alex_T
    Wie man das ganze dann aber noch positioneren soll - darüber muss ich mir dann mal noch Gedanken machen .
    Das ist genau mein Problem! Ich weiß, dass es irgendwas mit str_pos sein muss, aber weiter komme ich nicht.

    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  8. #8
    Avatar von Alex_T
    Alex_T Alex_T ist offline Mitglied Brokat
    Registriert seit
    Jul 2009
    Beiträge
    305
    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)

  9. #9
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Platin
    Registriert seit
    Feb 2003
    Beiträge
    730
    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.

  10. #10
    Avatar von Alex_T
    Alex_T Alex_T ist offline Mitglied Brokat
    Registriert seit
    Jul 2009
    Beiträge
    305
    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. #11
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    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
    Angehängte Dateien Angehängte Dateien
     
    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  12. #12
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Platin
    Registriert seit
    Feb 2003
    Beiträge
    730
    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.

  13. #13
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    @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:
    Code :
    1
    2
    3
    4
    
    maus | u ist an Pos. 2
    hilfe   | h ist an Pos. 0
    ----------------------------
                                     2   // 2 - 0 = 2
    Und der Abstand von "hilfe" von Links ist 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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  14. #14
    Avatar von Alex_T
    Alex_T Alex_T ist offline Mitglied Brokat
    Registriert seit
    Jul 2009
    Beiträge
    305
    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)

  15. #15
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    Zitat Zitat von Alex_T Beitrag anzeigen
    will ja nicht unnötig spoilern .

    Ich werde es mal alleine versuchen.
     
    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

Thema nicht erledigt
Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Quer Scroller nur im IE 6
    Von sally66 im Forum CSS
    Antworten: 24
    Letzter Beitrag: 09.03.09, 17:25
  2. Quer scrollen im Dreamweaver
    Von Spelmann im Forum HTML-Editoren
    Antworten: 0
    Letzter Beitrag: 11.02.09, 15:52
  3. Print - Quer
    Von Sarah im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 05.04.04, 17:28
  4. TABELLE (quer)
    Von malex im Forum CSS
    Antworten: 8
    Letzter Beitrag: 22.05.03, 22:32
  5. Quer durch!
    Von Internetfun im Forum Photoshop
    Antworten: 4
    Letzter Beitrag: 31.10.02, 12:32