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