task 1
This commit is contained in:
		
							
								
								
									
										32
									
								
								src/Hanoi.scala
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/Hanoi.scala
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| import scala.collection.mutable | ||||
|  | ||||
| class Hanoi(val n: Int, val left: Char, val mid: Char, val right: Char) { | ||||
|   val lists: mutable.HashMap[Char, mutable.Stack[Int]] = new mutable.HashMap() | ||||
|   lists(left) = mutable.Stack.range(1, n + 1) | ||||
|   lists(mid) = mutable.Stack.empty | ||||
|   lists(right) = mutable.Stack.empty | ||||
|  | ||||
|   def move(from: Char, to: Char): Unit = { | ||||
|     val i: Int = lists(from).pop() | ||||
|     println(s"Moving disk $i from $from->$to") | ||||
|     lists(to).push(i) | ||||
|   } | ||||
|  | ||||
|   def solve(): Unit = { | ||||
|     hanoi(n, left, mid, right) | ||||
|   } | ||||
|  | ||||
|   private def hanoi(n: Int, start: Char, aux: Char, end: Char): Unit = { | ||||
|     if (n == 0) return | ||||
|     hanoi(n - 1, start, end, aux) | ||||
|     move(start, end) | ||||
|     hanoi(n - 1, aux, start, end) | ||||
|   } | ||||
| } | ||||
|  | ||||
| object Hanoi { | ||||
|   def main(args: Array[String]): Unit = { | ||||
|     val hanoi: Hanoi = new Hanoi(3, 'A', 'B', 'C') | ||||
|     hanoi.solve() | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user