<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sudoku Programm ist fertig]]></title><description><![CDATA[<p>Wie Versprochen setze ich meinen Quellcode ins Netz vielleicht hat einer ja lust da mal durchzusteigen wenn nicht und ihr das einfach so mit ins Programm implementieren wollt dann braucht ihr die paar Zeilen, die gleich folgen.</p>
<pre><code class="language-cpp">//- In Form1.cpp leitet man das so ein ganz oben wenn möglich
#include &quot;algo.h&quot;
//- Die Class muss bereit gestellt werden
sudokux sudo_algo;

//- Sudoku Array erstellen;
int sudoku[9][9];
int type = 1;     //- Bestimmt den Schwierigkeitsgrad 1=leicht, 2=normal und 3=schwer
sudo_algo.Create_SudokuField_Numbers(sudoku, type);

//- Sudoku Array lösen
int sudoku_finish[9][9];
... //- Das Array wird hier mit Zahlen gefüllt die gegeben sind falls keine Zahl da ist wird eine Null reingeschrieben.
if(sudo_algo.Finish_SudokuField_Numbers(sudoku_finish))
  {
   ... //- Das ist eine bool Funktion und gibt ein true or false zurück. True wenn das Rätsel gelöst wurde beim durchlauf, false 
       //- wenn sich noch keine Lösung eingestellt hat. Dann sollte man das Programm solange durchlaufen lassen bis eine Lösung gefunden wurde.
  }
</code></pre>
<p>Die Class findet ihr hier: <a href="http://eyewatch.selfip.net/down/algo.h" rel="nofollow">http://eyewatch.selfip.net/down/algo.h</a></p>
<p>Habt viel Spaß damit</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160572/sudoku-programm-ist-fertig</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 16:54:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160572.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Sep 2006 05:31:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 05:31:00 GMT]]></title><description><![CDATA[<p>Wie Versprochen setze ich meinen Quellcode ins Netz vielleicht hat einer ja lust da mal durchzusteigen wenn nicht und ihr das einfach so mit ins Programm implementieren wollt dann braucht ihr die paar Zeilen, die gleich folgen.</p>
<pre><code class="language-cpp">//- In Form1.cpp leitet man das so ein ganz oben wenn möglich
#include &quot;algo.h&quot;
//- Die Class muss bereit gestellt werden
sudokux sudo_algo;

//- Sudoku Array erstellen;
int sudoku[9][9];
int type = 1;     //- Bestimmt den Schwierigkeitsgrad 1=leicht, 2=normal und 3=schwer
sudo_algo.Create_SudokuField_Numbers(sudoku, type);

//- Sudoku Array lösen
int sudoku_finish[9][9];
... //- Das Array wird hier mit Zahlen gefüllt die gegeben sind falls keine Zahl da ist wird eine Null reingeschrieben.
if(sudo_algo.Finish_SudokuField_Numbers(sudoku_finish))
  {
   ... //- Das ist eine bool Funktion und gibt ein true or false zurück. True wenn das Rätsel gelöst wurde beim durchlauf, false 
       //- wenn sich noch keine Lösung eingestellt hat. Dann sollte man das Programm solange durchlaufen lassen bis eine Lösung gefunden wurde.
  }
</code></pre>
<p>Die Class findet ihr hier: <a href="http://eyewatch.selfip.net/down/algo.h" rel="nofollow">http://eyewatch.selfip.net/down/algo.h</a></p>
<p>Habt viel Spaß damit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145202</guid><dc:creator><![CDATA[Denfius]]></dc:creator><pubDate>Wed, 27 Sep 2006 05:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 06:53:04 GMT]]></title><description><![CDATA[<p>warum heißt lösen finish und nicht solve<br />
zu den gotos sag ich mal nichts</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145223</guid><dc:creator><![CDATA[golden_jubilee]]></dc:creator><pubDate>Wed, 27 Sep 2006 06:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 11:55:11 GMT]]></title><description><![CDATA[<p>kann ich auch noch umbenennen ist ir wurst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> naja man kann doch mal mit goto arbeiten weiß nicht ist doch lustig mal ein wenig spaghetti-code... na gut bin eh noch ein wenig am pfeilen da fällt das goto auch noch weg <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145355</guid><dc:creator><![CDATA[Denfius]]></dc:creator><pubDate>Wed, 27 Sep 2006 11:55:11 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 11:58:42 GMT]]></title><description><![CDATA[<p>viel zu viele magic numbers</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145360</guid><dc:creator><![CDATA[magicc]]></dc:creator><pubDate>Wed, 27 Sep 2006 11:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 12:49:37 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8496">@Denfius</a>: Findest Du nicht, dass Du da'n bischen viel Code zum Lösen des Sudokus brauchst?</p>
<p>Wie lange braucht Dein Algorithmus für ein durchschnittliches Sudoku? ...zum Beispiel für das da:</p>
<p>003006040<br />
100950760<br />
006100000<br />
390000400<br />
010000020<br />
008000097<br />
000008900<br />
045039008<br />
020700500</p>
<p>(0 steht für ein leeres Feld.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145394</guid><dc:creator><![CDATA[Gregor]]></dc:creator><pubDate>Wed, 27 Sep 2006 12:49:37 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 17:40:01 GMT]]></title><description><![CDATA[<p>also ich habe es mal durchlaufen lassen und er braucht nicht mal ne sec...<br />
Und messen will ich das nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Jo ist ziemlich viel Code aber den brauch ich wenn ich mehrere Arten von Sudokus lösen will <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Hmm haste mal nen Code der kleiner ist? würde den zugerne mal sehen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145601</guid><dc:creator><![CDATA[Denfius]]></dc:creator><pubDate>Wed, 27 Sep 2006 17:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 17:45:56 GMT]]></title><description><![CDATA[<p>Denfius schrieb:</p>
<blockquote>
<p>also ich habe es mal durchlaufen lassen und er braucht nicht mal ne sec...<br />
Und messen will ich das nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Jo ist ziemlich viel Code aber den brauch ich wenn ich mehrere Arten von Sudokus lösen will <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Hmm haste mal nen Code der kleiner ist? würde den zugerne mal sehen</p>
</blockquote>
<p>Welche Arten von Sudokus denn noch? Meinst Du so 4*4-Sudokus und so?</p>
<p>...mein Code ist zugegebenermaßen nur auf das Lösen von 3*3-Sudokus ausgelegt. Dürfte aber nicht sooo schwer sein, den entsprechend flexibler zu machen. ...kannst Dir den ja mal angucken. Das Programm erwartet als Parameter den Namen einer Textdatei, in der ein Sudoku wie das da oben enthalten ist.</p>
<pre><code class="language-java">import java.io.*;

public class SudokuSolver
{
   public static void main(String[] args)
   {
      if(args.length != 1)
      {
         System.out.println(&quot;Wrong number of parameters.&quot;);
         System.exit(1);
      }
      int[][] sudoku = null;
      try
      {
         sudoku = loadSudoku(args[0]);
      }
      catch(IOException e)
      {
         System.out.println(e);
      }
      if (sudoku == null)
      {
         System.out.println(&quot;Could not load Sudoku!&quot;);
         System.exit(1);
      }
      System.out.println(&quot;Eingelesenes Sudoku:&quot;);
      System.out.println();
      printSudoku(sudoku);
      System.out.println();
      long time = System.currentTimeMillis();
      int[][] outSudoku = solveSudoku(sudoku);
      time = System.currentTimeMillis() - time;
      System.out.println(&quot;Gelöstes Sudoku:&quot;);
      System.out.println();
      if (sudoku == null) System.out.println(&quot;Sudoku konnte nicht gelöst werden!&quot;);
      else printSudoku(outSudoku);
      System.out.println();
      System.out.println(&quot;Benötigte Zeit in (ms):&quot;);
      System.out.println(time);
   }

   public static int[][] loadSudoku(String filename) throws IOException
   {
      String[] lines = new String[9];
      BufferedReader reader = new BufferedReader(new FileReader(filename));
      for (int i = 0 ; i &lt; 9 ; ++i)
      {
         if(reader.ready())
         {
            lines[i] = reader.readLine();
            if(lines[i].length() != 9) return null;
         }
         else return null;
      }
      int[][] sudoku = new int[9][9];
      for(int y = 0 ; y &lt; 9 ; ++y)
      {
         for (int x = 0 ; x &lt; 9 ; ++x)
         {
            final char currentChar = lines[y].charAt(x);
            if ((currentChar &lt;= '9') &amp;&amp; (currentChar &gt;= '1'))
            {
               sudoku[x][y] = 1 + (int)(currentChar - '1');
            }
         }
      }
      return sudoku;
   }

   public static void printSudoku(int[][] sudoku)
   {
      for(int y = 0 ; y &lt; 9 ; ++y)
      {
         if (y % 3 == 0) 
         {
            System.out.println(&quot; XXXXXXXXXXXXXXXXXXX&quot;);
         }
         for (int x = 0 ; x &lt; 9 ; ++x)
         {
            if (x % 3 == 0) System.out.print(&quot; X &quot;);
            if (sudoku[x][y] == 0) System.out.print(&quot;_&quot;);
            else System.out.print(sudoku[x][y]);
         }
         System.out.println(&quot; X&quot;);
      }
      System.out.println(&quot; XXXXXXXXXXXXXXXXXXX&quot;);
   }

   public static int[][] solveSudoku(int[][] sudoku)
   {
      boolean[][][] possibleSudoku = new boolean[9][9][];
      for (int x = 0 ; x &lt; 9 ; ++x)
      {
         for(int y = 0 ; y &lt; 9 ; ++y)
         {
            if (sudoku[x][y] != 0)
            {
               possibleSudoku[x][y] = null;
               continue;
            }
            possibleSudoku[x][y] = getPossibleNumbers(sudoku, x, y);
         }
      }
      int minCount = 11;
      int minX = -1;
      int minY = -1;
      for (int x = 0 ; x &lt; 9 ; ++x)
      {
         for(int y = 0 ; y &lt; 9 ; ++y)
         {
            if (possibleSudoku[x][y] == null) continue;
            int freeNumbers = getFreeNumberCount(possibleSudoku[x][y]);
            if (freeNumbers == 0) return null;
            if (freeNumbers &lt; minCount)
            {
               minCount = freeNumbers;
               minX = x;
               minY = y;
            }
         }
      }
      if (minX == -1) return sudoku;
      //System.out.println(&quot;minCount : &quot; + minCount);
      for (int i = 1 ; i &lt; 10 ; ++i)
      {
         if (!possibleSudoku[minX][minY][i]) continue;
         sudoku[minX][minY] = i;
         int[][] outSudoku = solveSudoku(sudoku);
         if(outSudoku != null) return outSudoku;
         sudoku[minX][minY] = 0;
      }
      return null;
   }

   public static int getFreeNumberCount (boolean[] possibleNumbers)
   {
      int count = 0;
      for(int i = 1 ; i &lt; possibleNumbers.length ; ++i)
      {
         if(possibleNumbers[i]) ++count;
      }
      return count;
   }

   public static boolean[] getPossibleNumbers(int[][] sudoku, int x, int y)
   {
      if (sudoku[x][y] != 0) return null;
      boolean[] possibleNumbers = new boolean[10];
      for (int i = 0 ; i &lt; 10 ; ++i)
      {
         possibleNumbers[i] = true;
      }
      for (int i = 0 ; i &lt; 9 ; ++i)
      {
         possibleNumbers[sudoku[x][i&rsqb;&rsqb; = false;
         possibleNumbers[sudoku[i][y&rsqb;&rsqb; = false;
      }
      int boxX = x / 3;
      int boxY = y / 3;
      for(int i = 0 ; i &lt; 3 ; ++i)
      {
         for(int j = 0 ; j &lt; 3 ; ++j)
         {
            possibleNumbers[sudoku[3*boxX+i][3*boxY+j&rsqb;&rsqb; = false;
         }
      }
      return possibleNumbers;
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1145610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145610</guid><dc:creator><![CDATA[Gregor]]></dc:creator><pubDate>Wed, 27 Sep 2006 17:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Wed, 27 Sep 2006 22:45:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Hatte noch ein paar Links zum Thema in meinen Bookmarks, dachte mir, dass Euch davon uU auch manches interessieren könnte:</p>
<ul>
<li><a href="http://www.frank-buss.de/lisp/sudoku.html" rel="nofollow">relativ simpler CommonLisp-Sudoku-Solver</a>, &lt;60 LOC, braucht für Gregors Beispiel-Sudoku auf meinem Athlon XP 2400+ unter 0.05 Sekunden.</li>
<li><a href="http://www.jalat.com/blogs/lisp?id=4" rel="nofollow">nochmal CommonLisp, etwas ausführlicher</a></li>
<li><a href="http://twoday.tuwien.ac.at/static/Eleazar/files/sudoku.prolog" rel="nofollow">Prolog-Progrämmchen eines Kollegen</a> (clever und kurz)</li>
<li><a href="http://twoday.tuwien.ac.at/static/Eleazar/files/sudoku2.prolog" rel="nofollow">verbessertes Prolog-Progrämmchen eines Kollegen</a> (sehr clever, nicht ganz so kurz)</li>
<li>Oh, und wenn Ihr herausfinden wollt, wer den längsten<sup>W</sup>Wdas kürzeste hat, dann schaut Euch mal <a href="http://markbyers.com/moinmoin/moin.cgi/ShortestSudokuSolver" rel="nofollow">das</a> und <a href="http://www.ecclestoad.co.uk/blog/2005/06/02/sudoku_solver_in_three_lines_explained.html" rel="nofollow">das hier</a> an. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></li>
</ul>
<p>Vielleicht ist ja was für Euch dabei. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145720</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Wed, 27 Sep 2006 22:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Thu, 28 Sep 2006 10:47:49 GMT]]></title><description><![CDATA[<p>Gregor schrieb:</p>
<blockquote>
<p>Mein Soduko ist viel länger als deiner!11</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1145838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145838</guid><dc:creator><![CDATA[übersetzer]]></dc:creator><pubDate>Thu, 28 Sep 2006 10:47:49 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku Programm ist fertig on Thu, 28 Sep 2006 13:40:12 GMT]]></title><description><![CDATA[<p>übersetzer schrieb:</p>
<blockquote>
<p>Gregor schrieb:</p>
<blockquote>
<p>Mein Soduko ist viel länger als deiner!11</p>
</blockquote>
</blockquote>
<p>Nene... Du irrst Dich. Mein aktuelles Maß für virtuelle Längenvergleiche ist CP/q bei JBB. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145959</guid><dc:creator><![CDATA[Gregor]]></dc:creator><pubDate>Thu, 28 Sep 2006 13:40:12 GMT</pubDate></item></channel></rss>