From 3a739ede9c23f57d416a7c04be19354b1dfb0e4b Mon Sep 17 00:00:00 2001 From: samerbam Date: Wed, 23 Aug 2023 20:08:05 -0400 Subject: [PATCH] flip_top_bottom -> rotate_180 --- application/sudoku_16.png | Bin 11004 -> 11042 bytes application/sudoku_8.png | Bin 3392 -> 3803 bytes application/sudoku_generator.py | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/application/sudoku_16.png b/application/sudoku_16.png index a4bab21be5941560929c5ae4d88a20b6e53cafa3..6f7b13f1c11066a7949f6be90478eff038a80f1c 100644 GIT binary patch literal 11042 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 literal 11004 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 Nt5+1H@=*Hs{ttA8ObY-2 diff --git a/application/sudoku_8.png b/application/sudoku_8.png index f45d560fcd6f40b60d1e1ff615b8d157978f0b2c..323595f1317373bd5d4ab07802578454b4bcce2e 100644 GIT binary patch literal 3803 zcmbVPX;hPE7M7tcQ#@d6D71q}r&xlBWCYp5)?pE&L<+LWmQH|3vw*Atk)^eOfubF$ zViJ}HQ3#Y^z_4$XAcK$~7?y-hK*O3KTOvYW-VmJ5sb~JocM@`PbGh$(pZ7k`^L?bR z&$+0n{zY})zI|$l(@q}XvmLx!{`@EKSA}LYwQrw#5yI*3p7D92F;v*Vx^Cz4jn*HJ zo-E=lYTVurGYRf|JZp)2X^hu&wjA+7U%$y%)SXIm(s26v)OW5Q^yz-`CWC9B`sB}f zB{^~KqL?*}S!d|zC}Mats$I`m+W6W*D?zhmqPN$okXtKVh?;JeQa2=5ZWOLQpUxwb zKfB0$z6D#`cl%C=_#WzwOgbSIjrhpijaWCm%Dv4jEOta$q2_Z#sFdTk&Uk&+b@66b zh;iL^BTDPFspaacpZ1nG=*VanApoN|qHw9Ph3cFw8g=dC@s~b5` zH!js;sXv0#fIuRV1Og!wBa_J*9DJ!=A$Xx74`V{ELe&ySHSL+ms@Di|$q1Xxo}CQ~ z49pipuV-h|OWcP9Jp*)E2DuyGKj4EJ8y@zR1P;6`rqTZHa~ew!&hxh0dnhF%{OXIa zfVy9_L!+WRe8N6{xyY~9f(7vgwwF6~Gu`Y$s4?4H8(c0oWebje0il{M1Da??6a`uBW2kukM_gX zBoaeaYdAbTJzXP>TR%BD*(h#UX!}mN|B(m%;pO#tm%|B1Zkl(k{tN4p~R?+H*Z7l8NmvNbFYqdAmIItnO^Lp+0<%KcgM3T6E#<*1i zIzTbe9j3iDtLsCkEDC%EZY{rvBEkAxNuk~5Vs-z@el6oGuO~C?w_aU+c&WF**5$@w z(cE19%9CRY^YeBaFCgw4>1x_RN$Ud=N!+&+$|~wceh;xR`@$MyB~A_1)B^^~}A zX}l$A6THR~mzr-K^9f3>STs9IcI6h@r;OAP(i~`XI>NItetD`r<3P%$s8(57d8W5e zYv57S@?&k41BVxvmRje_%8OZ>(j`xPgjok-cKok)fZ$aj(EFu5^PIMGO4dYrB8%&I~* zOl2NB<>Hdl6%rhLxAdvi(BPnCDhqc1*_<5apk_b6!=Y%j!yBq?w6KSpFNevD$XI;e z@(c>e@Q0P6k7Y6O^?Q=1g+tbyG${^5l#UAtncCUXaDVY(~PG}C)Jbc&$pd-5q zd&s68Xm?NRlIPHMb1@jhQTpQYbyE##siH)uwt&g6;U@&&uucvjabCyh)KfAi!L3O~CK5%gA<6oB^VUlD+1o}J8e-_BgI3bjUi(6LEEWtzzr##GaBwgVw{Z1*td%W6i#!JOQb1cE^WnB_<3=jZne7z{=l=;uO}lV5!I@mia8-g*Dp za6))^@)QZ`#G2veX9Yc;pP$!+1sRpe!)tvmwc%rz7b!F z+sFND@O+a%5g1}!8Og9JP9$LAh7476x{4d<(PA*l-a~P*u}3B2Rz4_{8)p3Bx6ke) zsTyf@5X!2{j?ZTDMjtBN0AZ zY{v|B#14&%b2)V?JtG6`6ld!5FfJsd_};zH@umc-Ma1@|6l2`=Pd%5QL=kIzeEe){ ztQEg1G>h>QZ%=YWbC_kw$dRnVVf_nRY;K)9%0s)FEc#J<{Y%yf>PG8Ij2?sRbg}5} zM=-adY6%5d)`HX5q}E|nY|KvdvAZFw=YDPWz4cxshmD2|EvA;}>r>(r(BmYQR;&K| zksNhj{1k(14*e?Osox3fY_d7AgvCX?1@0}9TPUmP8c%o)LLs~) zt8iW}Z*aCpSa+;Hm-iTtNo)Wen|Dn?cT-H|KZB_C^r<8Sp$Ef|JX32Bey%wp)@{wZ zW^we|Zrj4Ir8ivq5)$Hf>I8zUB#)1VT#d{lIW(~@u}y&m(2}3!sYjm6rm?W4)C8z} z$Fu-b=5UJhBt?1Lo*`LzwH;Z)l1%OBeJ(F+oyj%JXh_ME<92uU*JeDyu^xkF>RjR| zE$R9s?k$GeceM@^#w6j?qjoIUR9}HIE=)w0Jo|Rctp`&*Pt2MZ zIM9ANeMIhAr%ZEY-Wy14SlH=%9``&DefZ0l{eaIvNKP&;8PQw}BaHCHKTqrDgdT|R zj_3zw#PnShi@i^3A3EfD#ZU#ey0O*PmdXj3Q~2PMmg$1^xj`O}H#m4dY;a0E!-1fmb96H{v6HYjVxL*epT!27SLa9GZ7DX#nBoe;Sz$~Bwh!&IV;lj7plaBi zCrvFESuuy%H>{u2Nw&}r0`8x2xPVs)s8*Kbfnn+d!z9W3^b#NE@l{qu9EV-tm{p;^ z%zI@V!BWa4{2tVCp6t9kYh%WoVW)PRAN{#QpFtjuRxygxSZ^Lax1gw9b6M$ljlc|& zD8AF7FGZKz?xts<*x&o&XDK9GAAfx3mSufo-f%Qa>3^fGU{I2rx)pt7k)1emO->(v zLHOSA5pH(4E$)$u|CVLAxjFA7>Y*=x_OCo{Z#;g41=BxuXZVEyT>0>miuT5)f$;p{ zXtLp7Tkd@N4|I;s-=5P(;Z5ECqCt{vZnOT!sKwNe)6Fjs+8pa+0WAK|z9zT+4K(@( z5;CqWH6v<)eFIXv?V}+Hs7An1u0Q^b*~Ly(X>tq@b<+Haeu<2F=L<7gq>s}<-)iw+ z)iNa0PbC&8Yq@+F z+J?BM3+>}a^Y!0vD)b}d(3B2L4U%+k6h$wv3%WfKrJHn}2Vm#B4Ou@|G@sT`NEr@6 zD_YmNB+oQI%9HWf`i{zChdO}AZZK;iQl(yzdDnBI0%Ct|6waKPN;(i_Z^rC;nyL~B zK-#UT72yFEA|dsq=fOf)MdDj2c~_K87OcfF@QO_mAMY(=AOrmkG!Bw}kaHqTST$kT zicnKiqkEQl8Xlz}-P{&b5r9&&v$L1D{GLxLkVg)7g;Xv67PW!=i?;SL&8)Gpu}sX> zt5-AKI=>;<73zNa=>zhyKx*$ybbSDyI9hEtMxjsy0)YnS&E{ro+5_{PuHhc9Qcj3T zXlwXVor3X@x5`!XRunkTvPVzo7}8v0N1$T&G z!ni|9s9lYvEn1y;&K5vcjT1q#B6_lKzAceC@Ijt$B6>WO>XcWh++vx@J?{w7x%Wg) zMYM>NkV`li*}~QW+K5FL0jvuk%0Qo>!oZr9SJ%H~!Q$HF`Rw1r2=>OKL?)@kn;NFY z1z}(#f~Ju_D#Qr1?!Osix2NH8xi#oPreqE(Gylm$Y0Ts?-3EgPs3!SDt|}xglLoF0ZhgtiKVJOXbezi;vH!6P$-YkWDs# zIRw!ys%NM|^VuM(*4*@rLR9&+8Ix1CM4@$fH)5s$w)#PKncOA_4z^vc$upSOMFLoWOriA+Y9l|@O zFT~o9UBjt|F>(Jo??T^}P46`y*Y+Q;(Rm;-@j9s3N_6RFCn*;y98ZgerV<9bmv=O0VDLwivX-T>SPbby6ano-1pDbu{-BJFH!n{vFJ&CpP$fA% z!Z2b8C!_fhw}_*pq0@IVXn0H{bso`sc8~AIH!;_u{U? zA=mkh1t0FU$UuwltV-V$Vryb?Me*z=6KUBapp}Lu(s5K7Sq56AFlNJ1#Om)uPv3oT z?7Vb7sA)=PwV-$O#B4|OWaIQCCqhTqf19F{%jJmYoaFHJ9+uFnVzrUgrdvn{&NSRuLudnRd3oK<&8ZorgyN#2A|f%dYHg z>Cgu@=H})IL=sEby7P>k9TnA~BL@+LINR+~hZS~-D$yn;CJgiVwEH(dOhwh#*GJS( zB*Yz5l{e2nJz&tz4`;1WV{6{@Y(k(D=Sw?%lp_24i3tGw-QN3YinxGjP*)0IV~;Lj*gjWY5N2D^fGUj zpUvpdke0UggGzZdBd1fRHpqOp^2&2wRT!L~k)cr2?P_aFaeHxfy_!)9z30MPOtu_Y zPs_RTKGx*bV2oQ1lbV=0IhiA`>2zI;L+uFz%dKlEeZtKK8sI9H7b9DrzrY6tt zaM%bpLmNqQuF^xXA9JXIY4o)US~9C+qHE@7r^Y$u0T7%W(UIa&|MSC#54~Br&h+rq zK3CdpIQ(hUR1o1~%Y);(y1EC^Tzj%lbBgFz+s`9f>T%288qI($E7z~CsvOI`H&Mt*ztlUc}^^C%?%tywzuGnW((K zps48g)x!+sz;Ntn&0w6bndi==9NK%sg zAZx!P!P3%lt8uiGtE=&)xhTS35?*olv&fGlQ{zILUV{2@0LZ84`Cs;)J1{80JTp0* zo}O-V?)>@lE-ri^4!JSK!4G0xL!mejnu_&)YjHMs`d$NYiB1?20fX` z-a4ulkG|cdxD2R{ znNm+?`n4eg#^r|eXmrkBELe<)48`na$aFl`@??QlXXBAOy3>F?Vo~L(Fmt5~I-eH= zNc>KFKQHiyL?-Qd_j5e55W{s!*u&7}{F)0{7w$A5WS@U2*M5w?Rpj8sJ>^^{D#`7a zBmJ5Hg>TGS-ZrClG28f()Hm1 z0RaXE21a>S`SvIj>c5gEz{Z6sL~l5^2A_$GB71+XWpwdQCxP-q3@ z3jb08XB8>Jk@ua6hC&M~lxWJ=i^K%XC7ZdX%R6zmk zo>pP+pMvY~VpW93wG!&;Js|%3B+K7#asMaN=2m%(N<-5^7z9sTc&6P6!@6(CVRC`U z1K4Y$k(+G`vOye7RbJ4yL=%m)yMJx5Hv<{bX7*#lZAlJ*;#%GVA`p1Qf=Hd#lTHKs z78I!-j|Z92yuh8<*cEmsxQDdiUlgjZNR?y(@>q)GAlYEuvLWF@lU}J%)=i>_52I+U zB~5EyULh2)nKLwprLIUmo-DC^gVp~ja$gva7K(gSlK?Z{)Y{Kx!WY$Av2vjWv!S9; zB+y@rSe8Y<?NLy^t|4_LX z@gG#ay_$M%)v8qyW_2Qcgs-pf9;KVPX9h!5cXV#i#1Oi=x`Kj&qKxv)N`M*ruOIKY zo6VAZwm|M3>ZTpp{-A}ACG&#VpeEBm8Yi+)%ep5Rob zXZ(h82HevCQpm#JDpZe8MX}#ERD}9LX7w2!*s%`-hP(|V<({uieKj&}J(-~BY*e8h zBU$ru{d++_b3Sm*+Kz-jdYud@plDV1l8SJgBY{TqidFOG789G2AzFHhyRG;QO$=RN z>s~}az*5xbKjH^E5Q@8v8i4cqE)_<7NWz>1&V*$M~9^BUIIdI0euMoSegATAO}w= zRA-uLWa3d~_WrR*p~tYVDmC%M0mY7lr*CDbB%1xqw@Vxu|**JPU8LV zMIrEM&K+_$YE`e@JkPOma&km$ zBKXkmlPUKMScOEu9;4zY2{vRUv?>Uu6K8&iV5z!!nL-i#Fs{ R1OJSq;KvZAq$6%u{|#*S#?=4- diff --git a/application/sudoku_generator.py b/application/sudoku_generator.py index fb914a4..b455f98 100644 --- a/application/sudoku_generator.py +++ b/application/sudoku_generator.py @@ -131,7 +131,7 @@ def convert_to_image(sudoku, size=16, flipped=False): # fn = lambda x : 255 if x > 200 else 0 # canvas.convert('L').point(fn, mode='1') if flipped: - canvas = canvas.transpose(Image.FLIP_TOP_BOTTOM) + canvas = canvas.transpose(Image.ROTATE_180) canvas.save("sudoku_" + str(size) +".png", "PNG") # img = Image.new('RGB', (200, 100)) # d = ImageDraw.Draw(img)