Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Sudoku Check Rätsel

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
10.12.2006, 13:59 Uhr
Lensflare



Hallo.

ich bin darauf gekommen, als ich ein Programm schreiben wollte, das mir überprüft ob ich ein Sudoku richtig gelöst habe oder nicht.

Wer schafft die Überprüfungsfunktion in C/C++ mit den wenigsten Zeichen?


C++:
#include <stdio.h>

//ein Beispiel für eine Sudokuvariante:
const int m[9][9] =
{
  {6,5,2, 9,3,7, 8,1,4},
  {1,8,7, 5,4,6, 3,2,9},
  {3,4,9, 8,2,1, 5,6,7},

  {5,7,4, 6,9,8, 1,3,2},
  {9,2,1, 7,5,3, 4,8,6},
  {8,3,6, 2,1,4, 9,7,5},

  {7,1,8, 4,6,5, 2,9,3},
  {4,9,3, 1,7,2, 6,5,8},
  {2,6,5, 3,8,9, 7,4,1}
};

bool f() //Überprüfungsfunktion
{
  //hier zählen die Zeichen
}

int main()
{
  if(f())
    printf("Sudoku ist richtig.\n");
  else
    printf("Sudoku ist falsch.\n");

  getchar();
  return 0;
}



Ich wünsche viel Spass
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 10.12.2006 um 14:00 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.12.2006, 14:53 Uhr
Lensflare



Ich habe aktuell 202 Zeichen
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.12.2006, 15:21 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Geht es fest um diese Matrix oder um eine beliebige?
Wenns eine beliebige ist, kann man davon ausgehen das die Matrix zumindest so gefüllt wurde das jede Zahl nur einmal pro Reihe vorkommt oder muss komplett alles geprüft werden?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.12.2006, 15:52 Uhr
Lensflare



Also es soll die konstante globale Matrix m[][] geprüft werden.
Ich habe diese Matrix mit Beispielwerten gefüllt.
Man muss davon ausgehen können dass die Matrix mit beliebigen Werten gefüllt ist.
Die selben Werte können mehrmals pro Reihe / Spalte / 3x3 Feld vorkommen.
Nur wenn in jeder Reihe, Spalte und in den 9 3x3 Feldern jede Zahl nur einmal vorkommt, soll true zurückgegeben werden.

EDIT:
ich habe jetzt genau 200 Zeichen
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 10.12.2006 um 15:54 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.12.2006, 15:04 Uhr
virtual
Sexiest Bit alive
(Operator)


175
Edit: 169
Edit: 168
Edit: 146, auf Rechnern mit 32 Bit oder mehr. Auf typischen 16 Bit rechnern 147
Edit: 145

So jetzt hör ich auf, bis mir jemand "gefährlich" werden kann.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 11.12.2006 um 16:00 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.12.2006, 16:36 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von Lensflare:
Nur wenn in jeder Reihe, Spalte und in den 9 3x3 Feldern jede Zahl nur einmal vorkommt, soll true zurückgegeben werden.


Sind das die normalen Regeln? Ich hab das nur einmal bei ICQ gespielt und da wars glaube ich nur so das eine Zahl nur einmal pro Zeile und pro Reihe vorkommen durfte. Mit den kleinen Feldern war da nichts, oder spielt man das nach beliebigen Regeln?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.12.2006, 16:51 Uhr
virtual
Sexiest Bit alive
(Operator)


http://de.wikipedia.org/wiki/Sudoku
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.12.2006, 17:07 Uhr
Lensflare



Ich kriege das nicht mehr kürzer hin, also poste ich meine Lösung mal rein.

C++:
int a,s=0,g=0;
  for(;s<9;s++)
    for(a=0;a<81;a++)
    {
      if(m[a%9][s]==m[a/9][s])g++;
      if(m[s][a%9]==m[s][a/9])g++;
      if(m[a%9%3+s%3*3][a%9/3+s/3*3]==m[a/9%3+s%3*3][a/9/3+s/3*3])g++;
    }
  if(g>243)return false;
  return true;


200 Zeichen wenn ich richtig gezählt habe.

Bin gespannt auf virtuals 145er Lösung


EDIT:
omg, ich habe gerade was bemerkt:

C++:
int a,s=0,g=0;
  for(;s<9;s++)
    for(a=0;a<81;a++)
    {
      if(m[a%9][s]==m[a/9][s])g++;
      if(m[s][a%9]==m[s][a/9])g++;
      if(m[a%9%3+s%3*3][a%9/3+s/3*3]==m[a/9%3+s%3*3][a/9/3+s/3*3])g++;
    }
  return g>243?false:true;


Das sind dann immerhin 190 Zeichen ^^
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 11.12.2006 um 17:14 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.12.2006, 17:24 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wieso schreibst du nicht 9 anstatt 3*3?
und du kannst 1 bzw 0 anstatt false und true zurückgeben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.12.2006, 17:36 Uhr
Lensflare



das mit 1 und 0 anstatt false und true habe ich schon vermutet aber irgendwie vergessen auszuprobieren, danke

Jetzt habe ich 183 Zeichen.

Aber ich muss 3*3 statt 9 schreiben, weil ich den Effekt ausnutze, dass bei der Integerdivision die Nachkommastelle abgeschnitten wird.
Ausserdem ist doch x/3*3 nicht das selbe wie x/9
Also du müsstest mich fragen wieso ich nicht x statt x/3*3 schreibe, aber die antwort habe ich schon gegeben.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 11.12.2006 um 17:44 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: