Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Bomberus

Tripel-As

Dabei seit: 12.06.2010

Beiträge: 167

 

1 Zum Seitenanfang

Dienstag, 13. Dezember 2011, 18:13

Sudoku Rätsel

Ich habe mich mal an ein Sodoku- Rätsel gewagt.
Mein Erfolg hält sich jedoch in Grenzen. Ich habe es geschafft, dass er in den 9x9 Zellen alle 3 Regeln (keine gleichen in Kasten, Reihe, Spalte) auslesen kann.
Jedoch generiert er sich falsch, weswegen leere Kästchen entstehen.

Zurzeit mache ich das so, dass er jede Reihe durchgeht, eine Zufallszahl aus 9 wählt, und prüft ob diese in der Reihe, Spalte bzw. Kasten schon vorkommt.
Kann mir jemand eventuell einen kleinen Denkanstoß geben, egal welche Programmiersprache, mir geht es nur ums Prinzip, wie ich vorgehen muss, bis jetzt sieht Quelltext(Delphi) so aus:

Quellcode

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
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,a,r:integer;
z: string;
gefunden: boolean;
begin
  randomize;
  for i:= 0 to 8 do
  begin
    for j:= 0 to 8 do
    begin
      z:= zahlen;
      gefunden:= false;
      while (length(z) > 0) and (gefunden = false) do
      begin
        r:= random(length(z))+1;
        a:= StrToInt(z[r]);
        Delete(z,r,1);
        if (check_horizontal(Point(j,i),a)) and
           (check_vertikal(Point(j,i),a)) and
           (check_kasten(Point(j,i),a)) then
        begin
          Sudoku.Cells[j,i]:= IntToStr(a);
          gefunden:= true;
        end;
      end;
    end;
  end;
end;
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

2 Zum Seitenanfang

Dienstag, 13. Dezember 2011, 20:43

naja, damit es für den Start nicht zu kompliziert wird würde ich ein komplettes Spielfeld ausrechnen lassen aber dann nur eine bestimmte Anzahl von Zahlen anzeigen lassen. -> so weis man immer das das Spiel lösbar ist, zur Not mit ausprobieren.

Aber weil das Spiel bestimmten Regeln unterliegt könnte man bestimmt auch ausrechnen wo noch welche zahl hin passt und ob sich aus einer bestimmten Konstellation mehrere Lösungen ergeben - da hat bestimmt auch schon mal jemand was zu geschrieben. Edit: ich meine keinen Quellcode, sondern eher die theoretischen Grundlagen dazu.

Gruß
Ego

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ego« (13. Dezember 2011, 20:43)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

3 Zum Seitenanfang

Mittwoch, 14. Dezember 2011, 15:15

gnome-sudoku führt eine liste vorbereiter sudokus... so einfach scheint das nicht zu sein...
 

Bomberus

Tripel-As

Dabei seit: 12.06.2010

Beiträge: 167

 

4 Zum Seitenanfang

Mittwoch, 14. Dezember 2011, 15:49

Ja das merke ich nun auch, also ich möchte keine vorgefertigten, sondern selber einzigartige Sodokus generieren
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

5 Zum Seitenanfang

Mittwoch, 14. Dezember 2011, 21:09

hier ist ein Weg wie man das Problem mit dem Computer angeht.
 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

6 Zum Seitenanfang

Donnerstag, 15. Dezember 2011, 13:48

Bezeichnen wir die Gruppenfelder mit
a b c
d e f
g h i

Dann können wir die Gruppenfeder a,e,i oder c,e,g völlig zufällig erstellen weil diese sich diagonal nicht gegenseitig behindern.
Die Gruppnfelder dghbcf oder abdfhi sind dann vom pc zu ergänzen. Damit haben wir ein gelöstes Sudoku.

Jetzt nochc ein paar Einzelfelder löschen und das Rätsel ist vorbereitet.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nocturne« (15. Dezember 2011, 13:48)

 

Ähnliche Themen