webForumDet fria alternativet

Sudoku generator

Webbutvecklingur Webbutveckling - Övrigt

21 svar · 1 237 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Frågan#1

Jag är rätt sugen på att göra en Sudoku "sida" som generarer 9x9 rutor (tror alla vet vad jag menar) men hur bör man tänka i programmering syfte det är ju inte direkt svårt att göra en 9x9 ruta i exempelvis ASP men den måste göra kontroller med. Är detta något "svårt" i asp eller javascript?

Medlem sedan aug. 20023 005 inlägg
#2

Summan av siffrorna i varje rad och kolumn skall vara 45. Det kanske du kan utgå efter.

Medlem sedan juni 20019 519 inlägg
#3

hmm.. kan hjälpa men tänk om man vill skapa den där 36x36 sudoku som var på Café forumet (eller liknande)... finns det någon alogritm för det?

Medlem sedan juni 20014 290 inlägg
#4

Har finns ett program för att generera: http://www.lemo.dk/sudoku/

Medlem sedan aug. 20039 342 inlägg
#5

Du kan även lösa ett med programmet genom att skriva in sudokut i t ex notepad, t ex som följer, sedan välja Edit/paste, och till sist solve.

 . . . | 5 . 7 | . . . 
 6 . . | . 4 . | . . 8 
 . 1 3 | . . . | 6 7 . 
-------+-------+------ 
 . . 6 | . 2 . | 4 . . 
 . 9 . | 4 . 1 | . 2 . 
 . . 4 | . 7 . | 9 . . 
-------+-------+------ 
 . 3 1 | . . . | 7 4 . 
 7 . . | . 9 . | . . 1 
 . . . | 7 . 2 | . . .
Medlem sedan juni 200032 969 inlägg
#6

Jag har gett mig på att bygga en sudoku-generator i ASP, och insåg att det är grymt svårt. Jag har så att säga tagit en paus i byggandet, eftersom jag började tycka det var jobbigt med alla oändliga loopar som jag skapade. ;)

Men nu har vi ju källkoden, så då är det bara att forska! :)

Medlem sedan juni 20006 032 inlägg
#7

hmm, det var ju en bra ide på program som man kan göra

Medlem sedan juli 200412 913 inlägg
#8

Pedda skrev:

hmm, det var ju en bra ide på program som man kan göra

Det samma... hade jag bara Delphi installerat skulle jag prova, iaf ett Sudoku-verktyg kan man ju göra, en lösare är överkurs...

Medlem sedan sep. 2005849 inlägg
#9

Äh, lösare?? Det ska man ju göra själv!! :P

Medlem sedan juni 20019 519 inlägg
#10

@nders skrev:

Jag har gett mig på att bygga en sudoku-generator i ASP, och insåg att det är grymt svårt. Jag har så att säga tagit en paus i byggandet, eftersom jag började tycka det var jobbigt med alla oändliga loopar som jag skapade. ;)

Men nu har vi ju källkoden, så då är det bara att forska! :)

oh! give us it later @nders :e

Medlem sedan maj 2004693 inlägg
#11

En generator är inte så svårt jämfört med en "lösare".

Här kommer en "dum" generator (går på det som ploppar upp just nu, så jar har INTE tänkt igenom detta):

*Passar på att göra reklam för php*

Först har vi en loop som loopar igenom alla siffror (1-9) (variabeln får vara heta $siffraJustNu). <-- Loopen ger oss information om vilken siffra du ligger på

Du har ju 9 kolumner. Skapa då en vektor där elementen symboliserar varje rad i en sådan (en ny sådan vektor skapas för varje loopning). Vektor ser från början ut såhär:

$vektor = arra(array(1, 2, 3),array( 4, 5, 6), array(7, 8, 9));

Du behöver en till vektor (denna ska stoppa oss från att posta flera identiska nummer i samma ruta).

$vektor2 = array(1,2,3)

