From 134b1b2f52fc778cb9c1e7c533ce0aff00dc53b9 Mon Sep 17 00:00:00 2001
From: p9malino26 <pm3g19@soton.ac.uk>
Date: Sun, 26 Sep 2021 13:09:32 +0100
Subject: [PATCH] Deleted/untracked unneeded files.

---
 src/.vscode/launch.json                       |  28 ---
 src/TestMain.class                            | Bin 309 -> 0 bytes
 src/UserData$ChangeListener.class             | Bin 223 -> 0 bytes
 src/UserData.class                            | Bin 1732 -> 0 bytes
 src/Util$BoardPosVec.class                    | Bin 1558 -> 0 bytes
 src/Util$Direction.class                      | Bin 1206 -> 0 bytes
 src/Util.class                                | Bin 497 -> 0 bytes
 src/com/patryk/mathdoku/Action$Type.class     | Bin 913 -> 0 bytes
 src/com/patryk/mathdoku/Action.class          | Bin 409 -> 0 bytes
 .../CageGenerator$BoardReadyFunc.class        | Bin 247 -> 0 bytes
 src/com/patryk/mathdoku/CageGenerator.class   | Bin 2322 -> 0 bytes
 src/com/patryk/mathdoku/LimitedStack.class    | Bin 1558 -> 0 bytes
 .../patryk/mathdoku/LimitedStackBase.class    | Bin 377 -> 0 bytes
 src/test/.vscode/launch.json                  |  21 --
 src/test/Action.java                          |  22 ---
 src/test/LimitedStack.java                    |  94 ---------
 src/test/LimitedStackBase.java                |  14 --
 src/test/SampleAction.java                    |  12 --
 src/test/TestMain.java                        |  14 --
 src/trash/Action.java                         |  22 ---
 src/trash/CircularActionRecorder.java         |  52 -----
 src/trash/GameContext.java                    |  46 -----
 src/trash/Generator.java                      |  67 -------
 src/trash/MathDoku.java                       | 186 ------------------
 src/trash/SampleAction.java                   |  12 --
 src/trash/TestMain.java                       |  14 --
 trivial/.vscode/launch.json                   |  21 --
 trivial/.vscode/settings.json                 |   3 -
 trivial/CageGenerator.java                    |  48 -----
 trivial/Permutations$1.class                  | Bin 720 -> 0 bytes
 trivial/Permutations$Sign.class               | Bin 993 -> 0 bytes
 trivial/Permutations.class                    | Bin 1934 -> 0 bytes
 trivial/Permutations.java                     |  67 -------
 trivial/permutations.py                       |  41 ----
 34 files changed, 784 deletions(-)
 delete mode 100644 src/.vscode/launch.json
 delete mode 100644 src/TestMain.class
 delete mode 100644 src/UserData$ChangeListener.class
 delete mode 100644 src/UserData.class
 delete mode 100644 src/Util$BoardPosVec.class
 delete mode 100644 src/Util$Direction.class
 delete mode 100644 src/Util.class
 delete mode 100644 src/com/patryk/mathdoku/Action$Type.class
 delete mode 100644 src/com/patryk/mathdoku/Action.class
 delete mode 100644 src/com/patryk/mathdoku/CageGenerator$BoardReadyFunc.class
 delete mode 100644 src/com/patryk/mathdoku/CageGenerator.class
 delete mode 100644 src/com/patryk/mathdoku/LimitedStack.class
 delete mode 100644 src/com/patryk/mathdoku/LimitedStackBase.class
 delete mode 100644 src/test/.vscode/launch.json
 delete mode 100644 src/test/Action.java
 delete mode 100644 src/test/LimitedStack.java
 delete mode 100644 src/test/LimitedStackBase.java
 delete mode 100644 src/test/SampleAction.java
 delete mode 100644 src/test/TestMain.java
 delete mode 100644 src/trash/Action.java
 delete mode 100644 src/trash/CircularActionRecorder.java
 delete mode 100644 src/trash/GameContext.java
 delete mode 100644 src/trash/Generator.java
 delete mode 100644 src/trash/MathDoku.java
 delete mode 100644 src/trash/SampleAction.java
 delete mode 100644 src/trash/TestMain.java
 delete mode 100644 trivial/.vscode/launch.json
 delete mode 100644 trivial/.vscode/settings.json
 delete mode 100644 trivial/CageGenerator.java
 delete mode 100644 trivial/Permutations$1.class
 delete mode 100644 trivial/Permutations$Sign.class
 delete mode 100644 trivial/Permutations.class
 delete mode 100644 trivial/Permutations.java
 delete mode 100644 trivial/permutations.py

