Vinnaren i pepparkakshustävlingen!
2009-10-05, 18:54
  #1
Medlem
snousers avatar
Jag letar efter någon trevlig algoritm för att just generera svårlösa Sudokun.
Gjorde lite sökningar, men hittade inget som passade in.

Någon som har nått bra tips?
Citera
2009-10-05, 18:58
  #2
Medlem
isen.stars avatar
Citat:
Ursprungligen postat av snouser
Jag letar efter någon trevlig algoritm för att just generera svårlösa Sudokun.
Gjorde lite sökningar, men hittade inget som passade in.

Någon som har nått bra tips?
Skriv den själv?

Det är väl bara att slumpmässigt låta den generera alla tal där de ska vara. Sen ta bort de som passar. Problemet är väl bara att den fortfarande måste vara möjlig att lösa...
Citera
2009-10-05, 19:01
  #3
Medlem
snousers avatar
Citat:
Ursprungligen postat av isen.star
Skriv den själv?

Det är väl bara att slumpmässigt låta den generera alla tal där de ska vara. Sen ta bort de som passar. Problemet är väl bara att den fortfarande måste vara möjlig att lösa...
Spelplanen blir ju inte speciellt svårlöst för att jag gör på de sättet.
Jag vill ju endast skriva ut ett par tal på spelplanen, men den ändå bara innehålla en lösning.
Citera
2009-10-05, 22:40
  #4
Medlem
Offsures avatar
Jag har för mig att jag har läst att om man ska få en entydig lösning så måste det finnas minst 16 eller 17 siffror utsatta. (Minns inte exakt, men är ganska säker på det ungerfärliga värdet.) Det behövdes dock cirka 20 för att en människa rimligtvis ska kunna lösa den utan att börja gissa siffror och kontrollera om det stämmer.
Citera
2009-10-06, 11:01
  #5
Medlem
Jag vet inte om det här hjälper : http://www.python-forum.org/pythonfo...hp?f=2&t=10932

Men det är en kod till python som du kan använda. Vet däremot inte om den löser svåra sudokus.
Citera
2009-10-06, 21:32
  #6
Medlem
Y0dAs avatar
Citat:
Ursprungligen postat av svenssonsbil
Jag vet inte om det här hjälper : http://www.python-forum.org/pythonfo...hp?f=2&t=10932

Men det är en kod till python som du kan använda. Vet däremot inte om den löser svåra sudokus.
Nu var det iofs så att han var ute efter att generera svåra sudokus, inte lösa dom.
__________________
Senast redigerad av Y0dA 2009-10-06 kl. 21:35.
Citera
2009-10-07, 23:18
  #7
Medlem
Citat:
Ursprungligen postat av Y0dA
Nu var det iofs så att han var ute efter att generera svåra sudokus, inte lösa dom.
Generera en Sudoku och ta bort X tal från denna, kan dock bli problem om du tar bort för många du Sudoku's endast skall ha en möjlig lösning.
Citera
2009-10-12, 11:46
  #8
Medlem
Du vet hur du löser ett soduku, det borde då gå att skriva ett program som "olöser" ett soduku slumpat ner till det att den inte kan längre. Om programmet då skriver ut det "olösta" sodukut så borde det åtminstone vara jävligt svårt att lösa.
Citera
2009-10-12, 14:39
  #9
Avstängd
inkubes avatar
Här finns en massa algoritmer för att lösa sodoku's. Gör dem åt andra hållet så borde du kunna göra en svår sodoku.

http://www.scanraid.com/sudoku.htm
Citera
2009-10-12, 17:59
  #10
Medlem
precis som andra nämnt tror jag att sättet man ska gå tillväga på är att gå baklänges.
ta ett färdigtlöst suduko och ta bort siffra efter siffra och kolla om det genom borttagningen uppkommer ytterligare än lösning. sen är frågan hur effektivt detta blir, att söka igenom allt blir en omöjlighet utan man får nog satsa på att bara ta bort första bästa möjliga samt att när man kommit ner en bit i siffran kör ett sökträd.
Citera
2009-10-12, 18:10
  #11
Avstängd
inkubes avatar
Denna solver http://ajwelch.blogspot.com/2007/08/...n-in-xslt.html
löser vad som i alla fall var världens svåraste sudoku på 350ms. Och det är ett så svårt sodoku att det anses vara olösligt för en människa.

Ifall du har en liknande solver och tar bort slumpmässiga rutor från en slumpad bräda så ser du ifall sodokun är löslig.
Bättre borde väll vara att använda en som använder olika algoritmer istället för bruteforce. Då kan du ju bestämma hur svåra algoritmer som ska krävas för att kunna lösa sudokun. Bara för att en sudoku bara har en möjlig lösning betyder det inte att det är rimligt att någon människa ska klara den.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback