Datum: 2010-08-11
Sådär, då har jag lagt ner jobbandet för ikväll. Känns skönt att koppla av. Jobbet med min python-sudoku går framåt. Sakta men säkert. Hinner jag inte klart innan deadlinen har jag en fallbacklösning att skicka in istället, men jag kommer i alla fall att göra klar sudokun längre fram. Både i PHP- och Python-upplaga.
Inämningsuppgiften är i alla fall att skapa ett interaktivt spel. Har funderat mycket på det under sommaren, men bestämde mig till sist för att det skulle bli ett sudoku. Tanken var från början att jag skulle bygga en slags 3D-version av sudoku. Det vill säga någonting i stil med rubiks kub, men där man istället har sex sidor med sudokupussel att lösa.
Läraren varnade tidigt för att inte lägga ambitionsnivån för högt. Och det var nog tur att jag lyssnade, för det känns inte som om det är direkt genomförbart. Problemet är nämligen att det finns en slags "magi" i sudoku. Ja, egentligen är det fråga om matematik, men för en person som avskyr matte så mycket som jag känns det som hokuspokus ibland.
Du vet nog hur ett sudokubräde ser ut. Man har en "spelplan" med nio rader och nio kolumner, som i sin tur är indelad i nio grupper (3x3). För att klara en sudoku ska man ange en unik kombination av 1-9 i varje rad, kolumn och grupp. En del av rutorna är förifyllda med korrekta tal/siffror.
I den här uppdelningen ligger lösningen till sudokun. Om du har spelat sudoku på dator utgår du kanske från att det finns ett "korrekt" värde för varje ruta man själv ska fylla i? Så är det faktiskt inte, utan kontrollen görs genom olika uträkningar. För att få ut en sudoku måste följande uppfyllas:
- Talen på varje rad, i varje grupp och kolumn ska när de adderas ge summan 45. (1+2+3+4+5+6+7+8+9 = 45) Dessutom måste de vara unika och inom spannet 1-9.
Det gör att det rent konceptuellt sett är ganska lätt att konstruera en sudoku.
Konceptuellt sett, ja. Jag satt och slet i ett helt dygn med "prototypen", dvs php-versionen, och den är fortfarande inte mer än halvfärdig. En av svårigheterna ligger nämligen i genereringen av talen så att man inte får dubletter i grupperna, raderna och kolumnerna redan från början.
På utvecklarspråk innebär det att man måste arbeta med objekt eller arrayer som dels håller reda på vilka tal som finns tillgängliga när spelplanen ska slumpas fram. Det innebär att när varje enskild ruta får sitt slumpmässiga värde måste just det värdet spärras så att det inte kan förekomma igen på/i samma rad/kolumn/grupp.
Konceptuellt - eller teoretiskt - sett är det en baggis. Jag har byggt upp php-versionen så att talet SKA skrivas till en array för varje rad, kolumn och grupp. Men det verkar inte fungera just nu. Så där håller jag på och felsöker. Samtidigt jobbar jag med python-versionen, som är ungefär lika knölig att få till.
Det var när jag modellerade fram det här systemet jag kom fram till att det knappast kommer att funka med en kub-version av sudoku. Inte för att det inte går att lösa, utan för att det i praktiken bara skulle innebära att man spelar på sex separata bräden utan att de egentligen har någon koppling sinsemellan. En sexsidig variant skulle nämligen avvika från det "magiska" talet 9, och jag har svårt att se hur man skulle kunna binda samman dem snyggt. Om det däremot gick att få till en niosidig kub kanske... Öh, antagligen inte, eller hur?
Nåja, arbetet fortsätter. Funderar bara på hur jag ska få in multimediadelen i det hela. Action-sudoku? Hur får man in ljud som inte känns helt tagna ur luften..? Nåja, jag kommer nog på någonting. Däremot ska jag kanske slänga in ett litet "pusselmoment" i python-versionen, fast kanske inte i den som ska lämnas in.
Tanken är att brädet/spelplanen ska ha en bakgrundsbild som sedan delas upp i 81 "pusselbitar". Dessa bitar ska sedan förses med en siffra (det "rätta" talet), och varje pusselbit måste placeras i rätt ruta så att dels bilden blir komplett, och dels uträkningen går ut. Eller blir det bara ett pussel av det hela då?
Får tänka på det när jag ligger sömnlös inatt och oroar mig för deadlinen.
Not In My BackYard - helt rätt!
2012-01-27
Bra? För vem?
2012-01-20
Antidemokratisk faktion
2012-01-12
Sluss till en sång
2011-12-20
Som ett farväl?
2011-12-18
Vad har du i handväskan, Bea!
2011-12-16
This is truly a day of days
2011-12-12
Mitt förakt går inte att klä i ord
2011-12-02
DN:s ansvar och Ekens kis
2011-12-04
Med båda fötterna i klaveret: Om föräldraledighet och KulturSlussen
2011-11-26
Något är ruttet i Eken
2011-11-16
ozonenu: Insåg just vad jag skulle vilja ha - en subversionserver att köra i android-luren. Fast målgruppen känns väldigt snäv... ;-)
ozonenu: LG Intelligent Update försökte uppdatera sig själv. Fil för fil ersattes. Tills internetanslutningen dök. Gissa hur bra det funkar nu... ;-)
ozonenu: Filosoferar en del kring skillnaden mellan att vara social och socialt kompetent. Begreppen används gärna synonymt: http://t.co/YWujOLVN
ozonenu: Sitter och skriver gigantiska SQL-frågor, och tycker faktiskt att det är kul. Tre UNIONs som alla har JOINar. Måste börja bli sjuk... #geek
ozonenu: Där slog kreativiteten till. Shit med idéer jag fick helt plötsligt. Allt som behövdes var att höra om någon annans problem med någonting.