diff --git a/src/.vscode/launch.json b/src/.vscode/launch.json
deleted file mode 100644
index 277a23c..0000000
--- a/src/.vscode/launch.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-    // Use IntelliSense to learn about possible attributes.
-    // Hover to view descriptions of existing attributes.
-    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
-    "version": "0.2.0",
-    "configurations": [
-        {
-            "type": "java",
-            "name": "Debug (Launch) - Current File",
-            "request": "launch",
-            "mainClass": "${file}"
-        },
-        {
-            "type": "java",
-            "name": "Debug (Launch)-Main<src_311626d8>",
-            "request": "launch",
-            "mainClass": "Main",
-            "projectName": "src_311626d8"
-        },
-        {
-            "type": "java",
-            "name": "Debug (Launch)-TestMain<src_311626d8>",
-            "request": "launch",
-            "mainClass": "TestMain",
-            "projectName": "src_311626d8"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/src/TestMain.class b/src/TestMain.class
deleted file mode 100644
index e7f9705e0a4b24a56443a47ac8cf938ed973e452..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 309
zcmX^0Z`VEs1_nz85iSNM24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc1|FZx+{}{Hl;D!Y<ZLbmb_OnxZf-^f77b635?)3Ij*!&i65qtk
zJVpi<=lqmZMh1SL%)C^;(%hufqL9R-oK!{zmRzvBm`1b@!q(uDqRhN>Yt1l52Cm@z
z(xT*4w@i>?UYLP;AhisN3_J`>3?RV7zzA|W10w?;0|SFB10w??0|NuA)^-NQjSLJ7
zj12q?3=C{wK}H5n1_1^^s8TfsX0Q=lyBXLcIkq!!`XJPULWO~WnSqmmg@KVlh=GBD
Hi9r|uKbkdp

diff --git a/src/UserData$ChangeListener.class b/src/UserData$ChangeListener.class
deleted file mode 100644
index 70e2f5037acc5cb9650070188eebb915bfa28829..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 223
zcmX^0Z`VEs1_nz8K6VBsMh5ZF;?yFS#F9i6=ZwU>^i-eB;*!+7)FO5U7Dfhvti-ZJ
z{hY+SbbbG%tkmQZMh4#eJdkRL;uJ;(W)00SMh33n{L-T2RJY8WR7M6~n2~xQ?Tic@
zeyPPJ9{I&3><rwD3>+|7Mg|_wyu8#R=bXgi;?!bB20n<PFc+{fGB7eQGk^di3nK$7
l0~-Sa12Y3V0|NsS0|x^qnC4>OVPIh3VgRY-V&G-t1OWU?GM)ec

diff --git a/src/UserData.class b/src/UserData.class
deleted file mode 100644
index 121c1f9d162a1ddcffebbc8078e1a9cb58579024..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1732
zcmX^0Z`VEs1_n!pP%Z{024;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3U^(Bjl0m&B4pMh32={KTS^@XVBw3`Pb<Pmn@B
z9tM5}0Y(Ov6tD`WXiqK%4hA6}24Rp@tjRg4iA5k0W)LC9!ypb4=FiJ7$xO?v^vNtP
zNzF?w;$o0wkYZ<$=3$UwkcBz0v?Mb}-?6ADv9g$vfh{?|pwd5$k%3(!+S5}r8f>>b
z4}$`OA|nG|az<iadMeB`Mg~bAn449cQKYQ78I&1R*cnuL7}P)x5yzp9k%2cq59DWv
z_7pA#4F*ki1}z>2Z3Z1i27%C$%p4UbP+$b)7l)-LGcvH3<a_3&q*j1~&=ce#Jst*q
z1_MS0mbA>A97YB<u*1XH8H^Yi#1SzNTvC*om+n-WnUewv2SWyCE(SveQyvC026ILR
zw#0&h)Vvf%1{n=cO&=V(tU)>~K{~8J3Z3yQwBcc}Ww2vp;3&z5*v-fwqJgQ!nvsFU
zIX@+pk%8YQGcVPzG&d==C?qi{CzX+bMZ;4wjFEvQH@_^EkwHuY9@^HL2qq%~3n<PQ
z8F-Q9!x$L^6H`(k!HS458H5`27z5eF8(fl@ob8)f0CfOgacW6eVoqtQV~KMrC~!e;
zK#LM<up9Z((Nv0R_@GCgwWcQ{16Oc<X;E^jTPDbZys%`U2MTgV25!I9;u7CfP!JR|
zGVplj<)s!m=Oh*vrxr6Z@S%E!ogtW!fdym-BLg>55@Aqe;9y{4U|?WoU;t$q1`yz8
z-~myfWX!<80LrJV3~UUH4E78R46+Q242%p646It)85lP*FfcGOI504Pr5PA_7#JB?
z862TXT^X3cM$3YfYDsTpVAs;x!oUu~8GE?4GVp3`V-Q3bA;!SUz`(%Az{0@Kz{w!M
zAi*HSAj2Tcz{%jm;0!e~5^ALGZU&CX?F=G5+91=mGO&YaUXYO>J_y5Y5Y^rQccl~q
z8v_G_6axo?G=l(x41)xNEQ30O9D_E4JOd+x3xg}v8cPNiu*)U2w6`$uf{X*<j2#RT
zAS<>ph$39g2M#$E1`!5T1_=f=21W)q26w12N(@Y3W7xE`w=&2f^ngN?fkBgjl|hSv
z5mfd-)muTsR#0mTgWNF&9uT#YL5Yz8q?HLA&JgQ#8Q2;07z7v$7(BpH$0)$S$l%G~
z1vN*Xff?*7eyuGGyxQ9s)Mfm&usGU;fs4VEfsetAfsw(R!3U}t=4dXMX1z7=@B<|R
z1_qEbg~2fnN)W0HOyC5;2~y9zgFzSMSV*FP_|uMogTbDG5tP57R!nAKVPIikU~t>b
zU>Lcb!Ptk{Rt6Nnix`ZU?PMV=X>g2!g)?Lm^tLgWgtss=F8}{nTYzgDgGG1?6XWv#
zXSBC5Sc9S$5;#f>91IK$&I}w3t_(s9?hG;v9t?U6?hGajUJTX@t_+S0KHvZoW?=ct
zz{SpB$oPkWlkpdW{4WL`24)6d1_lNu20sRW1_lNe21W*Dh5!Zz1|bF}24w~ghCnt>
M1`UQFh7bl$01>4~Jpcdz

diff --git a/src/Util$BoardPosVec.class b/src/Util$BoardPosVec.class
deleted file mode 100644
index 95937138e3616da9ea3d85912a3998f92b33b797..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1558
zcmX^0Z`VEs1_nz8FHQy~24;2!79Ivx1~x_pfzXo792KYh#G;gd{Nk|GWJU(o^30Ty
z3`Pb<Pc8-y22OScE*=JM1|CKRfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-5<5l)W)00S
zkkNcR4E!K-8H+$XK^_JnFfW;lL4-k+ok5I;L7YK?k%13kly4%)GLE#I{QM%9%rZs>
zRt-;2O;0WcCI%^x#nMobFp!8W4}%<oJR<{pNxo-ZN@@kzVz638kXj{11{MuZ%`h$o
z6$Vvy1~ncAb&zc=AWt$f@FeFX<`#tH2PNjEr*bf8GBR*zsHW&BsHSLgF=#XBuruiL
zFz7MpGcpJwoadQWlA4}c#K^#2mY7qT>Yv8QAg1A|>4Txdnv21Z!HAu~n1{iH!4xI5
zf=h}r^U@g^*wXTgauZ7!87wuB^h0E=qmhIl!E23d3se;&14nUcNjM~iSe)}yQW+We
zeKPY>{YrC_Qj0<olX6lS8JH7OQWzQ3G<-lFM~+=<O-vz129~_kiV{W!5e@9JRjEb!
zj0|j<#XgC}CEyT`Vr1YAE=f$z_Dw8+TFDI!T*so+L`DYo%;K=boXiwP29A<^h|?kF
zBZ3VgYR$;N6`WsMl$`383353n$i;dfRg4TAeyPPJ9{C_Uc|7y-Qj45(5{rvdiy0ZX
zkrFI}A_Efx2Ll5GGXp0mO*4Q1KLZ<x0;N6%1_o{hP6jguB?d+Ya|Q+mMFvI&Mg|53
zR;kSlj2jsk7#JBW7#J8p$%}zOhk=Dbmw}Oin?V|?+!&N$7#JA%wYD>`Ye{cq;MJ1Z
z${>KyD8#_Rz`$V0z`|g}z{z0Dz{g+$HUMUy69Wqa69WT-9K?W442(M%gh9qgYi(iR
z-Ne9{k%GlMGX@q0a|V6}3kF#RO9n;;O9m^bgNzth!RATrW?+g08KJ#}fj2>G3xk06
z76yTY?F^C|;GSXw`_zVkk-?e)M1uUU#=rs=<pb;A#vsFzu$@5xU5^6;Cxb0qj}q9A
z3=CW#J<QBl>~LXVWUynfhq}>`ff;Ov9LRl}7#LYn7BC2doCsyJvn*#|VP3<)z`z6!
ze26<e7#u+H!oVcs0E!|<xN*r0EDX$`Kn59S12V@}T1y%nlFCtA8F&{kh{<SygyBL0
z^BGuK)*#s+1onX+0~bR8gDyiLgFZtD*ftIZroRljjEo=)o!}OFGcbYOuK}`fHiHs~
z+Qh)Ph(SVY3xmLH20;)77QpV42(a0#3`}ZZpU5%DLjy()YB1j>21byf86blaKmh?s
zg^+-VWng4*W&i~#D8kGbSiz2w6VhPa%fJ!I4AQuRK`S_t1*99q+QDFe9)Y<G%nYvJ
Z0Cr<=2h%DH9^iD&$iT#)!r;lk2>?bP4ZZ*X

diff --git a/src/Util$Direction.class b/src/Util$Direction.class
deleted file mode 100644
index 9d4acba5882d6b8880736640d6dd19f74351d81c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1206
zcmX^0Z`VEs1_nz8S55{d24;2!79Ivx1~x_pzR;4)92J+$qSWM)%=|n?26mM&N1ssF
zU`7VPXdhHbYc2*322OScHXa5p25v?M*5sW0yi`U85e-eBti-ZJ{hY+SbbbG%tkmQZ
zYc2*}20nHMejWw^20=y!K7<0-ywY4o2KKVVoYGYPG)4wf4J6&pIf=!^)<^=uB}JKe
z>DI_LfD8beFU-Rr!XV1Xz-E(~msw)R$RLJn6jZ0DW*ErN;yerz43dltY-Op*CHX~+
z3_=j!Iprr7r3B;`hovT4b1+CVGO+sj2ZeaBGsrSB2!Q>Mq=Jh<hCv==sRAPdtA?ki
zW*8R(6N3^+M46F61Doxbwm{sY%EKVdpvK4`08s#s0c#Eh4MqkQSI6KGkh8UT7&I8v
zI2d#o8CZk;Lqj}3f_gj*Iv_y<Mh2E}SBOF*9tH!Dd2HZtEoNj8*3iU=Kt=`@=lqmZ
zMh1SL%)C^;(%hufqL9R-oK!{z6)cX|M0Xn_17~n%dR}5lX;CU8gQx~X9w~sVHNzMg
zIBb%0pb^5X0TNI`ice7F*+BFm{A_2<$iNkxUs{x$>Xr#|4JRn%^+0Kck%7Z6wYbD1
zzqo{*!I6=H1ti1Bz~h;hms$i)Evdzf44iPY7#X;c+~Z)#z{J4Iz`(%fAPEX@1_lR7
zP=JDI9R@WpZ2+Pf1VQP8fk8kDlrb0>7+4rM8H^cB7#JB$85kIp7#JBqfNK*2<2DBN
z0}LD+7#J8B8O%UtgXLNnI2i;O%;D;pz@l72Oj<h_cn&ZyVX9|h5MfYeU;>-3!@$hI
z!oa}5qopmgok2)TcPoR~Mz{@p49pA+3_T2N4808841Ek13=9lR43-QW3|0)*P#YI8
zaDW`hP_dhVDN;y^c{hVhBop&?2D$AFiklf!z@q9bAW>!(n5ZULRGSqf$^uub3l`O9
z1Bo&-!PFYE?`2?$WZuM}5**30i9s_sl64b<Zg3>qCI-Xc%?ykP*NQQ)GB7Z-GKev>
zG3YR~GdMAHFhnr4Ft9+~ZNp#-cE25iJ(zZ2aAII!5Mp3rU}A7!aCVSnkYR9OaADvC
E0GAi}V*mgE

diff --git a/src/Util.class b/src/Util.class
deleted file mode 100644
index b038078cedcf2dbb78d12ab1f3babf73fa0a8794..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 497
zcmX^0Z`VEs1_nz8DJ}*k24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc2A0s0%p67r7U%qwR7M7VpUk{eztY^K)S{5Yq?}Yn2A<@c#N2|A
z{Gi0V^i)O$Rt-;2O;1J!-r$nN<ZR!>0;n?1<c!3kkbKX)5=I6V4QG%NuHgLAqU2P!
zOpr00AZzqM4q{~B_Dd};@l6F;Qq0aE!pOh}l2mcYEJ{r-$;{7VXAom#5CDrg<tG-U
z1mqWor6w~n@Ob9sr4~8oBo-H^7Bez%!Zk25a3d*XP-I|dU}69PW(G!3P%tnua56A3
z$TBc8FfuSOuxf2*VBE;Sz`)4B#lXP81{P#v;AG%t;DIW2W?%vvAt*J6ft7iUl=MOd
zc4?NBHBxIB7#Ntq+Qb-G85kI(8CV!(7}yx(8Mqk~82A~K8F(2O7+4sX*f<zC8Tc6Z
zp$5t_FoCUMl@j2u0~vyBcO?Teg8<lIK?WhPi<lUM8AKVx85kIZ7(i@x1_=jA22lof
I21y1^0F+Nv8~^|S

diff --git a/src/com/patryk/mathdoku/Action$Type.class b/src/com/patryk/mathdoku/Action$Type.class
deleted file mode 100644
index 0eb336881e11ffae88608046c16de650a42a495e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 913
zcmX^0Z`VEs1_nz86HW#u24;2!79Ivx1~x_pZpY-3%=|o+kjjEoMh143Fh`$I*I-5l
zzGxpL8EY;E4hBwk1~wiBE(UH!2G-=9{Jc~~1`!QSpRB~PME#t^ymWp4q^#8B5^F97
zUIspP27Vp}0R}-v20nxW*SykPMh5n>#GKMp|1?GhQw=2D&N+$2#nwmy!6ikRdFj^3
zHh>HOn=j16Ai^NZ$iQZknU`5&$H*XtY!p<dr)C%jgE%9DptFagpSx?kv#XC!JlKO=
z3``8dppcN_VGw7KW@O++@ht~~EF%NAvyZD|P`s1BV~`6-sXPyZEQ2%$gCZjXTd<>V
zfR8IkRGEiC5o7=x*i*%f3<4UOs6ofbz~Y>rlFG=y?~|FA>Q|bZlv)&$n3R*s$e@VD
z(V8eOVPxP8&P>lsEGaEYWn^I1&<tZ_;IK)~f%;k=DY!skV}qjE&YF>dD>%QjC^^+F
z6J#GWvh_eQ!pOkkms(unkzZWG&S1#Mzy^tKMg|_wyu8#RaBQR&GcvG%Qig*80}}%;
z0|Nt#gCr=x7#JKRL7@Sr6&a)%7zCt1=?SEQfs;XnL6w1#L5+cdL5YEp0R*@<F)(gp
zU_ZdXv4MesfssL-fq{VyEXTya$soX>0awoi7UdFR(%QkmbAW*fQ#}(X>KT~8=F2lM
zGcYqSFtBTB%WP*5+K6GeCIbTl6N4552ZJ_)7SxhR1{RQ;7#w#qFhvT9F>hy(*vuda
z=E$&sIdWi*0xOuK#I~1#DUx{;gJf_d%O(c7;7Ha@3`)V985l9GV_|?;sKcNOwpfor
YA50rC7%?y~a4|44FfkY~7&}M+0OYQ)5&!@I

diff --git a/src/com/patryk/mathdoku/Action.class b/src/com/patryk/mathdoku/Action.class
deleted file mode 100644
index 4c7f6c76eaa9d75da1b3a443fbfffe63f48c83a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 409
zcmX^0Z`VEs1_nz8NiGH^24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3T>$K;aC{5(bmmXgYXR7M6~ABccTNM%8)H6w$7
z28w`Y7$XCVbAC!HBLlxrW?rgaX>L+#QAlD^PAVe<dwOaKNE;&qzlJ7?Hbw@n;QZ2}
z<W#pzkV0;V9eN<AGBR-cr52a?rh*JAW@iv%WPnP8oxsSz<C&M2TI8IQSX`W1%*en3
zvVldBfrEjGfq{XMfeGXf1_lNu21W)}23`h620jJ`1}z3AusoO6b_PZ*?X3*#8^Nmi
z85kJ&7?>Ft7}ywC7}yy=p~1)?z#s_KC(FRdz{tSBz^b){fqes93maIFn}L}@2yB%w
bg9rly0}BHqgD8VI0|NsWn8m>$;UED3G|@=3

