From 8f84db8a79fde5aa7cdbbbacf5c1fb3318ff8385 Mon Sep 17 00:00:00 2001 From: Martin Kaller <marka727@student.liu.se> Date: Mon, 12 Oct 2020 11:59:09 +0200 Subject: [PATCH] Made hanoi tower playable --- 5.txt | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Hanoi.class | Bin 2210 -> 2691 bytes Hanoi.java | 58 +++++++++++++------ Main.class | Bin 394 -> 1106 bytes Main.java | 26 ++++++++- 5 files changed, 224 insertions(+), 19 deletions(-) create mode 100644 5.txt diff --git a/5.txt b/5.txt new file mode 100644 index 0000000..179657f --- /dev/null +++ b/5.txt @@ -0,0 +1,159 @@ +A: [5, 4, 3, 2, 1] +B: [] +C: [] + +Move disc 1 from A to C +A: [5, 4, 3, 2] +B: [] +C: [1] + +Move disc 2 from A to B +A: [5, 4, 3] +B: [2] +C: [1] + +Move disc 1 from C to B +A: [5, 4, 3] +B: [2, 1] +C: [] + +Move disc 3 from A to C +A: [5, 4] +B: [2, 1] +C: [3] + +Move disc 1 from B to A +A: [5, 4, 1] +B: [2] +C: [3] + +Move disc 2 from B to C +A: [5, 4, 1] +B: [] +C: [3, 2] + +Move disc 1 from A to C +A: [5, 4] +B: [] +C: [3, 2, 1] + +Move disc 4 from A to B +A: [5] +B: [4] +C: [3, 2, 1] + +Move disc 1 from C to B +A: [5] +B: [4, 1] +C: [3, 2] + +Move disc 2 from C to A +A: [5, 2] +B: [4, 1] +C: [3] + +Move disc 1 from B to A +A: [5, 2, 1] +B: [4] +C: [3] + +Move disc 3 from C to B +A: [5, 2, 1] +B: [4, 3] +C: [] + +Move disc 1 from A to C +A: [5, 2] +B: [4, 3] +C: [1] + +Move disc 2 from A to B +A: [5] +B: [4, 3, 2] +C: [1] + +Move disc 1 from C to B +A: [5] +B: [4, 3, 2, 1] +C: [] + +Move disc 5 from A to C +A: [] +B: [4, 3, 2, 1] +C: [5] + +Move disc 1 from B to A +A: [1] +B: [4, 3, 2] +C: [5] + +Move disc 2 from B to C +A: [1] +B: [4, 3] +C: [5, 2] + +Move disc 1 from A to C +A: [] +B: [4, 3] +C: [5, 2, 1] + +Move disc 3 from B to A +A: [3] +B: [4] +C: [5, 2, 1] + +Move disc 1 from C to B +A: [3] +B: [4, 1] +C: [5, 2] + +Move disc 2 from C to A +A: [3, 2] +B: [4, 1] +C: [5] + +Move disc 1 from B to A +A: [3, 2, 1] +B: [4] +C: [5] + +Move disc 4 from B to C +A: [3, 2, 1] +B: [] +C: [5, 4] + +Move disc 1 from A to C +A: [3, 2] +B: [] +C: [5, 4, 1] + +Move disc 2 from A to B +A: [3] +B: [2] +C: [5, 4, 1] + +Move disc 1 from C to B +A: [3] +B: [2, 1] +C: [5, 4] + +Move disc 3 from A to C +A: [] +B: [2, 1] +C: [5, 4, 3] + +Move disc 1 from B to A +A: [1] +B: [2] +C: [5, 4, 3] + +Move disc 2 from B to C +A: [1] +B: [] +C: [5, 4, 3, 2] + +Move disc 1 from A to C +A: [] +B: [] +C: [5, 4, 3, 2, 1] + diff --git a/Hanoi.class b/Hanoi.class index f4ed9a5db17bb0318b7850a44c42d602cde12260..b9ef82e6e196357102773d2612972fa77820eb0c 100644 GIT binary patch delta 1704 zcmZ1^*eqIq>ff$?3=9nB4BcD|iVU{w40fCh3Jmt_3=SL&jvNe591PAN0T&JiR}k&S z#lXa1%f%qb;0|JWfW$nx7!(-1KwNKj1|N`|FNos@BK(CI7#M;%8A2FBIT*sY7{VDM zxENR%B0*ZBxEK_q8KQ+47#U(gYU6|$m>6P(7?>Fn*%^}987AIS<l+p@OwUU!DJ@E! z_}7~=zqF*Fw1kmCX!1p75lObh-2BqK5=I6_Peukdo6Nk-5<5l)77fqIL5wy`>Kc>p zv&f1DmlS2@rCV!;F*2|gmn0UIFfuS}OrFW8!pE7OTH+5iP()+$1!mF7dl{vqbQnw- z8Thjj%M$fVOEPoxgG&;Vvw0Yl7?dY5Db}kos53G!@GxjFX!0<mFr@M@q%oxPFlaGo z^DtO2nDQ`WFk~_^2!gfeB<7{-d*+p-rl%J1Fk~@g^DyKv<nl1&fs_b1<>!|amlP!y z_@<U*<fjz#voYjzFck1G6fzXCGZgbMlrWSsG6>}4Cgv;T<trp-q$ZYR8s??5GnDZ# zlrvQDFjO*B@h})N81XQeF_?2ORD-nE@G#UeSaC4aaWK?__zja6GRaPU!xTJuACsO5 zYie#mNhK%*G@}?9SPD{8v$+@=8JZXwBpH44%Tg6mGK-TH7!}fr@^cj!6-x3I7`Z0* zGRug1Yxp3%1PxM8Q20(h$t*M3o>_nLV`eLEw$#GX#GGPA22qX4imbvsAUhZttrQp; zEWnWgQY^wzk`FO}k%5_!k&BUmiIHovB8w&mJ3}+b#qE=eSTq?sC(mKo%F@NipgOsh zRc>-It9HEtgCYY10}BHKC@vTn8B`b;7?>DT85kJU7}Oa+K!ZUOM1f+1fq{XYfssLn zL6?D%L63of;SvKY12Y2yLyp#V21YHmy$noS8JIydOC+-pYj7ls5L<90s}OteRt63& zA<nG~T+FsIT3Z-6_AO!%)7rwoTrabmfhlr319xx>6XWv#&!uf;SQavfgQS>^WOgv{ zY-8XJZ(;hs{QoO0>8%WWTH6@-H-eq0&%nT7#=y(Kz`)7C!ob47!@$a*%)rK=$-u>6 z!obbo$iT(m&cMsy$H2!B!@$ds#2~<s&LGH;%^<{Jz`(#D!NBsLLA#!TnVms_k&%Jn z7lZU421dqT3=#}Xp!kRSa47>DICRoMPLej-#vpKjL2w&`kR6CGW3-Jycou`0EQ})p zkzB-J1QC&i`ammk3j-HO6^ArPhC{|^7lSAR!&ZiRE|8CwGjMNW5EByL#vp<4oE!r? z0|SE;g8+jxgFb@{gDry`LpXyxLmYzwLmGo3*b^KK%zqg48TCN1V#r_&b@L1cW(GC} z1_obdJ7zN$W;0e%R%n>(fM`)xBkgSrk~10DL|N-W{@@U0HPQi#u#2*qv9z!<F8_Z) zOIDO+8-o<c<$Np&TN(HeE>mORWME)W0jCpI1~mpD26YBy1`P&N1~mq21}z3B25kl( z1|6^qc^O##F>o+4GD->lVqj%pWH4bcg*sD%ft5j@k%57MM@wr910ORB>ox{ykS&Z1 zpvVOkUJT%<1Zgm1Fb8RyJda(vURp~A;x=iP6j?A6tc?k*O^kt+fq}uEftA6LL4d)D zL7c&vL5aZ?>=<SSMvxOM;7({}U}0clU|{fIwvh$}%|1}ff#M3pkv7`JAOngdE>IwF zfnpSt0A%ZTG01_1TNoLa|33|u+{GXd76LgR;tnZr6nHRjGk7w{F?cbUFnBOnG59dJ zGx&nt!pXq&hk=Rl7ua8x3|1iDF)%RbGBAN%#H+Q1fy)PyXS6pkFfc#@g^z)m!Igm_ zn1Picgn^qOl!2MS8k`+$7}^*Z7`PZ18Cn=R7+M)583MqmhlL@Kfsr8yOvZr8crcj& E0IN<XaR2}S delta 1331 zcmZn`T_jk4>ff$?3=9nB43%6AvJB?z3>I7rObq6n3^ELsAi@enSc3=~b_QDx20IQ0 zdkzK%kbomdr4u`YGZzCNgA0go1&O$EGPpB%2r)1)_;4}!GWc;Z$T0YWhyV}~D8#_X z5DbzC0TIHXATo@dA)K8df{}qSk&!`g;tF|2)rlu%1cFP7GV{`{?W`FY7?T(o7$?qB zoOs-m%O*1~v&4>(fmvg+8>0<3YjH_pQ3)dhi-zaqZHy|D|1wHxYBFdsGVo_5mL=+! zmSpDW2bUx!XY(+~G05{UD1iuN5TU}LI@yp(v0j})gNGrKA&QYf5UeF9F)v-;Gp{5y zJ++93A(|nEhar|Bj)x(hA%UGCk%u9PA(@duz$rh!q`0IgvA{RABqKkin4gUyg@YlL zhart2ot+_rhar<8i-*C4L5qjMh{2eLL61S7gCQFvox{VB3zExZ$OEa8(PCs^^+?Ri z&tzl}KsdlZDJwO(WO4zs!DM;n;K_C@`gU9l`3wb&4C21|WvL1&nZ?Npj0$N*`MC;= z3MKgpjEoH8xry1S&iQ%Ci6!BgB^l27dBr7(c_qb+43-+6lP|JZPR?hsU}0voQkX2q zs>#8~z*<n0nO8D-9g8?;7&}8D$aSTY{aG~`%O_W|Ze^^Ptk33CFT)_qz`(%DzyJzB z21W)21_lNu21N!2P*|eyl^Ntw_$mylaK0J?1A{t)2G}G<22BPn21W*L1_p+$46F=H z3=9m(TH6^IwRSTwMQ&$c-parNXVx>Y!r2ULT5Nk6n6@&ogJ_OOW+BetNERWk;7C>> z?%=HqJj^!IT3Z-+_AO!%)7rwoE)6v=xP_5%`Tyq|!7kTfU|`T<;9_84;9_85U}4~A zU}cbEU}I2aU}w-};9ziJ;AZe=;9-bi;ATi-;HziQWnf?sU|{;s;Ksnj&LG3c!0?Mf znt>4%rBF{KGq5tSFfcG!gDo}M#=v`kfo~fFza5A#V<fwSL0}t$VE85mAz6^~q>VtN zjL|LzVFre63?f?F7(_vCV`KoiO$;2?VhjQd;tX;OlJyK`3{nhMU>gk>43TVPW?*2@ zkhYa!S;!y`vWVG825M0Y)BolFUxAF(l4fRM-NqmWGM))+Jjkn{sAFePW)NjiVvuG~ zWsql32S*Obr<@E-e;Ak;e=$ffFoKe9J=De!23D}cl%;1eux!+lW=W9|Ws%*+Af_cF z%Ce0?93&zOW+GVz@rw}yD}xDx0D~!mID;935`zUeNSPTJSs55XSp;fB0RuBQDVQQ+ zQEd}Ly$~p{q>XklNPq%MauWkcfL+>X8-o-$TCZ<n5ZcBdjqXEh25tr$1{nrh1`P&l z20aFQ1``Gcu*Gm6YBMl1n1a)U8AAy;Juos9F_bYBGe|OcGB7akF)%TBaWOD5cr$o0 IFfs%I07XFBU;qFB diff --git a/Hanoi.java b/Hanoi.java index ca13f23..167b78f 100644 --- a/Hanoi.java +++ b/Hanoi.java @@ -1,16 +1,20 @@ import java.util.*; public class Hanoi { - Stack<String> a = new Stack<String>(); - Stack<String> b = new Stack<String>(); - Stack<String> c = new Stack<String>(); Stack<Integer>[] stacks = (Stack<Integer>[]) new Stack[3]; String[] names = {"A","B","C"}; + String output = ""; + int amount; - public Hanoi() { + public Hanoi(int amount) { for (int i = 0; i < names.length; i++) { stacks[i] = new Stack<>(); } + for (int i = amount; i >= 1; i--) { + stacks[0].push(i); + } + this.amount = amount; + printStacks(); } @@ -18,23 +22,35 @@ public class Hanoi { * @param from * @param to */ - public void move(int from, int to) { + private void move(int from, int to) { int disc = stacks[from].pop(); - stacks[to].push(disc); + if(stacks[to].empty() || disc < stacks[to].peek()){ + stacks[to].push(disc); - System.out.println("Move disc "+ disc +" from " + names[from] + " to " + names[to]); - printStacks(); + output += "Move disc "+ disc +" from " + names[from] + " to " + names[to] + "\n"; + printStacks(); + } else { + stacks[from].push(disc); + System.out.println("lmao no cheating"); + } + } + + public void move(String playerFrom, String playerTo){ + int from = 0; + int to = 0; + for (int i = 0; i < names.length; i++) { + if(names[i].equals(playerFrom)) from = i; + if(names[i].equals(playerTo)) to = i; + } + move(from,to); + amount++; } /** * @param amount */ - public void start(int amount) { - for (int i = amount; i >= 1; i--) { - stacks[0].push(i); - } - printStacks(); + public void start() { hanoi(amount, 0, 1, 2); } @@ -57,10 +73,20 @@ public class Hanoi { public void printStacks() { for (int i = 0; i < names.length; i++) { - System.out.print(names[i]+": "); - System.out.println(stacks[i]); + output += names[i]+": "; + output += stacks[i].toString()+"\n"; } - System.out.println(); + output += "\n"; + } + + /** + * @return the output + */ + public String getOutput() { + String tmp = output; + output = ""; + return tmp; + } } \ No newline at end of file diff --git a/Main.class b/Main.class index 8aaa34fe2b9e09b770d8ea1c2832692e1df6c0a0..8f28f72c9dff6700f15d1c379d522da00a2f8040 100644 GIT binary patch literal 1106 zcmX^0Z`VEs1_pD6KrRMR21PCgB?e`71{F>QRR%RK24)6zb_NYD1~vvw4hAhQ1~~?8 zkc<uogDw|?9)mteg#ibHA&6rHQf3SyOh8;y5X+36!JM7Jf{}sECNnRy#Ey}HSwl07 zk%7fIKP8osf!`-HFV(L!Hz~C!Brz!`m63rZH!(AhkwHu&+9xZqEKxrvF)v*|xTGjE zFWnlXkvF&`F*(~eu>h=|oxzfw!HSWAD>%QjC^^+F6J!LZZ(?Si9!NJ2gBXK2JA*Y3 zgAIc%BZDAFOuw`wGe<u-IWaFUwTPX;j)%dX!2zVuk&%JbBQY;O6U1?1WMD~8%uVHC zaAt7fVQ^(|V`SiS%c(3WNmNKHI=nQ`N`alhorl4L!IOu<i@}?bffp)Ul9`iZrNG1B z!ywMX;LG60!{E>04dQz8Fa$7&GcvG%oX5x@0Co)6d;UpTsmUdb48mCajG_<{4ls{^ z^?K%&q^749F*0xzBo-B?dghfdGKgwm2|G_zlPZf#Qgay@m_UIo3Q?Y!ukV>xP+AgP zQk0sQYt6_Y0W}9r0u&7_8lE7EEw!*TF{c>KN{D}~HKQ0AnDa|P4uV?{P?VX6us|3b z2ATQ#NWzQ^tOX!NXl6pZ4o(6bd8rj8poGK7AfllOF&Z2eP&JGU>|hge@<7QczbuuJ zK^^K7WM!BdK|bP4Pc88;Ehzvwo3*$kv8aSWkwJt(lmP^o7#Kk*ih+?qf`NfSmVuFh zk%57MRcku~<3<Js21W)+1_lN;upl!7CxaA&G*sy$24)6!1_p*=EfymmEoP$~3{1AW z8JHtCF|cfBVD;P0z!oX9oq^qoO<Ra#8w2M|2AfR`TteL27<hEIG4NWkfOvc`9_uCs zu5Aqbl5CPJlC0Yp1U4~nNwRHY5ZuNfwEX`m5K|aQ2;?v(u*2*a_(85^U}0cm;AUWF z5M$tCP+;I@&}86cFl69kFlXRruxAipaAgo=@MaKZ2w@OmNMaCYNN12>C}NOekYQk8 pkYr%`&!EY`&dwmq&LGFg&cMvTz|O$Nz+l0^$RN+az`(?y005+E@ofMA delta 256 zcmcb_(Z#HO>ff$?3=9nB3^H5{><j{241x?o><q$O49p-7GlK{_gD5+L*u+#XL$2Wb z(xT*4x6GVWMg~sb#LPUsti-ZJ9tI8uPId-y9tH^pNk#@%kHozEOdbX)2I<N9j53qA zFq+r17MCOzl`t}}Xn1OdF(@*yF|ad$022cvNHYT?0~Z4WgDe9h10w?i1FP0{2F8sH z3=E76+zbp1Y+ykq22KVZ241LAO9mzeW(EcZQ7vYp9Slr1yBU}xw==N#>PT;6U`1#Z iVqjrlU|<nrU}s=s;AdcG5Mkh8U}WH9U|?Wk;0FL2lOP%Z diff --git a/Main.java b/Main.java index d34a007..52ffc3f 100644 --- a/Main.java +++ b/Main.java @@ -1,9 +1,29 @@ +import java.util.*; public class Main { public static void main(String[] args) { - int amount = Integer.parseInt(args[0]); + String mode = "game"; + int amount = 4; - Hanoi test = new Hanoi(); - test.start(amount); + Scanner input = new Scanner(System.in); + String from, to; + + Hanoi hanoi = new Hanoi(amount); + if(mode.equals("game")){ + System.out.println(hanoi.getOutput()); + while(true){ + System.out.print("Flytta från: "); + from = input.nextLine(); + System.out.print("Flytta till: "); + to = input.nextLine(); + System.out.println(); + + hanoi.move(from,to); + System.out.println(hanoi.getOutput()); + } + } else { + hanoi.start(); + System.out.println(hanoi.getOutput()); + } } } -- GitLab