Sudoku bissl mehr als Grundstruktur steht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sudoku bissl mehr als Grundstruktur steht

    Erstmal hallo liebes PhP Ressource Team,

    endeckt habe ich euch durch Home.

    In semtlichen Foren in denen ich bis jetzt war wurde ich Grundlegend mit meiner Frage ignoriert.
    nun probier ichs mal bei euch Ich entwickle gerade ein Php Sudoku wo ich an einigen Punkten nicht weiter komme.
    1. Ich schaff es zwar rauszubekommen welche Zeilen und Spalten falsch sind aber nicht wie ich diese Fehler in meinem Sudoku markiere
    2. hab ich nach einer Eingabe nicht mehr die möglichkeit die Eingabe zu verändern
    3. Sind meine eingaben trotz Konstanten nicht sicher da ich die Konstanten überschreibe

    Ich hoffe ihr könnt mir da helfen Code kommt hier:

    Sry Code zulange ich schick in per Pastebin:
    [PHP] <?php session_start(); ?> <html> <head> <meta http-equiv="Content-Type" conte - Pastebin.com

  • #2
    In semtlichen Foren in denen ich bis jetzt war wurde ich Grundlegend mit meiner Frage ignoriert.
    Das kann ich mir lebhaft vorstellen.

    Auch ich finde den Code ekelig.
    1. diese Konstanten
    2. diese fürchterlichen Variablenbezeichner
    3. die dauernden Wiederholungen

    Vor readonly fehlt jeweils ein Leerzeichen
    Auch heißt es readonly="readonly" wenn mich nicht alles täuscht
    Wir werden alle sterben

    Kommentar


    • #3
      Hallo,

      da der Code mir zu unübersichtlich ist, um selbst nachzusehen, was er macht, gib uns doch bitte mal ein paar Infos, worum es geht: Ist es ein Sudoku-Generator oder ein Sudoku-Solver?

      Was ich schonmal nicht gut finde, ist, dass du alles in eine riesige Datei gepackt hast. Du solltest besser die Logik von der Ausgabe trennen. Ein objektorientierter MVC-Entwurf wäre das sinnvollste.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Also es ist ein simpler Sudoku Solver der mir aus einer Textdatei eine Array hollt die dann in eine Tabelle übergeben wird.

        Dass soll das ganze auf Knopf druck die User eingabe übernehmen und prüfen ob das sudoku richtig ist aber nur dadurch das in keiner Reihe/Spalte etwas doppelt vorkommen darf. Sollte dann etwas falsch sein soll er mir die Reihe/Spalte in ein hell rot machen und da wo der Fehler steckt Möglichst dunkel rot.

        Und wegen der unübersichtlichkeit sry bin erst seit 2 Monaten am Php programmieren

        Kommentar


        • #5
          Also eigentlich auch kein Solver, sondern nur ein Tool, um zu überprüfen, ob es richtig ist – ein Validator.

          Du willst, dass das Tool dir den Fehler hervorhebt, aber es wird dir bei doppeltem Auftreten einer Zahl beide markieren müssen, da es nicht ohne weiteres ermitteln kann, welche von beiden jetzt falsch ist. Dafür würdest du wieder einen Solver benötigen, der aus der gegebenen Ausgangssituation alles automatisch vervollständigen kann. Nur auf diese Weise kann er auch Fehler finden. Wenn du dagegen alles eingibst, was du bisher hast (also ohne die vorgegebenen Zahlen von den selbst eingetragegen unterscheiden zu können), wird er dir immer nur sagen können, dass etwas falsch ist, aber nicht wo.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Es wäre für mich in Ordnung wen er dann zwei falsch makieren würde natürlich wäre es andersherum besser

            Kommentar


            • #7
              Du müsstest die fehlerhaften Stellen vorher ausfindig machen und beim Zusammenbauen der Tabelle an diesen Stellen z. B. ein bestimmtes class-Attribut hinzufügen. Ein weiteres Problem ist, dass du (soweit ich das sehe) die dritte Regel vergessen hast: Jede Zahl darf und muss genau ein Mal in jedem 3×3-Block vorkommen.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Die hab ich bewusst weg gelassen da sie zu einer sudoku berechnung ja nicht nötig ist .

                Fehler sind in dem Code bisslang noch keine eher muss ich eine problemlösung finden

                Momentan mache ich ja leider nur fehlerhafte Spalten/ Zeilen ausfindig und welche Zahl in der Zeile fehlt.

                Ps: Jedes Kästchen hatt bei mir die Atributte i1-i81 hast du das mit class attributen gemeint ?
                Zuletzt geändert von darkii; 27.10.2011, 15:10.

                Kommentar


                • #9
                  Ich hab da grad ne kleine Idee zu meinem Problem das der User es beeinflussen kann

                  for ($i=0 ; $i<= 80 ;$i++) {
                  if ($_SESSION['sudoku'][$i]== " " || "") {
                  unset ( $_SESSION['sudoku'][$i] );
                  }
                  }

                  ich will damit meine Standard Array also die gebenen Werte extrahieren und diese dann mit einer neuen Vergleichen (Eine neue also eine die meine Tabelle ausfüllt) und sollte bei den gegebenen Keys was anders sein solls die dann mit der SESSION austauschen so würde ich verhindern das ein User das ganze manipuliert nur ist die Frage kann ich das umsetzten ?


                  Sry ich drücke mich bei sowas sehr unverständlich aus
                  Zuletzt geändert von darkii; 27.10.2011, 16:52.

                  Kommentar


                  • #10
                    Zitat von darkii Beitrag anzeigen
                    for ($i=0 ; $i<= 80 ;$i++) {
                    if ($_SESSION['sudoku'][$i]== " " || "") {
                    unset ( $_SESSION['sudoku'][$i] );
                    }
                    }
                    Bitte Code immer in den entsprechenden Code-Tags posten (siehe Signatur). Der Teil hinter dem || ergibt immer false, meinst du vielleicht
                    PHP-Code:
                    $_SESSION['sudoku'][$i]== " " || $_SESSION['sudoku'][$i]== "" 
                    Oder vielleicht sogar
                    PHP-Code:
                    trim($_SESSION['sudoku'][$i]) == "" 
                    Was soll uns dieser Codeschnipsel sonst noch sagen? Das sieht aus, wie ein bisschen Session-Cleanup, aber wofür ist das im Kontext deines Problems gut?

                    Zitat von darkii Beitrag anzeigen
                    Sry ich drücke mich bei sowas sehr unverständlich aus
                    Das glaube ich irgendwie auch langsam
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Für den Kontext eher weniger aber fürs Verständniss und für die Verhinderung das User das Sudoku manipulieren.

                      Fürs Verständniss:

                      $Sudoku ist meine zufällige Array die ich aus einer Textdatei ziehe
                      $_Session["sudoku"] ist meiner Array die bei dem Klick auf den Ok Button wieder mitgenommen wird und dann in meine Tabelle eingetragen wird
                      $_POST ist quasi alles was in der Tabelle steht und vom User eingegeben wird sie wird dann in die Session geschrieben.


                      Nun würde ja meine $_POST die Session überschreiben und inteligente User (soll vorkommen) könnten Firebug/Dragonfly nutzen und die gegebenen Zahlen einfach ändern. Und deshalb mocht ich meine $-Session mit keys von leeren Einträgen aus der Array befreien um diese Werte dann mit der $_POST vergleichen um dadurch geänderte Werte wieder zu ändern


                      Klingt komplex ist aber so ^^ den nötigen Befehl dazu habe ich noch nicht gefunden ^^


                      Und zur Problemlösung an sich trägt es auch mal gar nichts bei

                      Kommentar


                      • #12
                        Zitat von darkii Beitrag anzeigen
                        ...
                        In semtlichen Foren in denen ich bis jetzt war wurde ich Grundlegend mit meiner Frage ignoriert...
                        Ausser bei SelfPHP
                        Wozu brauchen wir Kraftwerke, wenn der Strom aus der Steckdose kommt.

                        Kommentar


                        • #13
                          Aber da auch keine Lösung oder Hilfe ^^ Hier nochjemand etwas beizusteuern das mir helfen könnte ?

                          Kommentar


                          • #14
                            Klingt komplex ist aber so ^^
                            Ich halte den Ansatz für grundsätzlich falsch.

                            Schaue dir den Datenfluss an.

                            Es gibt 2 Quellen:
                            1. Halb ausgefüllte Sudokus in der Datei
                            2. Die User Eingaben

                            Den Index auf das gerade verwendete Sudoku lagerst du in Session. Es gibt für den User keine Möglichkeit dieses zu manipulieren.

                            Vom User kommen [COLOR="red"]NUR[/COLOR] die Daten, welche er eingibt. Daran kann er soviel manipulieren, wie er will. Darf er ja, soll er ja auch sogar.
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              Das Problem ist blos immoment überschreibt die Eingabe die Daten die eingetragen werden ich muss eben nun schauen das ich das ganze teile...

                              Aber wichtiger wäre mir überhaupt das er die Fehler berechnen kann.

                              Kommentar

                              Lädt...
                              X