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.
- data/lib/tower_of_hanoi.rb +100 -0
- 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: []
|