我需要一个我称之为的操作shake_tree
。我已经使用递归算法实现了它,只使用了基本的 ruby-Fortran(引用旧的报价“你可以用任何语言编写Fortran代码。”),但我怀疑有一个更简洁和惯用的ruby 方式。
由于我不知道此操作的通用名称,让我简要介绍一下。我有一个像这个例子一样的哈希值:
{
"-cutoff:" =>
{
:flag => {:set_ie1 => [:useCutoff, true]},
:arg => {:vector_ie1 => :double}
},
"-depth:" =>
{
:flag => {:set_ie2 => [:useInconsistent, true]},
:arg => :double,
:default => 2.0
},
"-maxclust:" =>
{
:flag => {:set_ie3 => [:useCutoff, false]},
:arg => {:vector_ie2 => :index}
},
:fn => "arrayTypeOptions"
}
:vector_ie1
树的结构中:set_ie3
嵌入了独特的符号。我需要删除树的所有分支,而不是从根到带有符号的叶子的路径。鉴于上面的例子:
shake_tree(specs, :vector_ie1)
会返回:
{
"-cutoff:" =>
{
:flag => {:set_ie1 => [:useCutoff, true]},
:arg => {:vector_ie1 => :double}
}
}
和
shake_tree(specs, :set_ie2)
会返回:
{
"-depth:" =>
{
:flag => {:set_ie2 => [:useInconsistent, true]},
:arg => :double,
:default => 2.0
}
}
更有经验的ruby 编码员将如何处理这项任务?