class Object

Constants

ListNode
TreeNode

Public Instance Methods

ShowArray(array, left_pointer, right_pointer) click to toggle source
# 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
createLinkedList(arr) click to toggle source
# 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) click to toggle source
# 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
displayTree(arr) click to toggle source
# File lib/lander/tree_node.rb, line 59
def displayTree(arr)
  createTree(arr).to_s
end
display_array(array, left, right, buffer) click to toggle source
# 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
find_left_position(left_pointer) click to toggle source
# 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) click to toggle source
# 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
valid_pointers?(left_pointer, right_pointer) click to toggle source
# 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