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.pyc
!Jc@sddkZddkZddkZddklZdZdZdZdZe	dedZ
e
gdZdZdZ
d	efd
YZdefdYZd
efdYZdd%dYZdZdZdefdYZdefdYZdd&dYZdZdZdefdYZdefdYZdefd YZd!d'd"YZd#d$Z dS((iN(tgettexti	iiicCs(t|tt|jotSdS(N(tlentsettTrue(trow((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytis_setscCskx |D]}t|ptSqWxUtt|dD]=}g}|D]}|||qK~}t|ptSq:Wttit|}g}t|D]}||||d|gq~}x|D]}	x|D]|}
g}x[g}t|
D]}
|||
q~D].}x%t|	D]}|i||q.WqWt|ptSqWqWtS(Nii(	RtFalsetrangeRtinttmathtsqrttappendR(trowstrtit_[1]trwtwidtht_[2]tntbox_coordinatestxtytboxt_[3]tritxrow((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt	is_sudokus2
	%
	2,


tUnsolvablePuzzlecBseZRS((t__name__t
__module__(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR-st
ConflictErrorcBseZdZRS(cCsK|||f|_||_||_|d|_|d|_||_dS(Nii(targsttypetcoordinatesRRtvalue(tselft
conflict_typeR"R#((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt__init__3s		

(RRR&(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR1stAlreadySetErrorcBseZRS((RR(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR';st
SudokuGridcBseZeeddZdZedZdZdZdZdZ	dZ
d	Zd
ZdZ
ddZd
ZRS(i	cCsg|_g|_g|_g|_t||_t|_tt	d|id|_
xjt	|iD]Y}|iit|iit|iit|iidg|iqkWh|_h|_
|ih|_xutg}t	|iD]7}|g}t	|iD]}|||fq$~q~D]\}}	|	|i|<qHWh|_xutg}
t	|iD]7}|
g}t	|iD]}|||fq~q~
D]\}}||i|<qW|ot|tjotid|}
ttit|
}g}xat	|D]O}	|	t|}|ig}|
|||!D]}|t|qr~q@Wn|i|n||_dS(Niis\s+(tgridtcolsRtboxesRt
group_sizeRtverboseRRtgen_setRt
box_by_coordst
box_coordstcalculate_box_coordst
row_coordst	enumeratet
col_coordsR!tstrtretsplitR	R
Rtpopulate_from_grid(R$R)R-R,RRRRRRRt_[4]tcoltgtsidetstartt_[5]R((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR&?sF							
	[	[
Ac

Cstti|i}g}t|D]}||||d|gq)~}d}x|D]}x|D]x}g|i|<xXt|D]J}xAt|D]3}	||i||	f<|i|i||	fqWqW|d7}qkWq^WdS(Nii(RR	R
R,RR0R/R(
R$RRRRtbox_numtxxtyyRR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR1`s 2


"cCst|pn|i||o`|oQy|i||WqzdG|G|G|G|GdGHddk}|iqzXq~dSn||i|jott||f|n||i|jott||f|n|i	||f}||i
|jott||f|n|i|i||i|i||i
|i||i
|||dS(NsStrange: problem with add(t)i(t_get_tremovet	tracebackt	print_excRRtTYPE_ROWR*tTYPE_COLUMNR/R+tTYPE_BOXtaddt_set_(R$RRtvaltforceRER((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRJns,cCsr|i||}|i|i||i|i||i|i||fi||i||ddS(Ni(RCRRDR*R+R/RK(R$RRRL((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRDs
!cCs|i||S(N(R)(R$RR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRCscCs||i||<dS(N(R)(R$RRRL((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRKscCs5|i|i||i||i|i||fS(N(R.RR*R+R/(R$RR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytpossible_valuesscCs4dGHx'|iD]}x|D]
}|GqWHqWHdS(NtSUDOKU(R)(R$R
R((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytpretty_prints
cCs\xUt|D]G\}}x8t|D]*\}}|o|i|||q&q&Wq
WdS(N(R3RJ(R$R)RRRtcell((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR8s

cCsnd}g}xH|iD]=}|idig}|D]}|t|q3~qW|di|7}|S(Ns
<Grid
       t s
       (R)RtjoinR5(R$tsR)R
RR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt__repr__s
;cCsqh}xdt|iD]S}xJt|iD]9}|i||p |i|||||f<q,q,WqW|S(N(RR,RCRN(R$t
possibilitiesRR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytcalculate_open_squaress(cCs|tjo|i|}nz|tjo|i|}n\|tjo|i|i||f}n1|i||i||i|i||f}g}xD|D]<\}}|i|||jo|i||fqqW|S(sFind all squares that conflict with value val at position x,y.

        If conflict_type is specified, we only find conflicts of given
        type (ROW, COLUMN OR BOX).
        (	RGR2RHR4RIR0R/RCR(R$RRRLR%tcoordstconflicting_coordinates((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytfind_conflictss


0c
CsUdig}|iD]7}|dig}|D]}|t|q.~q~S(sOutput our grid as a string.RR(RSR)R5(R$RRRR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt	to_stringsN(RRRR&R1RJRDRCRKRNRPR8RURWtNoneRZR[(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR(>s!									cCsym|idd}t|idddjptg}|iddD]}|t|qR~WntSXtSdS(szCheck puzzle for basic validity.

    This does not check for solvability or ensure a unique
    solution -- it merely checks well-formedness. This should
    provide some protection again file corruption, etc. (i.e. if
    we use this function to check puzzles before handing them out
    to the rest of the app, we'll prevent tracebacks related to
    corrupted puzzles).
    RRtiQN(treplaceRtAssertionErrorRRR(tpRtc((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytis_valid_puzzles
&5cCs
|idd}t|tdjptg}d}xttD]}g}xttD]}t||jo
d}n||}yt|}Wn|pd}nX|tjo|i|n|id|d7}qbW|i|qIWt|S(s,Given an 81 character string, return a grid.RRR]iii(	R^Rt
GROUP_SIZER_RRt	digit_setRR((RTR)RRRRR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytsudoku_grid_from_strings,





tSudokuSolvercBseZdZeeddZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZRS(s#A SudokuGrid that can solve itself.i	cCs}d|_t|_ti||d|d|t||_t|_t	|_
d|_t|_t|_
g|_dS(NR-R,i(R\t
current_guessRtinitializedR(R&tvirgint	GuessListtguessestBreadcrumbTrailtbreadcrumbst
backtracesRtsolvedttrail(R$R)R-R,((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR&s					c	Cs|i|i||i||i|i||f}t|djo0|i}|i|||||f|fSt|djodSxI|i||i|f|i	||i|f|i
|i||f|i|i||ffgD]\}}|i|}xO|D]G}|i|oqq||f|jo||i|}qqW|oXt|djoE|i}||jo$|i|||||f|fSdSnt|djodSqWdS(s Fill the square x,y if possible.iiiN(
R.RR*R+R/RtpopRJR4R2R0RCRN(	R$RRtpossibleRLt	coord_sett
filled_sett
needed_settcoord((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytauto_fill_for_xys67

cCsOg}y|i}Wntj
o|SnXz|i|iWd|SX(N(tfill_must_fillsRtextendtfill_deterministically(R$tchanged((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt	auto_fill/s	c
Csg}xd|i|ifd|i|ifd|i|ifgD]\}}}xm|iD]_\}}tg}td|i	dD]}||t
fq~}x}|D]u}	|i|	}
|
o||
=qxK|i|	D]:}|i
|o$||p|	||<q ||=qqWqWx|iD]\}}|ptd||fq5y2|i|d|d||i||fWq5tj
otd|q5Xq5Wq_WqCW|S(NtColumntRowtBoxisMissing a %s in %sis!%s,%s must be two values at once!(R4R*R2RR0R+titemstdictRR,RRCRNthas_keyRRJRR'(
R$R{tlabelt	coord_dict
filled_dicRRsRtneedsRvRLtvRX((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRx:s<
=
cCs|ii}td|}g}xw|D]o\}}|iodG|G|GHn|i}|i|d|d||i|d|df|gq1W|io
dG|GHn|S(NcSst|ddjS(i(R(R((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt<lambda>_ssDeterministically adding iisdeterministically returning (RWRtfilterR-RqRJR(R$tposst
one_choicetretvalRXtchoicesRL((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRz]s
%

cCsC|ix|ipq
W|io
dG|GHnt|_dS(NsSolved!
(R|tguess_least_open_squareR-RRo(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytsolveks



c
cs|ix|ipq
Wt|_tg}|idD]}|t|q=~Vx|io{|i|idyx|ipqWWntj
oPq^Xtg}|idD]}|t|q~Vq^WdVdS(Nii(
R|RRRottupleR)Rmtunwrap_guessRR\(R$RR
R((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytsolution_finderss"

	3

	8cCs0|i}|i|iotStSdS(N(RtnextRR(R$tsf((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pythas_unique_solutions


cCs9|ii}|p|io	dGHntS|id|d}|d|ii|d}|po|io.|id7_|i	|id|i
Std||d|ii|d|ifnti
t|}t|dd|dd|}|io|idii|nd|_|i|dd|dd|||_|ii||iid|f|ii|y|iWn7tj
o+|iid|i	||i
SXtg|iijo(|iid	|i	||i
SdS(
NsSolved!cSst|dt|djodpdt|dt|djodp<|d|djodp |d|djodpdS(iii(R(tatb((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRsPiiisqUnsolvable %s.
                 Out of guesses for %s. Already guessed
                 %s (other guesses are %s)t+s'Problem filling coordinates after guesss(Guess leaves us with impossible squares.(RWRR-RtsortRktguesses_for_coordRmRnRRRtrandomtchoicetlisttGuesstchildrenRR\RgRJRpR|tNotImplementedErrorRtvalues(R$RtleastRNtguesst	guess_obj((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRsL
	

"
	#	

cCs|iid|f|i|i|io|i|i|inx8|iiD]'}|i|o|i|qYqYWxB|iD]7}|i	|||i
jo|i
i|qqW||ijo|ii|ndS(Nt-(RpRRCRRRDtconsequencestkeysRRRkRm(R$Rtconsequencetchild((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs

cCsNt|}t|t|}|d}||d}d||d|S(NiRR(R5RR(R$Rtpad_totpaddingtsecond_halft
first_half((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytpads

cOsD|io|ii|||nti||||||dS(N(Rgtadd_consequenceR(RJ(R$RRRLR tkwargs((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRJs
(RRt__doc__RR&RwR|RxRzRRRRRRRJ(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRfs			#					2		tInteractiveSudokucBsDeZdZeeddZdZdZdZdZRS(sA subclass of SudokuSolver that provides some convenience
    functions for helping along a human.who is in the midst of
    solving.i	cCsti||||dS(N(RfR&(R$R)R-R,((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR&scCs|iidti|S(Ns
(RiR[Rf(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR[sc
si|}i|}i||f}i|}xg|||gD]V}g}tfd|}x/|D]'}	i|	p|i|	ququWqJW|S(s>Return a list of impossibilities implied by the users actions.csi|S((RC(RX(R$(s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs(R2R4R/R0RRNR(
R$RRt	row_cellst	col_cellsRt	box_cellsRstbrokenRX((R$s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytfind_impossible_implicationss


cCsbx,|iD]!}t||ijotSq
Wx,|iD]!}t||ijotSq9WtS(N(RRR,RR*R(R$R
Ra((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytcheck_for_completenesss
	
	cCs|i|iijS(N(R)Ri(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt
is_changeds(	RRRRR&R[RRR(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs				tDifficultyRatingcBseZedZedZedZedZdZdZdZ	dZ
hed	6ed
6e	d6e
d6Zddd
d	gZhed6ed6ed
6ed	6Z
d
ZdZdZdZdZdZdZRS(s	Very HardtHardtMediumtEasyg?i
g333333?g?is	very hardthardtmediumteasycCs||_||_||_||_||_|io tt|id|_n
d|_|io tt|id|_n
d|_|i|i|_	|i|i|_
t|i|i|_
t|i|i|_|i|_dS(Nig(tfill_must_fillablestelimination_fillablesRkRntsquares_filledtfloatRtinstant_fill_fillabletinstant_elimination_fillablet'proportion_instant_elimination_fillablet proportion_instant_fill_fillabletadd_with_diminishing_importancetcount_valuestelimination_easet
fillable_easet	calculateR#(R$RRRkRnR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR&s$					
 	
 	cCs?|i}|ig}|D]}|t||q!~S(N(RRR(R$tdcttkkRtk((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR4s
cCsNdt|i|it|i|it|i|i|i|iS(Ni(RRRRRRkRn(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR9scCsd|iS(Ns<DifficultyRating %s>(R#(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRU?sc
Csxd|ifd|idfd|ifd|idfdt|ifd|ifd|ifd	|ifd
|i	fg	D]\}}|GdG|GHqWdS(Ns1Number of moves instantly fillable by eliminations5Percentage of moves instantly fillable by eliminationids-Number of moves instantly fillable by fillings1Percentage of moves instantly fillable by fillingsNumber of guesses madesNumber of backtracessEase by fillingsEase by eliminationsCalculated difficultys: (
RRRRRRkRnRRR#(R$tnametstat((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRPBs 	
	
cCs|i|idjot|iS|i|idjot|iS|i|idjot|iSt|iSdS(Ni(	R#tvery_hard_ranget_t	very_hardt
hard_rangeRtmedium_rangeRR(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytvalue_stringTscCs\|i|idjodS|i|idjodS|i|idjodSdSdS(sgGet category string, without i18n or capitalization

        For use in categorizing category.
        is	very hardRRRN(R#RRR(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytvalue_category^s(g?i
(g333333?g?(g?g333333?(ig?(RRRRRRRRRRt
easy_ranget
categoriestordered_categoriestlabel_by_catR&RRRURPRR(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs0



						
cCstiit|dS(Nt?(RRtgettget_difficulty_category(t
diff_float((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytget_difficulty_category_namels		cCsOxHtiiD]7\}}|d|jo|djno|SqWdS(Nii(RRR(RtcategoryR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRrs&tSudokuRatercBs>eZeeddZdZdZdZdZRS(i	cCsht|_t|_t|_g|_tg|_h|_h|_d|_	t
i||||dS(Ni(RRhtguessingtfake_addtfake_additionsRtfilledRRttierRfR&(R$R)R-R,((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR&ys							cOs|ip|io|io|ixI|iD]>}|d|df}|i|pti||q3q3W|i|d|dpti||n|id7_qti|||n|i	i
|dS(Nii(RRhRtscan_fillablestadd_me_queueRCRfRJRRR(R$R Rtdelayed_argsRX((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRJs


cCst|_g|_y|iWnnXt|i|i|i|i<|i|_g|_y|i	WnnXt|i|i|i
|i<|i|i|iB|i
|iB|_|ii|it|_dS(N(
RRRRxRRRRRRzRRyR(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs"		!
	!(cCst|_ti|S(N(RRRfR(R$((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs	csipind_tfdiiidi_ti	i
iii}|S(Nicstfd|S(cs*tdii|odpdS(tcluesii(tsetattrRt__add__(R(R$(s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs(tmap(R
(R$(s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRsi(
RoRRRRiR)R,t
numbers_addedRRRRkRn(R$trating((R$s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt
difficultys
	
	(RRRR&RJRRR(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRws
			RjcBs,eZdZdZdZdZRS(cGsti||dS(N(RR&(R$Rk((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR&scs=tg}tfd|D]}||iq#~S(Ncs|ijo
|ijS((RR(R(RR(s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs(RRRL(R$RRRR((RRs7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRscCsIg}x<|iD]1}||jo|i||i|qqW|S(N(RRRD(R$RtremovedR;((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytremove_childrens


cCst}g}xtt|dD]i}||t|}|i|jo|i|jo
t}n|o|i|||g7}q#q#W|S(Ni(RRRRRRRD(R$RRtnukingtnukedRR;((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pytremove_guesses_for_coords 

(RRR&RRR(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRjs			RlcBseZdZRS(cCsM|i|i|io td|i|ifnti||dS(Ns We already have crumbs on %s, %s(RRRt
ValueErrorRR(R$R((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs (RRR(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRlsRcBs#eZdZdZdZRS(cCs1||_||_g|_||_h|_dS(N(RRRRLR(R$RRRL((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyR&s
				cCs||i||f<dS(N(R(R$RRRL((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRscCsd|i|i|if}|ioU|d7}|dig}|iiD]\}}|d||fqM~7}n|d7}|S(Ns<Guess (%s, %s)=%ss
 implies: s, s%s->%st>(RRRLRRSR(R$RTRRR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRUs

K
(RRR&RRU(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs		cCs|dS(i((R((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRscCsAd}x4t|D]&\}}|t|||7}qW|S(Ni(R3R(tlsttdiminish_bytsumRR((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyRs

((((!RR	R6RRRcRGRHRIRRdtsetsRRt	TypeErrorRRRR'R(RbReRfRRRRRRRjRlRR(((s7/usr/lib/python2.6/site-packages/gnome_sudoku/sudoku.pyt<module>s6
		
		%n		G

Youez - 2016 - github.com/yon3zu
LinuXploit