Module: Algorithmable::Cups::NestedListsProblem

Defined in:
lib/algorithmable/cups/nested_lists_problem.rb

Instance Method Summary collapse

Instance Method Details

#make_list(collection, level = 0, buffer = new_nested_list) ⇒ Object

/**

  • Given a nested list of integers, returns the sum of all integers in the list weighted by their depth

  • For example, given the list {1,1,2,1,1} the function should return 10 (four 1's at depth 2, one 2 at depth 1)

  • Given the list 1,{4,{6}} the function should return 27 (one 1 at depth 1, one 4 at depth 2, and one 6 at depth 3)

*/

public int depthSum (List<NestedInteger> input)

// ur implementation here

**

  • This is the interface that represents nested lists.

  • You should not implement it, or speculate about its implementation.

*/ public interface NestedInteger {

  /** @return true if this NestedInteger holds a single integer, rather than a nested list */
  boolean isInteger();

  /** @return the single integer that this NestedInteger holds, if it holds a single integer
   *  Return null if this NestedInteger holds a nested list
   */
  Integer getInteger();

  /** @return the nested list that this NestedInteger holds, if it holds a nested list
   *  Return null if this NestedInteger holds a single integer
  */
  List<NestedInteger> getList();
}

35
36
37
38
39
40
41
42
43
44
# File 'lib/algorithmable/cups/nested_lists_problem.rb', line 35

def make_list(collection, level = 0, buffer = new_nested_list)
  collection.each do |entry|
    if entry.is_a? Array
      buffer << make_list(entry, level + 1)
    else
      buffer << entry
    end
  end
  buffer
end

#new_nested_list(collection = []) ⇒ Object


46
47
48
# File 'lib/algorithmable/cups/nested_lists_problem.rb', line 46

def new_nested_list(collection = [])
  NestedListImp.new collection
end

#solve_puzzle(nested_list) ⇒ Object


50
51
52
# File 'lib/algorithmable/cups/nested_lists_problem.rb', line 50

def solve_puzzle(nested_list)
  PuzzleSolver.find_sum_of_nodes_in nested_list
end