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

Returns:

  • (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