Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 子变量数组中的这段代码意味着什么?_Ruby_Algorithm_Breadth First Search - Fatal编程技术网

Ruby 子变量数组中的这段代码意味着什么?

Ruby 子变量数组中的这段代码意味着什么?,ruby,algorithm,breadth-first-search,Ruby,Algorithm,Breadth First Search,我可以从概念上理解它的作用,但实际语法是我不理解的。子变量是一个用循环存储元素的数组吗 变量children被设置为可枚举方法的结果 select是一种通常在采用块的数组上调用的方法。返回值只是块返回truthy对象的原始数组的值(例如,notfalse,notnil) (0..adj_matrix.length-1)是一个范围对象,从0到adj_matrix的长度,通过到a转换为数组(结果是[0,1,2,…]) 然后通过选择对该数组进行过滤,使其仅为调整矩阵[curr\u node][i]==

我可以从概念上理解它的作用,但实际语法是我不理解的。子变量是一个用循环存储元素的数组吗

变量
children
被设置为可枚举方法的结果

select
是一种通常在采用块的数组上调用的方法。返回值只是块返回
truthy
对象的原始数组的值(例如,not
false
,not
nil

(0..adj_matrix.length-1)
是一个范围对象,从0到
adj_matrix
的长度,通过
到a
转换为数组(结果是
[0,1,2,…]

然后通过
选择
对该数组进行过滤,使其仅为
调整矩阵[curr\u node][i]==1的值。因此,如果索引
0
2
处的节点等于
1


然后,结果将是
[0,2]
变量
子项
被设置为可枚举方法的结果

select
是一种通常在采用块的数组上调用的方法。返回值只是块返回
truthy
对象的原始数组的值(例如,not
false
,not
nil

(0..adj_matrix.length-1)
是一个范围对象,从0到
adj_matrix
的长度,通过
到a
转换为数组(结果是
[0,1,2,…]

然后通过
选择
对该数组进行过滤,使其仅为
调整矩阵[curr\u node][i]==1的值。因此,如果索引
0
2
处的节点等于
1

然后结果将是
[0,2]

def breadth_first_search(adj_matrix, source_index, end_index)
  node_queue = [source_index]
  puts "#{source_index} stored into queue \n"

  loop do
    curr_node = node_queue.pop
    puts "#{curr_node} popped \n"
    return false if curr_node == nil
    return true if curr_node == end_index

    children = (0..adj_matrix.length-1).to_a.select do |i| 
      adj_matrix[curr_node][i] == 1

    end

    puts "children: #{children}"
    node_queue = children + node_queue
    puts "node_queue: #{node_queue}"
  end
end