module Algorithmable::Cups::NestedListsProblem

Public Instance Methods

make_list(collection, level = 0, buffer = new_nested_list) click to toggle source

/**

  • 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();
}
# 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 = []) click to toggle source
# File lib/algorithmable/cups/nested_lists_problem.rb, line 46
def new_nested_list(collection = [])
  NestedListImp.new collection
end
solve_puzzle(nested_list) click to toggle source
# File lib/algorithmable/cups/nested_lists_problem.rb, line 50
def solve_puzzle(nested_list)
  PuzzleSolver.find_sum_of_nodes_in nested_list
end