tower_of_hanoi 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/tower_of_hanoi.rb +100 -0
  2. metadata +46 -0
@@ -0,0 +1,100 @@
1
+ def towers_of_hanoi
2
+ @hash1 = {"a" => 3, "b" => 2, "c" => 1}
3
+ @hash2 = {}
4
+ @hash3 = {}
5
+ arr = [@hash1, @hash2, @hash3]
6
+ moves = 0
7
+
8
+ until @hash3 == {"a" => 3, "b" => 2, "c" => 1}
9
+ avail = {}
10
+ puts "CURRENTLY: "
11
+ p arr
12
+ # puts visual
13
+
14
+ arr.each {|i| avail.merge!(Hash[*i.max_by {|a,b| b}]) if i != {}}
15
+ puts "Disks available to move: "
16
+ puts avail.keys
17
+ puts "Which disk to move? "
18
+ move = 'z'
19
+ move = gets.chomp until (avail.has_key?move) == true
20
+ arr.each {|i| i.delete(move) if i[move] != nil}
21
+
22
+ avail = []
23
+ i = 0
24
+ while i < arr.size
25
+ if arr[i] == {}
26
+ avail[i] = arr[i]
27
+ elsif move < arr[i].keys.min
28
+ avail[i] = arr[i]
29
+ else
30
+ avail[i] = nil
31
+ end
32
+ i += 1
33
+ end
34
+
35
+ puts "Pegs available to move disk to: "
36
+ puts "LEFT (0)" if avail[0].nil? == false
37
+ puts "MIDDLE (1)" if avail[1].nil? == false
38
+ puts "RIGHT (2)" if avail[2].nil? == false
39
+
40
+ puts "Where to place disk? "
41
+ move2 = 9
42
+ move2 = gets.chomp until avail[move2.to_i].nil? == false
43
+ if arr[move2.to_i].values.empty?
44
+ v = 1
45
+ else
46
+ v = arr[move2.to_i].values.max + 1
47
+ end
48
+ arr[move2.to_i].merge!(move => v)
49
+ moves += 1
50
+ end
51
+
52
+ return "You Win! In #{moves} moves!"
53
+ end
54
+
55
+ # BROKEN AND INCOMPLETE :/
56
+ def visual
57
+ disks = {"a" => " _ ", "b" => " ___ ", "c" => "_____", "d" => " "}
58
+
59
+ row3 = ["POSITION3:"]
60
+ row2 = ["POSITION2:"]
61
+ row1 = ["POSITION1:"]
62
+
63
+ @hash1 = {"a" => 1, "b" => 2}
64
+ @hash2 = {"a" => 1, "b" => 2, "c" => 3}
65
+ @hash3 = {"a" => 1,}
66
+ board = [@hash1, @hash2, @hash3]
67
+
68
+ board.each_with_index do |hsh, idx|
69
+ n = 4
70
+ (3-hsh.size).times do
71
+ hsh.merge!(n => n)
72
+ n += 1
73
+ end
74
+ puts hsh
75
+ hsh.each do |k,v|
76
+ # eval(x = "row" + v.to_s "\n" x = disks[k] if v < 4)
77
+ # if v > 3
78
+ # row3[1] = disks["d"] if v.index?()
79
+ # row2[1] = disks["d"]
80
+ # row1[1] = disks["d"]
81
+ # else
82
+ # row3[idx+1] = disks[k] if v == 3
83
+ # row2[idx+1] = disks[k] if v == 2
84
+ # row1[idx+1] = disks[k] if v == 1
85
+ # end
86
+ end
87
+ (hsh.size).times do
88
+ n -= 1
89
+ hsh.delete(n)
90
+ end
91
+ end
92
+
93
+ puts " " + " SLOT0" + " SLOT1" + " SLOT2"
94
+ puts row3.join(" ")
95
+ puts row2.join(" ")
96
+ puts row1.join(" ")
97
+ end
98
+
99
+ puts towers_of_hanoi
100
+
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tower_of_hanoi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - A Kasper
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-12-09 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Final Project
15
+ email: lumberjackparade@hotmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/tower_of_hanoi.rb
21
+ homepage: http://rubygems.org/gems/tower_of_hanoi
22
+ licenses:
23
+ - MIT
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 1.8.28
43
+ signing_key:
44
+ specification_version: 3
45
+ summary: A simple game running Tower of Hanoi
46
+ test_files: []