Nu kör du en shuffle (http://se.php.net/manual/en/function.shuffle.php) på vektorerna.

Sedan har du en till loop som även den loopar från 1-9 (variabeln får heta $kolumnJustNu). <-- Symboliserar varje kolumn.
Nu skriver du ut siffran $siffraJustNu på rad

$vektor[$kolumnJustNu%3][$kolumnJustNu]

i kolumn $kolumnJustNu.

När den loopat klart (81 iterationer) så har du en sudoko. Rensa sedan bort några rutor mha slumpen och voila, du är klar.

En fråga: Går sudoku's att lösa utan att gissa? Kräver vissa att man gissar?
Om man ibland måste gissa (om inget alternativ finns) så är denna generator inte mycket dummare än någon annan.

pseudokod

loopa från 1 - 9 : siffra {
    vektor = 2 dim. vektor [[1,2,3][4,5,6][7,8,9]]
    vektor2 = [1,2,3]
    blanda om vektorerna
    loopa från 1 - 9 : kol {
         skriv ut $siffra på rad $vektor[vektor2[$kol%3]][$kol] i kolumn $kol
    end loop
end loop

Eller möjligtvis

//Hälften av siffrorna skall visas

loopa från 1 - 9 : siffra {
    visa = vektor [1,1, ... 1,0,...,1] // 81 element, 81/2 1or, resten 0or
    int raknare =  0;
    vektor = 2 dim. vektor [[1,2,3][4,5,6][7,8,9]]
    vektor2 = [1,2,3]
    blanda om vektorerna (även vektorn visa)
    loopa från 1 - 9 : kol {
         if (visa[$raknare] == 1)
              skriv ut $siffra på rad $vektor[vektor2[$kol%3]][$kol] i kolumn $kol
         end if
         raknare++;
    end loop
end loop
Medlem sedan dec. 19996 721 inlägg
Medlem sedan feb. 20001 050 inlägg
#13

kobranturre: Jag tror inte att din idé är tillräcklig. Genom att bara "blanda om" siffrorna och plocka bort ett antal av dem så kan du inte vara säker på att det bara finns en lösning till din Sudoku. (Finns det fler lösningar så är det ingen Sudoku!) För att konstruera en Sudoku så måste du alltså ha en lösare, om jag förstått problemet rätt. Det finns, vad jag vet, inget "bättre" sätt att försäkra sig om att lösningen är unik än att lösa "pusslet".

emission: Cool! Hela lösaren är ju skriven i Javascript =)

Min favorit är annars Java-versionen på http://sudoku.sourceforge.net Där finns också en länk till en lösare i Excel http://www.di-mgt.com.au/sudoku.html

Denna programmerad i Perl ser också fint ut - bara tre rader kod! ;)
http://www.ecclestoad.co.uk/blog/2005/06/02/sudoku_solver_in_three_lines_explained.html

Medlem sedan juli 200412 913 inlägg
Medlem sedan mars 2004662 inlägg
#15

emission skrev:

http://www.sudokusolver.co.uk/

Om man väljer "Clear the start grid" och sedan "Solve it!", då går det ordentligt sakta. Scriptet går väl runt runt

Medlem sedan juni 20014 290 inlägg
#16

kobranturre: har du med att en siffra endast får finnas en gång per 3x3 ruta också?

Alltså:

Siffran får bara finnas en gång per kolumn och rad och 3x3 ruta.

Medlem sedan juli 200412 913 inlägg
#17

Har ett Sudoku här som jag pulade med lite...

Medlem sedan juli 200412 913 inlägg
#18

Sudokai Sudoku Program

Hallå där! Kunde inte låta bli att göra ett sånt dära verktyg. Nu kan man bara lösa Sudoku i det, men det är tänkt att det ska komma följande saker i ordningen som nämns också.

  1. Bygga egna (nu måste man editera save-filer)
  2. Lösa Sudoku
  3. Generera Sudoku

Vad tycks?! Det kanske inte ens funkar på någon annan dator än min :)

Medlem sedan aug. 20039 342 inlägg
#19

Rätt så meningslöst... Jag tycker åtminstone det borde finnas en funktion som kollar om det är rätt ifyllt(En siffra av vardera i varje rad,kolumn,ruta), även om det bara är en testversion.

Medlem sedan juli 200412 913 inlägg
#20

Meningslöst nu kanske. Men det blir bättre så småningom ju. Har funderat på funktionen du nämner, men det är ju lite handikappfiness ju, när man sitter och fyller i på papper har man ju inte sådana möjligheter och det borde inte finnas bara för man kör på dator heller, lite måste man ju tänka själv :)

136 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)