Der var en gut der forskede i det i flere år og skrev en algoritme til det, som han så sidenhen har tjent fedt på.
min tilgang til ville være først at skrive en løsnings algoritme, det er ikke så svært, backtracking er et godt bud, og med lidt simpel modifikation kan du også få algoritmen til at fortælle om der er tale om en entydig løsning.
generering af opaver er dog langt fra trivielt, og det bliver ikke nemmere hvis man ønsker en automatisk vurdering af sværhedsgraden.
en mulighed, som jeg dog ikke har prøvet og derfor ikke kender effektiviteten af er:
Først skal vi have en vurdering af hvor svær en opgave er:
Vi lister derfor alle kandidater for alle tomme felter
et felt med kun 1 kandidat udfyldes direkte, og sværhedsgrad værdien punkes op med 1. listerne genberegnes så.
hvis man skal bruge en tvillinge par for at få tal, så ligges f.eks. 2 til, 3 ved tripler osv. hvis vi kommer til en situation hvor man skal "gætte" (backtracke i løsnings algoritmen) så kunne der lægges 10 til.
genereringen starter så med den komplette løsning hvorefter der så fjernes tal til sværhedsgraden passer, denne kunne også meget passende implementeres som backtracking.
værdierne for inkrementeringen af sværhedsgrad skal helt sikkert justeres.
alternativt fandt jeg det her på google:
http://www.devx.com/dotnet/Article/30752/0/page/1god fornøjelse