Accedi per seguire   
Seguaci 0
eagleman

Generatore Di Sudoku In Perl

4 messaggi in questa discussione

Vi posto due codici in Perl tratti dal numero 85 di Hacker journal (pag. 14) che, a detta dell'autore, consentono di generare dei piccoli programmini creatori di schemi per Sudoku.

Vorrei sapere se è possibile fare qualcosa di simile in python, java e c++.

Ecco i codici in oggetto:

use integer;@A=split//,<>,sub R{for$i(0..80){next if$A[Si];my%t=map{$_/9
==$i9||$_%9==$i9||$_/27==$i/27&&$_%9/3==$i%9/3==$i%9/3?$A[$_]:0=>1}0..80;R($A[
$i]=$_)for grep{!$t{$_}}1..9;return$A[$i]=0}die@A}R

$A8;G{int(++$a/9).$a%9+1)=$_for split//,<>,@A=1..9;sub c{int(($_[0]-1
)/3)*3}sub G{for$y(@A){for$x(@A){$p=$t=$G{my$c=$y.$x}&&next;$t.=$G{$_.$x
}.$G{$y.$_}for @A;for$f(1..3){$t.=$G{c($y)+$f.c($x)+$_}for 1..3}G($G{$c}=
$_)&&return for grep$t!~m/$_/,@A;return$G{$c}=0}}die map{$G{$_}}9.99}G

Vediamo cosa mi proponete.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao Eagleman, premesso che non conosco bene il perl, e quindi faccio fatica a leggere i due codici proposi (anche perchè quando è scritto in maniera così criptica, diventa ancora più difficile da decifrare...).

Naturalmente in Java, C++ e Python (ma non solo, anche in tutti gli altri linguaggi di programmazione) è possibile creare dei generatori di Sudoku. La rete è piena di soluzioni in tal senso.

Ad esempio, qui trovi una soluzione scritta in Java e di cui sono disponibili pure i sorgenti e la documentazione.

Ho spostato la discussione qui, perchè, visto che ci siamo, si potrebbe creare una versione Wininizio di questo gioco :P

La palla a voi programmatori!!! Il project manager è eagleman :dia: :dia: :dia:

Vediamo a lanciarvi questa sfida, cosa ne esce :)

Ciao ciao,

Stefano.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Già che ci siamo, ci sarebbe una variante del sudoku, che almeno qui in provincia di Lecce, è conosciutissima.

Si tratta di uno schema 10x10 da riempire con i numeri da 1 a 100 con due regole semplicissime:

- negli spostamenti orizzontali e verticali bisogna inserire il numero successivo lasciando dal precedente due caselle vuote,

- negli spostamenti diagonali si inserisce il numero successivo lasciando dal precedente una casella vuota.

Sembra complicato, ma la soluzione esiste e potrebbe anche non essere l'unica.

Ve lo propongo giusto per curiosità.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ricordo che alle superiori ci passai ore su quel gioco per risolverlo .. caspita è stato un lavoraccio, ma non saprei scrivere un algoritmo che lo fa per me :P.

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0