From 100a4f5922d12fb714becb94496096a854e60bff Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Mon, 10 Apr 2023 19:31:58 -0700 Subject: [PATCH] Initial Sudoku display tool --- public/css/sudoku.css | 39 ++++++++ public/favicon.ico | Bin 0 -> 15406 bytes public/index.html | 0 public/scripts/sudoku.js | 40 ++++++++ public/sudoku.html | 196 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 275 insertions(+) create mode 100644 public/css/sudoku.css create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/scripts/sudoku.js create mode 100644 public/sudoku.html diff --git a/public/css/sudoku.css b/public/css/sudoku.css new file mode 100644 index 0000000..787a65a --- /dev/null +++ b/public/css/sudoku.css @@ -0,0 +1,39 @@ +body { + font-family: sans-serif; +} + +.container { + max-width: 800px; + margin: auto; +} + +.box { + border: 2px solid black; + width: 210px; + height: 210px; + float: left; +} + +.cell { + border: 1px solid black; + width: 70px; + height: 70px; + float:left; + box-sizing: border-box; + + font-size: 40px; + font-weight: bold; + display: flex; + align-items: center; + justify-content: center; +} + +.cell > span { + font-size: 12px; + font-weight: normal; + text-align: center; + letter-spacing: 11px; + word-wrap: anywhere; + padding-left: 10px; +} + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c53706e740ced8dfb4961ab80e49df7dada32d9b GIT binary patch literal 15406 zcmeHOd303O86PZdJ+`N!m5S9v>2g}YBZS4RwMIMzD^eujEG%&Y0!d~j1i~JjTG4w3CT>ts=59B-sBB0FK4rv?s z_9nkXTYH&Uxv=qN(q_A3gA{(RC-SUsa^!uVC(`!Z$`dlbtczGw-)7X2#^;gVgN*eG zKhwc|>-tT&`J;y4`(mPa!vQfb=Lu21<#YLCo@J~Xf71uC!F_l2Q}Z(aGe^a@hhOtX z#=Lu_@XX8tF=FT-QINAz{+MUky!#^c!>@WHgS1+H<@cf)()KM+y$AaF;$`UM$2`jx z&4`8+I-_*Of`(n{Hmmb17B%cJ;$ykrE#(#5FSS(#lVhOfttw53g8QU4(&)+XI*;Fg zem(d2ycou=W4}`l%UFm0KSx@v46i#9^iP(=pSQ$2jF}n(>qtXdEkEQ|ux@v8J9ZTY z%r{vk>qrCI-CF)!XLvN~zFhyf&irYY#X8KhFTJktZ?ydUo#T#V&Y3Em3TdFd=q%D+3m=GOgf_yPxPq{wiIJNG{TmA37c^Q^R28Zl$ct#Ra|VvudOE!d0{WgDGTX2$Zx>B z*;X48mul%z|CoACsq?@ThAdwoPzQ@@{#O?ey`j&KxfNE+Q0Gy|f{N#K!jcz{F z^6swk#vf^UmEX0Yll_799bI0Py{ir;<|;f&8VHDss>)i%VLgvR|2xqipXkY9UqH_- z3ZIfzm&R{podM6Gs?zu*%BBwLQuvJ09mVl0uwQ(jCy(<3a!M$(rmS@$_Lx%8eW^`tI`Cs;wrpsWbo`ntg9A6yYk)^Ywk1I+#+dN%8s{U2#$-8)F^Z;ZXm1Rzr zKI8t9-WR1hrVH^QC*kTZ|{A>uG%Y{w;q&btXSAU zzeD6a_z?E*!Q#ddL&dTs+furiXBq2ALt5;&GVi2Y4hYH`((m<5wGOlV;LG0XpVsg7 z(whgoy%}@zRN?HX*tF)avhP5jf!~cI(&T<%yO~$YnQmIMPml-w*LvfR-rP)CgDH0z4*It*ct8?=T3*{h$H=t7;=8eO?zplS82Qdxy~=Ow!?I7U@cTWH<}Apx(yP>a-Qh}w7v~nVz3cX$ zJmgj6pgk3ee6utMdjrQ@;amG?_xC^YDsm{3vdwg}&O14>Na11n+6(r_UFm-%C9hf* zWn1d^gqN#%DsjG2S+P%3@es^A=9i+( zH(8qDbPC&ku9+^gx%y_=8)9(SsNw_K9kIzn=1Y`~& zM6X>X@j*4gmesKP2N9n=%`bUokC#-I#%HmfF%?kvB2Q2KQD#;7>47z&_zbM|5Z3=e z#4}C;$4SIj4&p5SbX9SDpxGHedA3iyjdT20TKmD@Xb0oE5@Ni;+EB~AyNa7E&+k_4 zt9#`{pNe4fH26lrWSk-yJJ#x_ZnWhs#qU+)9~h9eR0ULu_P%k<6OX)|=4AQ+m8cWuQ+~h2jB@osnE^c~!9K z^6Fsoe8ig)MsoGaf&Wx(*{R#K@|54zFSdP$cN6H>4?+7LzAAi2^<;G{OMC^oSNDWY z4_0IurIlrgYtiOX%x%kYPTr3sDk1xCm|F+Hx5{eHGCo-mjQ3?9;a=r?dxEW3gLge+ zTOBcXjF}S;==LMt_A4XoH7~c01crZG%0f&OYk0%XVC-sQkg)($cjB$YvUTfc7q{Ca z>$w$bISq`@>@I5^$+i;%VtFI6=AXp4o;K?P)}bHH)Rwgt?bsnMG3p1i@^tK1jGOyi zk|)<4&hxpYxrpD-dN?OKt9)a8zm6l)mwiN!bQbA3_$Q~~`y_DgI`!%WoLj8g{_68_ z#syE|T$xDflywtBEBZ0)bwwV@8h6ZaTxL&_hLMjxqS5zQeoQ{USYhdEJ(Fmn z4EWuMF)*|bvLES|e(iNie%#xQ%b9fiTFj@1z;{O7hBbwaJvs(F8?0X1vG1Ytl+P1e zoIRm_kk@nku3X$B;+%eq-Lu;HF$!GdOg}t(_M~IyAXDxi#z3{}pt7_HXQ>99WsJ{s zut72nY1RF|b6Wy_wsNkDh*=rO&N$N#W;+}K%lnM;IQ4Tw`quq6?W(%Z?;5!uaf;(I ze%uR+l6A@ZzN%oe*s$tNkw1I6$a$bpEXiLhN;e+vfR9*%oBksT=dP1!@@E%`bx+ix ztw|Z}ca5^_Tvu4!IsBh(!}{$#g81-QeN^^K)2@8IoN?|ESJ#QmF`uU9C*zQ?iDJ#8 zJH@D5(o=ETk!jb8yGH*GZ8(%_1M?HcItA;Lcy9VHeFk=5lMh*HK?`+OeS5ZNO*jX%zOjmXalY)&nm*%e% z@QdU&GJpNB>pIbqmv<8@5XY49!}g^QeD_1@8rpB~;h|U5xVnm0kACQ-l>>%cQ9EqJ zck8ZzecD4^59h?hD=&N@#*MkV6E3zR=fOgGu2&##&Aie!bxPjQ=1)W*H+imyt*9J& zXKNINUQh$7kwd;~NalZ?0$Nc?YA$&OCXyZ#{yw zo3z)s>+)PEJ}Z9Q@%8t4!g1OlVtcq?lel^0@DA8+|MhKRic3198m5)I0k|Fn}zG{O!2!rGQ_>^T=C?x-SXU5 zY$VsgGetGxevenCagLt`TeMytKhnstnaR?AKl-M-xa{)D_qp!Kz70j^?@l-lYzNl^ z@6Bja6zodMGS-oXwCa6g(-ZPLp}$~%>h#XXE-t%t#P6RX?YofptI{SVWt=E)O61L% z8J}Ne7e{yLeD}or7Tha+y!|=jeOAF`H+>EFDv&cu4dHxS*$tL5{0!uk2rB4^7t z_Zem0`px+b~*!Y;JIzg$3F zJ%yWc=$HCj(hTff4e~w-{EVs6Z#2SWx14@|z}xP-K`z=5$38YaD@)kA6R^`xzq5(w zf(ZLZ!Oyg0T}MCCE@m}d$@-3WDb#^4lIN0cwS&!yhBg8Beuve#nJ=2J|87r>%}$JnCqz%Bld0so`dH=L? zThG}}rJa=d5d0wZ7*IDcU|;^OSwHL5&CWRf1Mqj6_iLAR|K3@_YLxOlg&IHe#E?BP z{1ZKlW@UNK=r6!~PAiWw8YBG|TF!N#)kh3Dp8wrwhE=aF+gT5r+0kB7w(h;RvW6K` zF^Q`nu88=c@p{+Zi?{cGTdq5Ln;u59GL9L}DG6a!h4y8h(&gYCoayyow@Sn z+hi_SVb#`C=0iE1?9W+XC~!LMzcEygh2MFsKlXq(l)hj(2R52-81>F5T1=gO8>|h= zqD;mn)w+QFUEkEs|J$L)XqC^J5cw(M*Z)(?rJdHs-#TH{8yf@sjK67ZKXrEHZIf9$ z_&x}IaTs$^e)q+;tXkY)Zj1Er>y**vtSLMn`=rgocL=`vO=g(7Ru{O)>xtfuHoUJM z2fiUTwWm6G)#F57?uTlbuo?gIxuT=E{m0y2 zPu|p9WcIsTD$g0qGknk9jjLOhyrT&-rv3%n!MAWci*@BJL)sUgYLeg4Q3k$xU|)J6 zzNQ+ZRi1A;@CN91=*3t_EpyQZ`Yv|f#FJ(t`kn12FV0$Jxt`c)-n&`p?dkfgapDr( zvrWLdI7q+xsX(J?8#v!dLq8eV|BJK5-QDpmd%hjVEofO#TeZm=1SvAHzeLD+t{>^`P|GezTXq~LH00wP4#sT*z1A+16TT8 At^fc4 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..e69de29 diff --git a/public/scripts/sudoku.js b/public/scripts/sudoku.js new file mode 100644 index 0000000..84cae43 --- /dev/null +++ b/public/scripts/sudoku.js @@ -0,0 +1,40 @@ +window.onload = (event) => { + var params = new URLSearchParams(window.location.search); + var puzzle = params.get("p"); + if (puzzle === null) { + return; + } + if (puzzle.length != 81) { + console.log("Failure: puzzle url len is " + puzzle.length); + return; + } + + for (i = 0; i < 81; i++) { + if (puzzle[i] != '.') { + document.getElementById(i+1).innerText = puzzle[i] + } + } + + var marks_param = params.get("m"); + if (marks_param === null) { + return; + } + var marks = marks_param.split(","); + + if (marks.length != 81) { + console.log("Failure: marks url len is " + marks.length); + return; + } + + for (i = 0; i < 81; i++) { + if (marks[i].length > 0) { + var cell = document.getElementById(i+1); + if (cell.innerHTML.trim().length > 0) { + console.log("Pencil marks in cell with number: " + (i+1)); + } else { + cell.innerHTML = "" + marks[i] + ""; + } + + } + } +} diff --git a/public/sudoku.html b/public/sudoku.html new file mode 100644 index 0000000..0a582c1 --- /dev/null +++ b/public/sudoku.html @@ -0,0 +1,196 @@ + + + + Sudoku + + + + +
+

Sudoku

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +