Generatore di Sudoku

Prima di postare leggi le regole del Forum. Puoi anche leggere le ultime discussioni.

Generatore di Sudoku #43275

avt
Cereal Killer
Punto
Buongiorno e buon anno nuovo emt

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 emt
 
 

Re: Generatore di Sudoku #43401

avt
Galois
Amministratore
Ciao Cereal Killer e Buon Anno anche a te emt

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 emt
Ringraziano: Omega, Pi Greco, CarFaby

Re: Generatore di Sudoku #44192

avt
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

avt
Galois
Amministratore
Ciao Cereal Killer emt

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 emt

Se hai qualche dubbio in particolare dimmi pure e vedrò se riuscirò ad aiutarti emt
Ringraziano: Omega, Pi Greco, CarFaby

Re: Generatore di Sudoku #44341

avt
Cereal Killer
Punto
Ciao emt

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

avt
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
  • Pagina:
  • 1
Os