Top Level Namespace
Defined Under Namespace
Modules: Lander
Classes: ListNode, TreeNode
Instance Method Summary
collapse
Instance Method Details
#createLinkedList(arr) ⇒ Object
5
6
7
8
9
|
# File 'lib/lander/list_node.rb', line 5
def createLinkedList(arr)
arr.map { |val| ListNode.new val }
.tap { |nodes| nodes.each_with_index { |node, i| node.next = nodes[i+1] } }
.first
end
|
#createTree(arr) ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/lander/tree_node.rb', line 45
def createTree(arr)
root = TreeNode.new(arr.shift)
queue = [root]
until arr.empty?
node = queue.shift
left = arr.shift
right = arr.shift
node&.left = left && TreeNode.new(left)
node&.right = right && TreeNode.new(right)
queue.push(node&.left, node&.right)
end
root
end
|
#display_array(array, left, right, buffer) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/lander/array_with_pointers.rb', line 31
def display_array(array, left, right, buffer)
if left == right
puts "#{buffer}#{array}"
puts "#{buffer}#{' ' * left} ^"
puts "#{buffer}#{' ' * left} L"
puts "#{buffer}#{' ' * right} R"
elsif left < right
puts "#{buffer}#{array}"
puts "#{buffer}#{' ' * left} ^" + "#{' ' * (right - left - 1)}^"
puts "#{buffer}#{' ' * left} L" + "#{' ' * (right - left - 1)}R"
else
puts "#{buffer}#{array}"
puts "#{buffer}#{' ' * right} ^" + "#{' ' * (left - right - 1)}^"
puts "#{buffer}#{' ' * right} R" + "#{' ' * (left - right - 1)}L"
end
end
|
#displayTree(arr) ⇒ Object
59
60
61
|
# File 'lib/lander/tree_node.rb', line 59
def displayTree(arr)
createTree(arr).to_s
end
|
#find_left_position(left_pointer) ⇒ Object
22
23
24
|
# File 'lib/lander/array_with_pointers.rb', line 22
def find_left_position(left_pointer)
(3 * left_pointer)
end
|
#find_right_position(array, right_pointer) ⇒ Object
26
27
28
29
|
# File 'lib/lander/array_with_pointers.rb', line 26
def find_right_position(array, right_pointer)
return (3 * (array.length - 1)) if right_pointer == -1
(3 * right_pointer)
end
|
#ShowArray(array, left_pointer, right_pointer) ⇒ Object
1
2
3
4
5
6
7
8
9
10
|
# File 'lib/lander/array_with_pointers.rb', line 1
def ShowArray(array, left_pointer, right_pointer)
return unless valid_pointers?(left_pointer, right_pointer)
buffer = ' ' * 3
left = find_left_position(left_pointer)
right = find_right_position(array, right_pointer)
puts "Left is #{left_pointer}, Right is #{right_pointer}"
display_array(array, left, right, buffer)
end
|
#valid_pointers?(left_pointer, right_pointer) ⇒ Boolean
12
13
14
15
16
17
18
19
20
|
# File 'lib/lander/array_with_pointers.rb', line 12
def valid_pointers?(left_pointer, right_pointer)
if (left_pointer < 0) || (right_pointer < -1)
puts "Please enter valid pointer values."
puts "Left pointer values should be in range 0..(array.length - 1)"
puts "Right pointer values should be in range 0..(array.length - 1) OR -1"
return false
end
true
end
|