Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 2459
Hei, jeg lurer på om det finnes noen gode guider eller lignende for spill som sudoku til Python. I tillegg til dette lurer jeg også på om det finnes lignende spill som må genereres og løses på lignende måte, gjennom "backtracking" osv.
Prøver å lære meg å skrive et slikt program kortfattet, slik at jeg får bedre kontroll over lister og loops.

Tar også gjerne imot tips om hvordan jeg kan forbedre meg på dette feltet ellers også
Sist endret av infexxion; 10. juli 2016 kl. 23:50.
Denne kan være verdt en titt: pythonsudoku.sourceforge.net/

Python Sudoku is a text and graphical program (gtk interface) to create or resolve sudokus. It can also print a sudoku (1 or 4 sudokus in each page) and write a image (png, jpeg, etc) with a sudoku.
Vis hele sitatet...
Eksempel på en "solver" med backtracking:FreeHomeBrew - Sudoku solver


Youtube video av denne i bruk: Sudoku Solver using backtracking
Trådstarter
79 5
Sjekket det litt ut, men det bar ikke så mye preg av selve genereringen av et fungerende brett osv.
Dessuten inneholder source coden såpass mye andre funksjoner som jeg ikke er av stor interesse etter (GUI osv.).
Du vet ikke evt. om noen tutorials på dette?

Fokuset mitt er hovedsaklig å lære effektive algoritmer for loops, og sjekking av lister ved loops.
Har søkt overalt, men finner lite som peker i denne retningen.
Jeg må innrømme jeg ikke helt skjønner hva du er ute etter, du vil ha backtracking og løsning av et brett, men klarer ikke å engang å lage et brett selv? Du må spesifisere eksplisitt hvilket nivå du vil ha det på, og hjelpen du trenger. Hvis du ikke vet hvordan du skal lage et brett: lag enten nested lists i python(søk på google) for å genrere brettet, eller bruk numpys array. Så må du implementere logikken selv. Vi kan sikkert være behjelpelige her, om du gjør en liten innsats selv først. Akkurat dette er en typisk oppgave for objektorientert programmering, så du kan søke på "skole+sudoku" på google og få masse eksempler og oppgaver.

Hvis du er over dette nivået, og vil ha noe som løser spillet for deg, så har du her et constraint satisfaction problem(CSP) og en typisk løsning går ut på å implementere AC-3 algoritmen. Du kan bruke mer "naive" tilnærminger, som search annealing, men det er vanskelig å lage en god heuristikk(kan også være god trening og god måte å få innsikt i hvordan man lager heuristikker), så AC-3 er helt klart å foretrekke. Meg bekjent er Introduction to artifical intelligence noe av det beste man finner av litteratur for å lære seg nevnte algoritmer og forstå disse, men de er på et relativt høyt nivå for en nybegynner. Om du er på et nivå der å genrere sudokubrett og forstå lister og loops er et problem, så ville jeg ventet med dette og 1. lært meg lister 1.1. lagd et sudokuspill du kan spille i konsollen. 2. lært algoritmeteori, det er tungt men verdt det. "skole+algoritmer" gir deg mange treff, f.eks har NTNU åpne sider med all informasjon her. 3. Bruk boken jeg nevnte over for å forstå hvordan du kan bruke det du lærte i 2. på en god måte.

Edit: med skole, så mener jeg universitet/høyeskole, så det er sagt.
Sist endret av Xasma; 11. juli 2016 kl. 18:44.
Trådstarter
79 5
Selvsagt, jeg mener generelt rent grunnleggende utforming av hvordan man genererer et brett, og hvordan man mest mulig effektivt kan sjekke et brett. Poenget er at sudoku generering og sjekking inneholder en del looping, og jeg vil lære meg hvordan jeg mest mulig effektivt kan løse problemet. Jeg har sett folk skrive alt fra 20 linjer med kode til 300 linjer.

Den siden fra NTNU som du postet, er det noen lignende sider for vanlig array generering og looping?
Ok, da er første problem her det vi kaller prematur optimalisering; optimalisering av algoritmer og kjøretider er ikke noe å tenke på før du har kontroll på basisen og i det hele tatt kan lage noe. Du må krabbe og gå før du kan løpe mot Usain Bolt og forvente nogenlunde jevn konkurranse, akkurat nå ligger du og kaver på gulvet.

Hvis du vil lage et brett og sjekkene så bra som mulig, så må du vite mye om hvordan Python funker som språk (du kan google numpy vs list), samt noe fra algoritmefaget jeg lenket til. Uansett er det viktigste egentlig at du prøver selv. Erfaring du får av egen, ræva eller god implementasjon er verdt mer enn å bare lese en tutorial, og så optimalisere egen kode etterhvert. Ihvertfall om du er interessert i å lære noe, og ikke bare ha et kjørende program du viser til venner og sier "se, jeg kan følge en tutorial!".

Om du tar logikken jeg brukte i forrige google søk, så kan du prøve "skole+python", det ga meg treff hos flere. Eller så kan du google "python+funksjon" der funksjon er array eller list, og lese dokumentasjonen. For er det noe du bør lære først som sist, så er det at dokumentasjon må leses og forstås for å få gjort noe som helst uten å bare følge oppskrifter.
Trådstarter
79 5
Sitat av Xasma Vis innlegg
Ok, da er første problem her det vi kaller prematur optimalisering; optimalisering av algoritmer og kjøretider er ikke noe å tenke på før du har kontroll på basisen og i det hele tatt kan lage noe. Du må krabbe og gå før du kan løpe mot Usain Bolt og forvente nogenlunde jevn konkurranse, akkurat nå ligger du og kaver på gulvet.

Hvis du vil lage et brett og sjekkene så bra som mulig, så må du vite mye om hvordan Python funker som språk (du kan google numpy vs list), samt noe fra algoritmefaget jeg lenket til. Uansett er det viktigste egentlig at du prøver selv. Erfaring du får av egen, ræva eller god implementasjon er verdt mer enn å bare lese en tutorial, og så optimalisere egen kode etterhvert. Ihvertfall om du er interessert i å lære noe, og ikke bare ha et kjørende program du viser til venner og sier "se, jeg kan følge en tutorial!".

Om du tar logikken jeg brukte i forrige google søk, så kan du prøve "skole+python", det ga meg treff hos flere. Eller så kan du google "python+funksjon" der funksjon er array eller list, og lese dokumentasjonen. For er det noe du bør lære først som sist, så er det at dokumentasjon må leses og forstås for å få gjort noe som helst uten å bare følge oppskrifter.
Vis hele sitatet...
Takker for tipsene, skal ta en titt på dette Har bare tidligere lært meg andre programmeringsspråk gjennom tutorials og følte det var noe lettere Driver en del med procedural PHP programmering, men ser at det er noe annerledes enn hva jeg må gjøre for å løse dette problemet