403Webshell
Server IP : 182.53.201.61  /  Your IP : 216.73.217.175
Web Server : Apache/2.2.15 (Fedora)
System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686
User : apache ( 48)
PHP Version : 5.3.3
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python2.6/site-packages/gnome_sudoku/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyo
!Jc@sddkZddkZddkZddkZddkZddkZddkZddkZddkZdfdYZ	de	fdYZ
eie
dfdYZe
djo
eZn-eo%d	ZeGHxed
Zedjo#eideiZeined
joeiGHnedjoeeiGHnedjoeiinedjoeiinaedjoeiinCedjoeiiPn$yeeeWneGHnXqndS(iNtSudokuGeneratorcBseZdZddddZdZdZddZdZd	Z	d
Z
dddZd
ZdZ
dddehdZeedZdhdZeeehdZdeehdZRS(s'A class to generate new Sudoku Puzzles.ii	cCsg|_||_g|_||_xGt|iD]6}x-t|iD]}|ii||fqJWq4W|oti||_n-y|i	|_Wn|i	|_nXg|_
g|_dS(N(t	generatedtcluest
all_coordst
group_sizetrangetappendtsudokut
SudokuGridt
start_gridt
generate_gridtpuzzlest
rated_puzzles(tselfR	RRtxty((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyt__init__s"					cCsKg}|iD]}||diq~}|ot|t|SdS(Ni(Rtvaluetsumtlen(R
t_[1]titdifficulties((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytaverage_difficulty!s+cCs2tidtd|i|_|ii|iS(NtverboseR(RtSudokuSolvertFalseRR	tsolve(R
((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyR
&s
icCs,|id}||||}}||fS(Ni(R(R
RRtaxistupper((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytreflect+s
c
Cs9|id}tti|i|}tidtd|i}t}xH|D]@\}}|i	||}|o|d7}|i
|qSqSW||B}t|it|}xot||ijoXti|dd}	|i
|	|i	|	}|o|i
|n||}qW|i|S(NiRRii(
RtsettrandomtsampleRRRRRRtaddRtmake_puzzle_from_coords(
R
tncluestbuckshott
new_puzzletreflectionsRRt
reflectiontremaining_coordstcoord((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytmake_symmetric_puzzle3s*
	


cCsUti|i|i}x-||ijoti|i|i}qW|i|S(N(R R!RRRR#(R
R%((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytmake_puzzleHs
cCs~tidtd|i}|iit|x6|D].\}}|i|||ii	||q8W|i
i||S(NRR(RRRRRRRR"R	t_get_R(R
R%R&RR((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyR#Ns&gcCsmt|ii}|p)|i|}|t|||7}nd}g}xt|D]}|i|||}||jo
|}n
t|}|}	|	|i|jo|i|}	n|it|	||	7}|ot||}q[q[Wti	|g}
xJt|D]<}||o+|
i
ti|ii|||q q W|i
|
S(sMake a puzzle paying attention to evenness of clue
        distribution.

        If skew_by is 0, we distribute our clues as evenly as possible
        across boxes.  If skew by is 1.0, we make the distribution of
        clues as uneven as possible. In other words, if we had 27
        boxes for a 9x9 grid, a skew_by of 0 would put exactly 3 clues
        in each 3x3 grid whereas a skew_by of 1.0 would completely
        fill 3 3x3 grids with clues.

        We believe this skewing may have something to do with how
        difficult a puzzle is to solve. By toying with the ratios,
        this method may make it considerably easier to generate
        difficult or easy puzzles.
        i(RR	tboxesRtintRRtroundR tshuffletextendR!t
box_coordsR#(R
tskew_bytmax_squarestnboxestcluedR$tntminimumtclsRR%R((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytmake_puzzle_by_boxesVs8






c	CsyHti|dtd|i}|i}|ii||f|SWn1dGHdGH|iGHdG|iGHdG|GHnXdS(NRRsImpossible!sPuzzle was:s
Solution: s#Puzzle foobared in following state:(	RtSudokuRaterRRt
difficultyRRtvirginR	(R
tsudoku_gridtsolvertd((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytassess_difficultyscCs>ti|dtd|i}|io|iSdSdS(sLIf puzzle is unique, return its difficulty.

        Otherwise, return None.RRN(RR<RRthas_unique_solutionR=tNone(R
R?R@((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyt	is_uniques
g333333?g?idc	Csxt|D]}|o|i|}n
|i}|i|i}|o;|p|i|jo#|p|i|jo||fSq
WdSdS(N(NN(RR;R,RBtgridRRD(	R
tlower_targettupper_targett	max_triestby_boxt
by_box_kwargsRtpuzRA((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytgenerate_puzzle_for_difficultys
c
Cs|o|i}n
|i}t}|idjo|id}nd}xti|idtd|i}|io|i	}Pn|i
d}|i|ifg}|i
|i|i}	|	o|i|	nx9|D]1\}
}|ii|
||ii|
|qWti|iidt}|t|7}|tjo||ijodSqS|o4t}x||ijotiddtidd}
}x=|i|
|o)tiddtidd}
}qW|i|
||ii|
||d7}|i
|
|}	|	o0|i|
||ii|
||d7}nt}qW|o+ti|idtd|ii	}qn||fS(	Ni
iiRRiii(R+R,RRRR<RFRRCR=tbreadcrumbsRRRRR>t_set_R	R-RRtTrueRDR trandint(
R
tsymmetricaltstrict_number_of_cluesRLtdiffRR@tcrumbtfill_inR(RRtchanged((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytmake_unique_puzzlesX!

)%*"
"i
cCsC|i|}g}x't|D]}|i|iq"W|S(N(tunique_generatorRRtnext(R
R8tugargstugtretR((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytmake_unique_puzzless
ccs2x+|id|d|}|o	|VqqdS(NRRRS(RX(R
RRRSRJRKtresult((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRYs		c	Csg}xt|D]}|o|i}n'|o|i|}n
|i}y|i|i}Wn
nX|o|i||fqqW|id|S(NcSsH|di|dijodp&|di|dijodpdS(iii(R(tatb((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyt<lambda>s(RR+R;R,RBRFRtsort(	R
R8RRRJRKR]RRLRA((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytgenerate_puzzless 
N(t__name__t
__module__t__doc__RDRRR
RR+R,R#R;RBRERRMRPRXR^RYRd(((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRs6						9		3
tInterruptibleSudokuGeneratorcBseZdZdZRS(cOs)t|_t|_ti|||dS(N(Rtpausedt
terminatedRR(R
targstkwargs((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRs		cOs|it|||dS(N(tunterminateR(R
RkRl((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytwork#s
(ReRfRRn(((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRhs	tSudokuMakercBseZdZhdd6dd6hed6deiieiddZ	d	Z
d
ZdedZ
dedZegd
ZeegdZdddZdZdZdZdZddddZdZRS(s5A class to create unique, symmetrical sudoku puzzles.iRi	RRRiRcCs||_t|_t|_||_||_||_|ih|_|i	d|_
hdd6dd6dd6dd6|_dS(Ntfinishedteasytmediumthards	very hard(
t	pickle_toRRiRjtgenerator_argstpuzzle_maker_argst
batch_sizetloadtall_puzzlestget_pregeneratedtplayedRDtn_available_sudokus(R
RuRvRwRt((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyR.s						
	c
Csyti|iWn0tij
o!}|itijodSnXxtiiD]}ti	i
ti	i
ti|i
dd}ti	i
|i|i
dd}ti	i|p6yti||WqdGHd||fGHqXqTqTWdS(Nt t_sProblem copying base puzzlessAttempted to copy from %s to %s(tostmakedirsRtterrorterrnotEEXISTRtDifficultyRatingt
categoriestpathtjointdefaultst
PUZZLE_DIRtreplacetexiststshutiltcopy(R
tetcattsourcettarget((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRx?s

0$cCstii|i|idd}yt|i}Wn?tj
o3}|iti	jod||i
fGHngSXg}|D]}||iq~SdS(NR}R~s:Error reading pregenerated puzzles for difficulty '%s': %s(RRRRtRtfilet	readlinestIOErrorRtENOENTtstrerrortstrip(R
R=tfnametlinesRRtline((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRzOs$cCs|p;tg}tiiD]}||i|d|q~S|i|o|i|S|i|}d}xA|D]9}|p|idd|ijo|d7}qxqxW||i|<|i|SdS(Ntnewis	i(	RRRRt	n_puzzlesR|RztsplitR{(R
tdifficulty_categoryRRtcRtcountR((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRZs;%
cCsg}|p7xtiiD]"}|i|i|d|qWn]|i|}xJ|D]B}|idd}|p||ijo|i|qZqZW|S(s8Return a list of all puzzles we have generated.
        Rs	i(	RRRR2tlist_puzzlesRzRR{R(R
RRtpuzzle_listRRtltpuzzle((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRhs
$cCs|pgSg}h}h}x2|D]*}|i|||<ti||q%Wd}	d}
h}g}xi|	|jo[t|t|joB|
t|jo
d}
n||
}
|
|jo|
d7}
qnny||
i}Wn tj
o|i|
nXy|id\}}Wn)tj
od|||
fGHqnnXt	i
|oP||jo?|p||ijo'|i|t|f|	d7}	qnd|||
fGH|
d7}
qnW|	|jod||fGHdGHn|S(sReturn a list of n puzzles and difficulty values (as floats).

        The puzzles will correspond as closely as possible to levels.
        If new, we only return puzzles not yet played.
        iis	s#WARNING: invalid line %s in file %ss%WARNING: invalid puzzle %s in file %ss4WARNING: Not able to provide %s puzzles in levels %ssDWARNING: Generate more puzzles if you really need this many puzzles!(
RzR R1Rtpopt
IndexErrorRRt
ValueErrorRtis_valid_puzzleR{tfloat(R
R8tlevelsRtexcludeRtpuzzles_by_leveltfilesRRtiltn_per_levelRptlevRtpRA((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytget_puzzles_randomwsP&



%
	c
Cs|o|i||d|d|S|pgSg}h}x!|D]}|i|||<qCWd}	d}
h}g}xz|	|jolt|t|joS|
t|jo
d}
n||
}
|
|jo|
d7}
q{nt||
djo|i|
n||
d}||
d||
<y|id\}}Wn)tj
od|||
fGHq{nXti|oP||jo?|p||ijo'|i|t	|f|	d7}	qnd|||
fGH|
d7}
q{W|	|jod||fGHd	GHn|S(
sReturn a list of n puzzles and difficulty values (as floats).

        The puzzles will correspond as closely as possible to levels.
        If new, we only return puzzles not yet played.
        RRiis	s#WARNING: invalid line %s in file %ss%WARNING: invalid puzzle %s in file %ss4WARNING: Not able to provide %s puzzles in levels %ssDWARNING: Generate more puzzles if you really need this many puzzles!(
RRzRRRRRRR{R(R
R8RRt	randomizeRRRRRRRRpRRRRA((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytget_puzzlessP&



%
	cCs{t|i|_|iii}|ii|i}h}x5t|iD]$}|i	\}}|p|i
|jo|p|i
|jo|i}	tii
|i|iidd}
|i|i}|	|joyXt|
d}|i|	dt|i
d|i|i|icd7<Wqotj
o}
d|
iGHqoXqsqOqOWdS(NR}R~R`s	s
is'Error appending pregenerated puzzle: %s(RhRut
new_generatorR	t	to_stringRYRvRRwRZRRRRRttvalue_categoryRRzRtwritetstrtcloseR|RR(R
tdiff_mintdiff_maxtkeyR\t
open_filesR8RLRTt	puzstringtoutpathtexistingtoutfiR((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyt
make_batchs*
"
cGs.t|do|iint|_dS(NR(thasattrRtpauseRPRi(R
Rk((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRscGs.t|do|iint|_dS(NR(RRtresumeRRi(R
Rk((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyR
scGs.t|do|iint|_dS(NR(RRt	terminateRPRj(R
Rk((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytstopscCs2x+|io |ioPntidqWdS(Ni(RiRjttimetsleep(R
((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pythesitates


cCst|_t|dot|i_nt|_d}xr|p
||jo\|ioPn|io|iny|id|d|Wn
q;X|d7}q;WdS(s7Intended to be called as a worker thread, make puzzles!RiRRiN(RRjRRt
termintaedRiRR(R
tlimitRRR((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRns"		

cCsti|iS(N(RR<R=(R
RL((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pytget_difficulty1sN(ReRfRgRPRRRRtDATA_DIRRRxRzRDRRRRRRRRRRnR(((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyRo*s(

		2:$				t__main__sCommands are:
    run: Run sudoku-maker
    len: \# of puzzles generated
    pause: pause
    resume: resume
    terminate: kill thread
    quit: to quit
    schoose:trunRtshowRRRRtquit(RRRRR Rtpausablet	threadingRRRht
make_pausableRoRetsmRtusaget	raw_inputtinptThreadRtttstartRRRRRRtgetattr(((s=/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku_maker.pyt<module>sP	












Youez - 2016 - github.com/yon3zu
LinuXploit