diff --git a/src/com/patryk/mathdoku/CageGenerator$BoardReadyFunc.class b/src/com/patryk/mathdoku/CageGenerator$BoardReadyFunc.class
deleted file mode 100644
index 198ebfedaea20861c0f8ef33fd4c395b721ce1b2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 247
zcmX^0Z`VEs1_nz8K6VBsMg|$@#Pn46)V$Q9#FG3X6{q~fqLiT2#FR?6(!6AL1{OvJ
zfvm)`ME#t^ymWp4q^#8B5=I7|{5*t0Mh0FDpU~peBA3LHL~G43Mh33n{L-T2RJY8W
zR7M6N6btk~hA}d5_@x$?c;pwCurqKoGVr1(VPxR(%*#tHa?VLCE>10GWZ*;C1#%P{
xBLgD?GXn@PvM@5RGO#f)FfcQ)GcYhPF>o+&f@v-W9tH*mE(VZVE(TsUP5`V+JHr3~

diff --git a/src/com/patryk/mathdoku/CageGenerator.class b/src/com/patryk/mathdoku/CageGenerator.class
deleted file mode 100644
index a1f6bbe924f5f6f42f7ee5d7a069e9cc1e0e5905..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2322
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

diff --git a/src/com/patryk/mathdoku/LimitedStack.class b/src/com/patryk/mathdoku/LimitedStack.class
deleted file mode 100644
index 978c7c81f7d5fbc02740eff84f7a426aada5b131..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1558
zcmX^0Z`VEs1_nz8FD?cq24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3TppUm9MlGK#olEma}Mh2GR%&JsI21ZYiGCm##
zevlfLjMT&wkboc$gAho7JvXr;II}91ok4_=fz2_wBr`t`BrnFpAkHAc$iR}4Sdz%d
zz!~iWk+bGv;9!vAVUT8!VPs&-EOsl+$pO123M3)N!ypfGIeS5Vfk$d$3P?<mhe3%!
znUR4dCqKV{k%3ji(^C`dCRH8=H3oG?24R)N;^NdIkj=#|nZ=1oIjJd(42)6i44RA#
z5{NKxgsE~ZD#|b7V$fh<2AQwJ!=THc$H>5305YCSLlfDh20RRg3`UF$ECr>-8H@}(
z8Zb#u%`lK=6Og<qBLg>F0wiwEV8PB{$-`g;@+3dP1<pB%#l?&aVkxP`nMJ87a0dmK
zB$kvGvoqK*G6*0?f>UB~DkB4nhNos2BLj<beo87M1HVsZUaDVdZc=Jd2*|6947}h7
z^Gz&(^4T+sU2_XcDj69>G&Fq>wnNf@H6w$V2Bs+33Q;T)AgeiSl5?QxhBG)bJuk7O
zv?!I4K@ZayA9Uy2zyi$9nvsDkIKQ+gIn^yQCzX*w5Lu}n$e9d^3>*wh42%rc46F<S
zp!CH60^AHdAPSTK!L&Go1OtPB1cMrbIs*d(4+A3uD}yZqBZD0S1A_+x69W?i1A~m#
zb_PZ*=B*6uAc9v*dMkr~mh@f*;jIj!8yOfF7#Zvt7#O4&*cccXI2c$Mm>D=3SQz*i
zI2nW)xEQ1vxEUB33>i$Jrg}55fK8Rt+QuL`lYw1p8-uLY76wr*tt||^T3Z;{w=pPa
z2ZPLI0-Gzuz{0@5z|X+WAi%)QAj}}kAj06lz`(%Fz{t(O1WMvigDn_X7#JBC7$meJ
zw=l4?q=4KDHk4%>gTht@UXYOxr}8l{GcYiSGjK6TFo-iqf}LjsHANC^Gy?-8LOC1Q
zSUCnpP}+tnOMv>qcoT!lECwNnU$}QOXhd#j(AtmgA0r=xo3uADFfcG7c}<ByltGz6
zok4}ckU<sZHBkme21f=NsBH!ej9@o_!)F!)JIitg7Unf@bJ)O=T424b3{2b(Al1@v
z-6r64z`!5~3SF%&3<3*qn4k|cf!~3VfeBPnK<!rqm4yrp44l$32_ORsKz2jI5@NTp
zfFpx0gA-J_EY!KITH6@F-bGf*DB#Fo$lwfBs>Hwyjtnj>?E?(LGTRvR(Ze00-UX^2
z<PuPt<OHkV#$b%0oPmSEl>y``P!cu)hYSOQpb*D41~XX5ZDvpbX=4IM0vlKfBh2eO
QV6VG@!`7X_15A4Y0LHBOm;e9(

diff --git a/src/com/patryk/mathdoku/LimitedStackBase.class b/src/com/patryk/mathdoku/LimitedStackBase.class
deleted file mode 100644
index c0b77352a8935f00ecfbb56d0c8c3c4172a628a5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 377
zcmX^0Z`VEs1_nz85q1V9Mg{?&%-qb9)Rf?o#N=$J#Nt$T1{OvJfvm)`ME#t^ymWp4
zq^#8B5=I7=g3{s)Mg~z0A9Oiu%`ip=&fv`Syu^~yqEto(HjNNhu%H+g#hxJ5>>w3j
z7IQ&<0V9Kmh9;)5j0~(Anjx;%j126V#jd#pC6$Z}%o>_ej0|j<#criJIgAV%Hm+8f
z8tpKJ7#X;N^Gl18Q{6IiQW+UU(S5B4@)R2*10w@70|>CPFfy<*urV+)urn|)Ffnj|
n`J8Y*7Yic;Hv<ox&&$Hdz{kMP01iA5&A<fJDaarMHbEEw(+E;m

diff --git a/src/test/.vscode/launch.json b/src/test/.vscode/launch.json
deleted file mode 100644
index 7ddb697..0000000
--- a/src/test/.vscode/launch.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    // Use IntelliSense to learn about possible attributes.
-    // Hover to view descriptions of existing attributes.
-    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
-    "version": "0.2.0",
-    "configurations": [
-        {
-            "type": "java",
-            "name": "Debug (Launch) - Current File",
-            "request": "launch",
-            "mainClass": "${file}"
-        },
-        {
-            "type": "java",
-            "name": "Debug (Launch)-TestMain<test_5834f569>",
-            "request": "launch",
-            "mainClass": "TestMain",
-            "projectName": "test_5834f569"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/src/test/Action.java b/src/test/Action.java
deleted file mode 100644
index 132fedb..0000000
--- a/src/test/Action.java
+++ /dev/null
@@ -1,22 +0,0 @@
-public abstract class Action {
-    enum Type {CHANGE_CELL_VALUE, CLEAR_BOARD, SAMPLE};
-
-    private Type type;
-    private boolean flipped = false;
-
-    public Action(Type type) {
-        this.type = type;
-    }
-
-    public Type getType() {
-        return type;
-    }
-
-    public boolean isFlipped() {
-        return flipped;
-    }
-
-    public void reverse() {
-        flipped = !flipped;
-    }
-}
diff --git a/src/test/LimitedStack.java b/src/test/LimitedStack.java
deleted file mode 100644
index 6157315..0000000
--- a/src/test/LimitedStack.java
+++ /dev/null
@@ -1,94 +0,0 @@
-public class LimitedStack<T> implements LimitedStackBase<T> {
-    final int maxSize;
-    int size = 0;
-    int head = 0;
-    
-    T[] data;
-
-    public LimitedStack(LimitedStack<T> other) {
-        this(other.maxSize);
-        this.size = other.size;
-        this.head = other.head;
-
-        System.arraycopy(other.data, 0, data, 0, maxSize);
-    }
-
-    public LimitedStack(int maxSize) {
-        this.maxSize = maxSize;
-        data = (T[])new Object[maxSize];
-    }
-
-    @Override
-    public void push(T item) {
-        if (isFull()) {
-            head = loop(head, 1);
-            size--;
-        }
-
-        data[loop(head, size)] = item;
-        size++;
-    }
-
-    public T popHead() {
-        assert (!isEmpty());
-        T a = data[head];
-        size--;
-        head = loop(head, 1);
-        return a;
-    }
-
-    /*@Override
-    public void push(Action item, int pos) {
-
-    }*/
-
-    @Override
-    public T pop() {
-        assert(!isEmpty());
-        T item = data[loop(head, size - 1)];
-        size--;
-        return item;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return size == 0;
-    }
-
-    public T[] toArray() {
-        T[] arr = (T[]) new Object[size];
-        for (int i = 0; i < size; i ++) {
-            arr[i] = data[loop(head, i)];
-        }
-        return arr;
-    }
-
-    @Override
-    public boolean isFull() {
-        return size == maxSize;
-    }
-
-    private int loop(int index,int offset) {
-        return (index + offset) % maxSize;
-    }
-
-    @Override
-    public void clear() {
-        size = 0;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append('[');
-        for (int i = 0; i < size; i++) {
-            sb.append(data[loop(head, i)]);
-            sb.append(", ");
-        }
-        sb.append(']');
-        return sb.toString();
-
-
-    }
-
-}
diff --git a/src/test/LimitedStackBase.java b/src/test/LimitedStackBase.java
deleted file mode 100644
index 2d44818..0000000
--- a/src/test/LimitedStackBase.java
+++ /dev/null
@@ -1,14 +0,0 @@
-public interface LimitedStackBase<E> {
-    /**
-     * Pushes item at the end
-     */
-    void push(E item);
-    //void push(E item, int pos);
-    E pop();
-
-    boolean isEmpty();
-    boolean isFull();
-    E popHead();
-    void clear();
-
-}
diff --git a/src/test/SampleAction.java b/src/test/SampleAction.java
deleted file mode 100644
index 1f2ea72..0000000
--- a/src/test/SampleAction.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class SampleAction extends Action {
-    String message;
-    public SampleAction(String message) {
-        super(Type.SAMPLE);
-        this.message = message;
-    }
-
-    @Override
-    public String toString() {
-        return message;
-    }
-}
diff --git a/src/test/TestMain.java b/src/test/TestMain.java
deleted file mode 100644
index d9de9d3..0000000
--- a/src/test/TestMain.java
+++ /dev/null
@@ -1,14 +0,0 @@
-public class TestMain {
-    public static void main(String[] args) {
-        LimitedStack stack = new LimitedStack(3);
-        stack.push(new SampleAction("aardvark"));
-        stack.push(new SampleAction("pig"));
-        stack.push(new SampleAction("dog"));
-        stack.push(new SampleAction("sheep"));
-        stack.push(new SampleAction("wolf"));
-        stack.push(new SampleAction("horse"));
-        Action temp = stack.pop();
-        temp = stack.pop();
-        temp = stack.pop();
-    }
-}
diff --git a/src/trash/Action.java b/src/trash/Action.java
deleted file mode 100644
index 132fedb..0000000
--- a/src/trash/Action.java
+++ /dev/null
@@ -1,22 +0,0 @@
-public abstract class Action {
-    enum Type {CHANGE_CELL_VALUE, CLEAR_BOARD, SAMPLE};
-
-    private Type type;
-    private boolean flipped = false;
-
-    public Action(Type type) {
-        this.type = type;
-    }
-
-    public Type getType() {
-        return type;
-    }
-
-    public boolean isFlipped() {
-        return flipped;
-    }
-
-    public void reverse() {
-        flipped = !flipped;
-    }
-}
diff --git a/src/trash/CircularActionRecorder.java b/src/trash/CircularActionRecorder.java
deleted file mode 100644
index c9ae939..0000000
--- a/src/trash/CircularActionRecorder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-public class CircularActionRecorder<E> implements ActionRecorderBase<E> {
-
-    private final int maxSize = 3;
-    E[] actions = new E[maxSize];
-
-    int head = 0; // the actual index in the internal array reflecting the beginning of the list
-    int size = 0; // total number of elements, both undoable and redoable (max as specified)
-    int nRedoable = 0;
-
-    @Override
-    public void record(E action) {
-        if (size == maxSize) {
-            head = loopForward(head,1);
-            size--;
-        }
-
-        size -= nRedoable;
-
-        actions[loopForward(head, size)] = action;
-
-        size++;
-    }
-
-    @Override
-    public E undo() {
-        assert (canUndo());
-        E a = actions[loopForward(head, size - 1)];
-        nRedoable++;
-
-        return a;
-
-    }
-
-    @Override
-    public E redo() {
-        assert (canRedo());
-        E a = actions[loopForward(head, size - 1)];
-        nRedoable++;
-        return a;
-    }
-
-    @Override
-    public boolean canUndo() {
-        return (size != nRedoable);
-    }
-
-    @Override
-    public boolean canRedo() {
-        return nRedoable != 0;
-    }
-
-}
diff --git a/src/trash/GameContext.java b/src/trash/GameContext.java
deleted file mode 100644
index af47088..0000000
--- a/src/trash/GameContext.java
+++ /dev/null
@@ -1,46 +0,0 @@
-//a singleton class
-public class GameContext {
-    private int canvasPixelWidth;
-    private int boardWidth;
-
-    private int squarePixelWidth;
-
-    private static GameContext instance;
-
-
-    private GameContext(int canvasPixelWidth, int boardWidth) {
-        this.canvasPixelWidth = canvasPixelWidth;
-        this.boardWidth = boardWidth;
-
-        squarePixelWidth = canvasPixelWidth / boardWidth;
-    }
-
-    public static void init(int canvasPixelWidth, int boardWidth) {
-        instance = new GameContext(canvasPixelWidth, boardWidth);
-    }
-
-    public static GameContext getInstance() throws NoContextException{
-        if (instance == null) {
-            throw new NoContextException();
-        }
-        return instance;
-    }
-
-    public int getCanvasPixelWidth() {
-        return canvasPixelWidth;
-    }
-
-    public int getBoardWidth() {
-        return boardWidth;
-    }
-
-    public int getSquarePixelWidth() {
-        return squarePixelWidth;
-    }
-}
-
-class NoContextException extends RuntimeException{
-    NoContextException() {
-        super("You must first create a game context before any resource tries to obtain it.");
-    }
-}
diff --git a/src/trash/Generator.java b/src/trash/Generator.java
deleted file mode 100644
index 538ecf8..0000000
--- a/src/trash/Generator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.patryk.mathdoku.cage;
-
-import com.patryk.mathdoku.global.BoardPosVec;
-import com.patryk.mathdoku.UserData;
-
-import java.util.BitSet;
-
-public class Generator {
-    public interface BoardReadyFunc {
-        void onBoardReady(UserData board);
-    }
-
-    private BitSet[] colForbidden;
-    private BitSet[] rowForbidden;
-    private int size;
-    private UserData data;
-    private BoardReadyFunc boardReadyFunc;
-
-    private static BitSet[] getBitsSetArray(int size) {
-        BitSet[] a = new BitSet[size];
-        for (int i = 0; i < size; i++) {
-            a[i] = new BitSet(size);
-        }
-        return a;
-    }
-
-    private Generator(int size, BoardReadyFunc boardReadyFunc) {
-        this.size = size;
-        this.data = new UserData(size);
-        this.boardReadyFunc = boardReadyFunc;
-        colForbidden = getBitsSetArray(size);
-        rowForbidden = getBitsSetArray(size);
-    }
-
-    public static void perform(int size, BoardReadyFunc boardReadyFunc) {
-        new Generator(size, boardReadyFunc).f(BoardPosVec.zero());
-    }
-
-    private void f(BoardPosVec cell) {
-        //get bit vector of forbidden values for that row and column
-        BitSet forbiddenNums = new BitSet();
-        forbiddenNums.or(colForbidden[cell.c]);
-        forbiddenNums.or(rowForbidden[cell.r]);
-        for (int i = 1; i <= size; i++) {
-            //if that value is not forbidden
-            if (!forbiddenNums.get(i)) {
-                //give current cell that number
-                data.setValueAtCell(cell, i);
-                if (cell.isLast()) {
-                    boardReadyFunc.onBoardReady(data);
-                    return;
-                }
-                //make this number forbidden in rows and columns
-                colForbidden[cell.c].set(i, true);
-                rowForbidden[cell.r].set(i, true);
-                //go to next cell and recursively do the same
-                f(cell.next());
-                //after that is done, make this number no longer forbidden
-                colForbidden[cell.c].set(i, false);
-                rowForbidden[cell.r].set(i, false);
-                //assert(forbiddenNums.equals(colForbidden[cell.c].or(rowForbidden[cell.r])));
-                //but don't remove the number; it will be ignored and later overwritten anyway
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/src/trash/MathDoku.java b/src/trash/MathDoku.java
deleted file mode 100644
index 3edbff4..0000000
--- a/src/trash/MathDoku.java
+++ /dev/null
@@ -1,186 +0,0 @@
-import javafx.application.Application;
-import javafx.application.Platform;
-import javafx.beans.property.SimpleObjectProperty;
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
-
-import javafx.scene.input.KeyEvent;
-import javafx.scene.input.MouseEvent;
-import javafx.stage.Stage;
-
-public class MathDoku extends Application {
-
-    private static int canvasPixelWidth = 600;
-    private static int boardWidth = 6;
-
-    UI ui;
-
-    private InitialData initialData;
-    private UserData userData;
-
-    public static ActionRecorderBase<Action> actionRecorder = new CircularActionRecorder();
-
-    public static int getCanvasPixelWidth() {
-        return canvasPixelWidth;
-    }
-
-    public static int getBoardWidth() {
-        return boardWidth;
-    }
-
-    public static int getSquarePixelWidth() {
-        return canvasPixelWidth / boardWidth;
-    }
-
-    @Override
-    public void start(Stage primaryStage) throws Exception{
-        //GameContext.init(canvasPixelWidth, boardWidth);
-
-        //create the canvas and put it in the window
-        primaryStage.setTitle("Mathdoku");
-
-        //create the constant game data
-        initialData = new InitialData("example.txt");
-        userData = new UserData();
-
-        ui = new UI(initialData, userData);
-
-        markedCellProperty.addListener(new ChangeListener<Util.BoardPosVec>() {
-            @Override
-            public void changed(ObservableValue<? extends Util.BoardPosVec> observableValue, Util.BoardPosVec oldPos, Util.BoardPosVec newPos) {
-                redrawMarkedCell();
-            }
-        });
-
-
-        ui.getScene().setOnKeyPressed(new EventHandler<KeyEvent>() {
-            @Override
-            public void handle(KeyEvent keyEvent) {
-                switch (keyEvent.g)
-        });
-
-
-
-        ui.undoButton.addEventHandler(ActionEvent.ANY, new EventHandler<ActionEvent>() {
-            @Override
-            public void handle(ActionEvent actionEvent) {
-                undo();
-            }
-        });
-
-        ui.redoButton.addEventHandler(ActionEvent.ANY, new EventHandler<ActionEvent>() {
-            @Override
-            public void handle(ActionEvent actionEvent) {
-                redo();
-            }
-        });
-
-        ui.clearButton.addEventHandler(ActionEvent.ANY, new EventHandler<ActionEvent>() {
-            @Override
-            public void handle(ActionEvent actionEvent) {
-                clear();
-            }
-        });
-
-
-        userDataDrawer.draw();
-
-        primaryStage.setScene(ui.getScene());
-
-
-        primaryStage.show();
-    }
-
-    /**
-     * also checks if the digit is in range
-     * @param cell
-     * @param digit
-     */
-    private void appendDigitToCell(Util.BoardPosVec cell, char digit) {
-        int newValue = Util.charToInt(digit);
-        if (newValue <= GameContext.getInstance().getBoardWidth())
-            setValueAtCell(cell, newValue);
-    }
-
-
-
-    private Util.BoardPosVec getSelectedCell() {
-        return this.markedCellProperty.get();
-    }
-
-    private void redrawMarkedCell() {
-        //TODO set colours, line width
-        //clear canvas
-        //re-draw the marked cell
-        //drawSquare(markedCellCanvas.getGraphicsContext(), markedCellProperty.getValue());
-        selectedCellDrawer.draw();
-
-    }
-
-    private void setSelectedCell(Util.BoardPosVec pos) {
-
-        //Util.BoardPosVec newValue = markedCellProperty.get().add(direction.vector);
-        //if change has occured to the value
-        if (!pos.clampToArea()) {
-            markedCellProperty.set(pos);
-        }
-    }
-
-    private void undo() {
-        if (actionRecorder.canUndo()) {
-            Action action = actionRecorder.undo();
-            if (action.isFlipped()) {
-                redoAction(action);
-            } else {
-                undoAction(action);
-            }
-
-        }
-    }
-
-    private void redo() {
-        if(actionRecorder.canRedo()) {
-            Action action = actionRecorder.redo();
-            if (action.isFlipped()) {
-                undoAction(action);
-            } else {
-                redoAction(action);
-            }
-        }
-    }
-
-    public void redoAction(Action action) {
-        switch (action.getType()) {
-            case CHANGE_CELL_VALUE:
-                redoSpecificAction((CellValueChangeAction) action);
-                break;
-            default:
-        }    }
-
-    public void undoAction(Action action) {
-        switch (action.getType()) {
-            case CHANGE_CELL_VALUE:
-                undoSpecificAction((CellValueChangeAction) action);
-                break;
-            default:
-        }
-    }
-
-    private void undoSpecificAction(CellValueChangeAction action) {
-        userData.setValueAtCell(action.getCell(), action.getOldValue());
-        userDataDrawer.draw();
-    }
-
-    public void redoSpecificAction(CellValueChangeAction action) {
-        userData.setValueAtCell(action.getCell(), action.getNewValue());
-        userDataDrawer.draw();
-    }
-
-
-
-    public static void main(String[] args) {
-        launch(args);
-    }
-}
diff --git a/src/trash/SampleAction.java b/src/trash/SampleAction.java
deleted file mode 100644
index 1f2ea72..0000000
--- a/src/trash/SampleAction.java
+++ /dev/null
@@ -1,12 +0,0 @@
-public class SampleAction extends Action {
-    String message;
-    public SampleAction(String message) {
-        super(Type.SAMPLE);
-        this.message = message;
-    }
-
-    @Override
-    public String toString() {
-        return message;
-    }
-}
diff --git a/src/trash/TestMain.java b/src/trash/TestMain.java
deleted file mode 100644
index d9de9d3..0000000
--- a/src/trash/TestMain.java
+++ /dev/null
@@ -1,14 +0,0 @@
-public class TestMain {
-    public static void main(String[] args) {
-        LimitedStack stack = new LimitedStack(3);
-        stack.push(new SampleAction("aardvark"));
-        stack.push(new SampleAction("pig"));
-        stack.push(new SampleAction("dog"));
-        stack.push(new SampleAction("sheep"));
-        stack.push(new SampleAction("wolf"));
-        stack.push(new SampleAction("horse"));
-        Action temp = stack.pop();
-        temp = stack.pop();
-        temp = stack.pop();
-    }
-}
diff --git a/trivial/.vscode/launch.json b/trivial/.vscode/launch.json
deleted file mode 100644
index 5cfc0d3..0000000
--- a/trivial/.vscode/launch.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    // Use IntelliSense to learn about possible attributes.
-    // Hover to view descriptions of existing attributes.
-    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
-    "version": "0.2.0",
-    "configurations": [
-        {
-            "type": "java",
-            "name": "Debug (Launch) - Current File",
-            "request": "launch",
-            "mainClass": "${file}"
-        },
-        {
-            "type": "java",
-            "name": "Debug (Launch)-Permutations<trivial_ee8fd3d>",
-            "request": "launch",
-            "mainClass": "Permutations",
-            "projectName": "trivial_ee8fd3d"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/trivial/.vscode/settings.json b/trivial/.vscode/settings.json
deleted file mode 100644
index 4394105..0000000
--- a/trivial/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "python.pythonPath": "/sbin/python3.8"
-}
\ No newline at end of file
diff --git a/trivial/CageGenerator.java b/trivial/CageGenerator.java
deleted file mode 100644
index 875d603..0000000
--- a/trivial/CageGenerator.java
+++ /dev/null
@@ -1,48 +0,0 @@
-import java.util.BitSet;
-
-public class CageGenerator {
-    public interface BoardReadyFunc {
-        void onBoardReady(UserData board);
-    }
-
-    private BitSet[] colForbidden;
-    private BitSet[] rowForbidden;
-    private int size;
-    private UserData data;
-    private BoardReadyFunc boardReadyFunc;
-
-    public void perform(UserData data, BoardReadyFunc boardReadyFunc) {
-        this.size = data.size;
-        this.data = data;
-        this.boardReadyFunc = boardReadyFunc;
-        colForbidden = new BitSet[size];
-        rowForbidden = new BitSet[size];
-        f(Util.BoardPosVec.zero());
-    }
-
-    private void f(Util.BoardPosVec cell) {
-        //get bit vector of forbidden values for that row and column
-        BitSet forbiddenNums = colForbidden[cell.c].or(rowForbidden[cell.r]);
-        for (int i = 1; i <= size; i++) {
-            //if that value is not forbidden
-            if (!forbiddenNums.get(i)) {
-                //give current cell that number
-                data.setValueAtCell(cell, i);
-                if (cell.isLast()) {
-                    boardReadyFunc.onBoardReady(data);
-                    return;
-                }
-                //make this number forbidden in rows and columns
-                colForbidden[cell.c].set(i, true);
-                rowForbidden[cell.r].set(i, true);
-                //go to next cell and recursively do the same
-                f(cell.next());
-                //after that is done, make this number no longer forbidden
-                colForbidden[cell.c].set(i, false);
-                rowForbidden[cell.r].set(i, false);
-                assert(forbiddenNums.equals(colForbidden[cell.c].or(rowForbidden[cell.r])));
-                //but don't remove the number; it will be ignored and later overwritten anyway
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/trivial/Permutations$1.class b/trivial/Permutations$1.class
deleted file mode 100644
index 80e115ad153f305a8cde18394d50412f06b0c9a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 720
zcmX^0Z`VEs1_nz8eJ%zj24;2!79Ivx1~x_p!GP4F+|rW7lFa<PVwK>`^gKoewz9;W
z($r!`1~CoIXdes()|?C+44mu?Ts#ci3_Oesd?+dm85v|$g3B{Yk~4f03sg|#AjUIA
zdvY=`G4Sy)@G}T7GOz^rga$J*2xGAb<W?ab24MyfMh5o$qLj?M#2iKjW(`eGb_Ov<
z2C1yXvPAuy#JqHUzx?3R<P5jW)SML8qN4mFkOdMv43Z!VSbaVHLW4mf(mV_@AQ2AV
zP@fRb0G~*Zpd1f_JV=nu#WT#)#g&~wk&!_FVX}WxR%&tyBLjy`a!zJmW{Dlx0bz^`
zEYA5Usf-N#KACx`ex<odsYM})Nja&E47|Z5iOJc%i3LzTS8#r5QF5wVCP)$`y!AlV
zFf#DF<|XIk7iZ?B`=*v;<fpJRXfrbKAcq_y1BYK~afwHMaS0;>k7r(9YLRnJVsSAj
zl2|~YDxko?!Jxpvz`!UV0g4q6i-Chdi9wlxkwJxlfngQ{GXo<71B2TR2F87RxHdDe
zZvr9SZ481e{>vFyyun=YZ482}2(HvN20=CiS9TkNAUl}5k%5JQlR<<*oI#X9f<c)<
zjX{(_oxzB~ltGlijKPt?g+Y{oi9wZtfq@NdD=&i@0|SE?14lSJgD8V9D#5_Qpw7U+
vz{H@zpvl0%z`~%#z`&pb7SUqRWnf?sVqjumV$fpHbC6`<U|?Wi5a0j+$+wi?

diff --git a/trivial/Permutations$Sign.class b/trivial/Permutations$Sign.class
deleted file mode 100644
index 8228fa2fd81ea93155270fb665d2557526e1fe82..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 993
zcmX^0Z`VEs1_nz83r+?m24;2!79Ivx1~x_p!GP4F+|rW7lFa<PVwK>`^gKoec9k$k
zpHSCeMh1~+9}IbGE(Q(;PId-19tJK3Zbk;y<edDxR7M674Nae{#Ii*FoW#6zegCAa
z)Z`LtE(Tr(K6VCv9tHshK}H5XgaX&R(p*Lc_OisB(p3L6Mg~(2B;C$AiN(d%NCLqn
zMVWc&*2p%13;>%i%)=nUAj-(VW|NthSz^b?AckxdRHvtA7zcwmBLho-PiQa~0~3QV
zC?KSG7{nQ*85xAJc$0%cmXU$g*V8XF7^GC5he4J>nu9@+k%7ZE)F;F<z$X$UuFS)r
z2ohIiWMFgg4D)nx1&ONjFsOnIW&``L8002RY+=dBz~Y>rlFG=y?~|FA>Q|bZlv)&$
zn3R*s$e@nJ7n)ey$;iM7inhd((xOyG24)S-Fh&Lro8%m5V5lO6A}Gjguoz)y&B(wN
zoL^d$oa&YdvKu8;=z$`Qk%7Z6wYbD1zqo{*!IY7K2RU6ZGVplj<)s#Zqb;?Vk%0x|
zA_qeTCI(&x1_o9KNl-8|FgQqp!VpX=GDw4IRS+#81xkzz3=Av`oD3QanhcB#S_}*f
zN(_t)Ai%YWfpHrH`vC@y4Gatnj11Zg3=C{wIgok*1|7J1Ca@@%5R=vp2A%^9OqlAK
zKxu`632eSR12Y3N0|NuQmbT1x2BD1@hU+pgFfcLbF>o;GGw4Ar$zfmtxrrfUHv?0o
zkQnoJ28qoKl3<Pu3z#DZ<|wd&IZ9xT3LBWC#=e(<DUx{;gJf_d%O(c7;7Ha@3`)U~
uY?~O=f;TfTV!D8Z0pbP&21Br0j2Mi;v<ZV50|NsW10w?yg9(GVgCqdke8`^w

diff --git a/trivial/Permutations.class b/trivial/Permutations.class
deleted file mode 100644
index a5076dc8e3adf43e075956edc57b552e2372d2e3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1934
zcmX^0Z`VEs1_n!pR4xW424;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3V9fYhSg(vrlI%>2A!Mh5l*FgKNvfia4cfscWo
zok4(yL6AX+kwFkyrAlySdLAPKn~P_dr;95igRl>VtTo6c5grCnkY<kjg4CkKlKdi&
zpg0eM1cM|a16xUAQF>|#BLkx+CxbMD3_F7?4}%<oJR<`iifM+73^FRg<(VbP8NP`H
zDkyRgcQ8eJaxw5RDDp5UF(@-Ku;&-0WacI2fPL)A#h}Wd#?GM5!=S;S$;iNm2q53Y
zk_<)$j<lTo{34gkGDZeg4Np%^PfiAH1|4<=T^<HK27Qze4X!LMNzG+sV9qZsVPp{X
z0UMQ>uOCp9nO72AQk0sQYc0gUz+lM3V8md|$RM7Zn4RjJpO>6i5}sL-;hdjWT#}eq
zQq0I8s^O^#(GHHP;F6-uymV_W22%zzb_R1E1`7sDMh0Ol=7Zu0WLr)i$Pi2;G{d+U
zI2f#X7;G4985uYs;hveF$H*X|;pvGbnlwFy7#JB0LAo4x7#ta#7#SGT7#TP;Jfl55
zJvF0*7?>ck%pljfft=>f$iSizr5VP^z~Y>rlFG=y?~|FA>Q|bZlv)&$n3R*s$iN$1
zl9-(Bn^*wmvx6d)B{wlMkC8!4BO05l85y{O^Gl18Q{6H_`cYDw9w;0b8MysYi%Wb{
zLADe#G6*>3=a&?h6eSk;rj}&nrxf$EF$8llgfN7%GlYS{Kb(<41*8#@88Y+A^0QO*
zAps4E61T+UlKi4dMur(0NG^gZgc$0Pn3s~1TCC!epPyY?V2z{<Vi2+jipG%2f>dNl
zsB&blL$aqeax#D#;hdP06P#I+YR$nA$;iO%n3tGSS(TZWuE5B_5Y5OS&8Xm)U!stb
zS(aIxnUs^NP@J!jnVy#qN<thAv5X7?F8O(>3W*49j0`-Ud3mWt&N+$2#i_-N3@o60
z!_JV%$e@Z5MA&@J&XCN=ActQmBLf>Gm>3ipI2f217#Nrt7(k^A0|<yRfHDRHDCaXU
zFt9K%f{H5!Mg|WC1_o;eCI&_Z1_p7h?F@`sEL$1awKg&EZe<YG5@6fPAhwZ#fq{|1
zlYxOjh=B!cEDM7S11Ezlg8+jZ0~08vLk%irU;?YK*~B2FyNy9XZxzUD1_mRr2_S13
z7!(*77*rS-7&I6d7<8m%64pq|q^yya$yg&Tvx7lp4bvJ11_mauZBh(u3=9ms3>pml
z3_1*g3<eCs3?>Ys3|0){3|<Tj4D1Z78qCbhtPG5xYy)uuV;BP)11AFm!-`D|TGG21
z3>X-;F_=heZD9~wz`)9~M%Ii~lvQWnB8FNWQC2;s`3(6W+Kf$<WflX6DBE%dJ}qfc
zHmxlT!rK_E%-BJUO$@xt7^I{{*$QSd2ybH05@p-PU<WpKIfJ2&C@Yh{mMFW9))of#
znGEdA%Nf{3Sy>W9Sy&RbG1!}N=!mk4viXa0%mmrq!pgY(e-p%I&R`>$5#IFz$B-fe
zs1OxlP-YNgP+?GDP-W0yP-D<z&|q+7&|(N<&}K+x&|yep&|}DE&}V38Fkt9qFl3m-
zV8k$mL4{!!gBimz26J%m_%Lva{b68Y{KFu}=*9SlL5cA{gD?XJI|BzJJA*eP2!JXs
zFz-JDGnxzwOx;fg(O(R#44e!;48D*sW^iC&2d5X6O$=JQ88{-hGq^Cb?cs`KX7!I`
zVeyY-72xq_X5PkNzm35ak$6BAB?E&MgEE6P0}F#6IGX(#0vH$=*cg}?q#5`a0vQ+>
xL>QPEf*2SXBEV!6n2ceFV_;yAVqj+AW8h$jcaUU|2Bj+j4u%AVB!(0QNdS-}p%(xE

diff --git a/trivial/Permutations.java b/trivial/Permutations.java
deleted file mode 100644
index 6691a73..0000000
--- a/trivial/Permutations.java
+++ /dev/null
@@ -1,67 +0,0 @@
-public class Permutations {
-    public enum Sign {PLUS, MINUS, MULTIPLY, DIVIDE};
-
-    //public boolean fits(int target, int[] nums) {
-
-    /*checks if target can be formed by applying op1 with sign sign to any integer in the list or by also
-       additionally recursively applying each result to the remainders in the list.
-     */
-
-    private int operation(int operand1, int operand2, Sign operator) {
-        switch (operator) {
-            case PLUS:
-                return operand1 + operand2;
-            case MINUS:
-                return operand1 - operand2;
-            case MULTIPLY:
-                return operand1 * operand2;
-            case DIVIDE:
-                return Math.floorDiv(operand1, operand2);
-            default:
-                return -1;
-
-        }
-    }
-
-    boolean permute;
-    Sign operator;
-    int target = 240;
-
-    private boolean f(int result,int[] cageList, int startIndex, int depth) {
-        //System.out.println("Analyzing " + result);
-        if (result == target)
-            return true;
-        for (int i = startIndex; i < cageList.length; i++) {
-            if (cageList[i] != -1) {
-                int e = cageList[i];
-                int newResult = depth == 0 ? e : operation(result, e, operator);
-                //int newResult = e;
-                if (operator == Sign.DIVIDE && result % e != 0) {
-                    //System.out.println(e + " Not divisible so ignoring");
-                    continue;
-                }
-                cageList[i] = -1;
-                boolean outcome = f(newResult, cageList, permute ? 0 : i + 1, depth + 1);
-                cageList[i] = e;
-                if (outcome)
-                    return true;
-                
-            }
-        }
-        //System.out.println("Done analyzing " + result);
-        return false;
-    }
-
-    //!!!not thread safe!!!
-    public boolean testSign(int[] cageList, int target, Sign operator) {
-        this.target = target;
-        this.operator = operator;
-        this.permute = (operator == Sign.MINUS || operator == Sign.DIVIDE);
-
-        return f(0, cageList, 0, 0);
-    }
-
-    public static void main(String[] args) {
-        System.out.println( new Permutations().testSign(new int[]{9, 1, 2, 3}, 8, Sign.MINUS)); 
-    }
-}
\ No newline at end of file
diff --git a/trivial/permutations.py b/trivial/permutations.py
deleted file mode 100644
index ea52f87..0000000
--- a/trivial/permutations.py
+++ /dev/null
@@ -1,41 +0,0 @@
-outSet = set()
-runs = 0
-
-def testAdd(cage : list, start: int, permute = False):
-    global runs
-    if (len(cage) == 0):
-        print()
-        return
-    for i, e in enumerate(cage):
-        result = start + e
-        runs+=1
-        print(e, end=' ')
-        #outSet.add(result)
-        if permute:
-            newList = cage[:i] + cage[i + 1:]
-        else:
-            newList = cage[i + 1:]
-
-        testAdd(newList, result)
-
-permute = True
-operator = lambda x, y: x / y
-
-def f(result, cageList, startindex = 0):
-    print("Analyzing", result)
-    for i, e in enumerate(cageList):
-        if startindex == 0:
-            newResult = e
-        else:
-            newResult = operator(result, e)
-
-        if permute:
-            newList = cageList[:i] + cageList[i + 1:]
-        else:
-            newList = cageList[i + 1:]
-
-        f(newResult, newList, 1)
-    print("Done analyzing", result)
-
-
-f(0, [6, 1, 12])
\ No newline at end of file
-- 
GitLab