Generatore di Sudoku
Prima di postare leggi le regole del Forum. Puoi anche leggere le ultime discussioni.
Generatore di Sudoku #43275
![]() Cereal Killer Punto | Buongiorno e buon anno nuovo ![]() Devo sviluppare un software che generi dei Sudoku a diversi livelli di difficoltà (facile - medio - difficile - diabolico) e che soprattutto siano a soluzione univoca. Io ho già elaborato un piccolo algoritmo per tentare di arrivare alla soluzione sfruttando le disposizioni dei valori all'interno dei riquadri 3x3 dello schema. Ma è un procedimento troppo blando per essere sicuro al 100% e che non mi garantisce in alcun modo che i miei requisiti siano soddisfatti. Quindi chiedo aiuto a voi. Inoltre, poichè la matematica non è proprio il mio forte, chiedo che il linguaggio usato sia 'semplice' affinchè possa capire il ragionamento ed applicarlo al mio programma. Grazie anticipatamente ![]() |
Re: Generatore di Sudoku #43401
![]() Galois Amministratore | Ciao Cereal Killer e Buon Anno anche a te ![]() Non ho capito bene la tua domanda. Tu devi creare un software che risolve sudoku (cioè inserisci alcuni numeri all'interno dei quadrati e lui lo deve completare) oppure che li crea (cioè il software assegna dei numeri ai quadrati lasciandone vuoti alcuni che poi devono essere completati manualmente) ? Il primo caso è ovviamente molto più semplice del secondo, in quanto nel secondo caso non puoi mettere numeri a caso.. Fammi sapere ![]() |
Ringraziano: Omega, Pi Greco, CarFaby |
Re: Generatore di Sudoku #44192
![]() Cereal Killer Punto | Scusatemi tantissimo per il ritardo con cui rispondo, ma non ho ricevuto notifiche :( Comunque è la seconda ipotesi: io devo CREARE un Sudoku dal nulla, cioè devo inserire in tutte e le 81 celle un valore affinchè lo schema sia risolto secondo le regole del gioco. Inoltre, nella creazione dello stesso, devo considerare un diverso grado di difficoltà (da facile a diabolico) e che lo schema presenti una unica soluzione. |
Re: Generatore di Sudoku #44195
![]() Galois Amministratore | Ciao Cereal Killer ![]() Il problema è quindi abbastanza spinoso.. Non so in che linguaggio (di programmazione) lo devi scrivere, quindi ti fornirò solo qualche spunto o idea da cui poter partire. Sono abbastanza esperto di Sudoku perché quando ho fatto l'esame di Programmazione in C, il progetto che mi era stato assegnato era proprio la scrittura di un programma (in C) che risolvesse Sudoku.. Ti posso dare i seguenti suggerimenti: Per creare un Sudoku devi cominciare da una griglia vuota avente 81 quadrati disposti su 9 righe e 9 che tu devi quindi parzialmente completare. I Sudoku, solitamente devono soddisfare tre requisiti: 1) i numeri iniziali devono formare uno schema simmetrico rispetto al centro della griglia; 2) deve esistere una unica soluzione; 3) i numeri iniziali dovrebbero essere meno di 30 e più di 20 ( e questo potrebbe esserti utile per determinare il grado di difficoltà) Quindi un'idea sarebbe quella di assegnare casualmente numeri ad uno dei 9 quadrati e poi ricavarsi man mano gli altri "posti da riempire" sfruttando la simmetria con il centro della griglia. Inoltre, ovviamente più uno stesso numero lo fai più diventa semplice.. Per il momento non mi viene altro in mente.. è troppo generica la domanda che hai posto ![]() Se hai qualche dubbio in particolare dimmi pure e vedrò se riuscirò ad aiutarti ![]() |
Ringraziano: Omega, Pi Greco, CarFaby |
Re: Generatore di Sudoku #44341
![]() Cereal Killer Punto | Ciao ![]() Voglio usare Visual Basic 6 per sviluppare il software. Non l'ho detto prima, pensando non fosse rilevante :( Non ho ben capito cosa intendi quando dici che 1) i numeri iniziali devono formare uno schema simmetrico rispetto al centro della griglia; . Potresti spiegarti meglio? |
Re: Generatore di Sudoku #44346
![]() Galois Amministratore | Essendo un quadrato formato da 81 caselle (9x9) puoi trovare il quadrato centrale. Che sarà quello posto sulla quinta colonna alla quinta riga. Non è necessario, ma per formare dal nulla un sudoku, visto che non hai limitazioni puoi sfruttare la simmetria rispetto a quel punto. Cioè se ad esempio decidi di riempire con un numero la casella (quadratino) posta alla prima riga e prima colonna, riempirai anche il quadratino simmetrico rispetto al punto centrale, ovvero il quadratino posto alla nona riga nona colonna. |
Ringraziano: Omega, Pi Greco, CarFaby |
|