Tag: 递归

如果值递归地包含字符串,则Ruby返回顶级散列键

我有下面的数据结构,我试图返回顶级键(lo,eth0或eth1),如果在任何地方递归和任意深度,它的值是给定的字符串。 然后在找到第一个字符串实例后终止搜索。 在包含任意数量的嵌套哈希和数组的哈希深处查找键/值对这类似于我想要做的但我无法将其映射到我自己的问题 h.find{ |k,v| break k if v.include? “number” } => “eth0” h.find{ |k,v| break k if v.include? “10.0.128.26” } => nil #Should return eth0 我想知道如何通常使用这样的嵌套数据结构,但我决定能够在特定的子哈希,我的情况下的地址中专门搜索。 h = \ {“lo”=> {“mtu”=>”65536”, “flags”=>[“LOOPBACK”, “UP”, “LOWER_UP”], “encapsulation”=>”Loopback”, “addresses”=> {“127.0.0.1″=> {“family”=>”inet”, “prefixlen”=>”8”, “netmask”=>”255.0.0.0”, “scope”=>”Node”}}, “state”=>”unknown”}, “eth0″=> {“type”=>”eth”, “number”=>”0”, “mtu”=>”1500”, “flags”=>[“BROADCAST”, “MULTICAST”, “UP”, “LOWER_UP”], “encapsulation”=>”Ethernet”, “addresses”=> {“00:0C:29:1A:64:6A”=>{“family”=>”lladdr”}, “10.0.128.26”=> […]

使用Nokogiri从空标签中递归清理XML文档?

我有一个嵌套的XML文档,如下所示: test description 12345 我需要删除所有空的XML节点,如和 。 我最终得到了类似的东西: doc = Nokogiri::XML::DocumentFragment.parse <<-EOXML test description 12345 EOXML phone = doc.css(“phone”) phone.children.each do | child | child.remove if child.inner_text == ” end 上面的代码只删除了第一个空标记,例如 。 我无法进入嵌套块。 我想我需要一些递归策略。 我仔细阅读了Nokogiri文档,并检查了很多例子,但我还没有找到解决方案。 我怎样才能解决这个问题? 我正在使用Ruby 1.9.3和Nokogiri 1.5.10。

Nokogiri使用格式和链接标签抓取文本,

如何使用Nokogiri以格式标签递归捕获所有文本? This is text in the TD with strong tags This is a child node. with bold tags “another line of text to a link ” This is text inside a div inside another div inside a paragraph tag 例如,我想捕获: “This is text in the TD with strong tags” “This is a child node. with […]

如何计算代表n美分的方法数量

我正在研究以下算法,并想知道我的实现是否正确: 给定无穷多的四分之一,硬币,镍币和硬币,编写代码来计算代表n分的方式的数量 这没有记忆: def count_ways(n) return 0 if n < 0 return 1 if n == 0 count_ways(n-25) + count_ways(n-5) + count_ways(n-10) + count_ways(n-1) end

在Ruby中生成唯一的排序分区

我正在尝试生成如下所示的序列集,而不是以任何特定的顺序,但这里显示为降序。 请注意,每个序列也会下降,因为我对组合感兴趣,而不是排列。 我想将每个序列存储为数组..或者将序列集更好地存储为数组数组,但首先要做的事情。 6 5 1 4 2 4 1 1 3 3 3 2 1 3 1 1 1 2 2 2 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 现在我只是专注于生成这些集合,我试图以递归方式进行。 基本上……这些是所有数字序列,当组合将给出一些总数……在这种情况下6.但请注意当第一个数字是3时,后面的数字集合只是给出总数的序列集合换句话说,6(目标总数)-3(第一个数字)= 3(总共3个的序列集)。 因此,应该能够递归地执行此操作。 我尝试编码如下(是的,这是我的第一语言,是的,我只学习了大约一个星期所以我确定它全部搞砸了)但到目前为止还没有运气。 我想如果我能够让递归的核心工作并将所有对象的值放到屏幕上,那么我可以逐行跟踪它,我想我可以继续前进,但是在逻辑和语法之间,我我站着不动。 我的逻辑是: 定义一个传递’count’的方法,表示目标总数。 创建一个数组,它将保存给定的值序列 创建一个表示数组中位置的索引(忽略零位)。 定义’delta’并将其初始化为’count’的值,并使其表示数组其余部分的剩余目标总和。 (由于数组最初没有任何内容,因此delta与计数相同。) 然后,循环查看从1开始的序列的下一个(第一)值的可能性,并且显然以最大可能结束,这是’count’本身的值。 确定循环中每个值的新增量。 如果delta为0,则完成此操作,否则将确定此新序列,该序列将提供此新增量。 可能还需要将新序列附加到当前序列。 i=0 […]

Rails中的递归路由

是否可以在Rails中创建递归路由? 我有一个应用程序,它允许管理员创建页面。 页面模型是嵌套集合,因此每个页面都有一个parent_id,因此页面以树形结构。 页面模型还使用Friendly ID插件为每个页面提供slug。 当用户浏览网站时,我希望他们在url中看到嵌套结构 – 它更适合搜索引擎以及任何可能想要通过切割url来浏览网站的用户。 我想要的东西是: http://example.com/page/page/page/page …等 现在显然我可以用10个巢创建一个嵌套的地图,并希望没有网站超过这个限制,但我很好奇是否还有另一种方式……

Ruby按顺序从字符串中获取所有长度的排列

这是我的代码 – $arr = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-” def scan(f) begin if f.size == 6 exit end $arr.each_char do |y| t = f + y puts t scan(t) end end end 我希望打印所有排列和长度达到6,我尝试过这种递归方法。 我得到的输出是 – A AA AAA AAAA AAAAA 不过,我寻求这样的事情 – A AA AB AC . . AZ AAA AAB . . AAZ . . upto 6 chars […]

Ruby:递归方法

def reverse_append(arr, n) return arr if n < 0 reverse_append(arr, n-1) arr < [0, 1, 2, 3, 4] 我似乎无法理解这种递归方法。 它产生一个从0到n的数组。 谁可以给我解释一下这个?

为什么我的helper递归方法不返回每个值?

我想显示一个用gem祖先管理的类别树。 我想使用一个帮助器,它将递归遍历树并逐个返回类别,目前没有html标签或内容。 module CategoriesHelper def display_tree(category) if category.has_children? category.children.each do |sub_category| display_tree(sub_category) puts(sub_category.name) # to check if it goes here end end category.name end end category参数是根类别之一。 该怎么回事? 在网页中:它仅显示根级别类别Sport Beauty Automobile 在控制台: Men Indoor Women Children Water sport Garage 如果得到它们,则意味着递归有效,但事实并非如此。 为什么它只返回第一次迭代? 我也希望按以下顺序获取它们: root/child/child-of-child 但如果我想返回category.name ,它应该在最后一个位置。 你能告诉我你的意见吗? PS:我刚刚发现(在添加标签期间)我在搜索过程中一直使用“递归”这个词,但它不存在,即使很多人在stackOveflow上使用它; o) – >“递归”,但是我还是被困住了 **编辑** 现在我使用这段代码: module CategoriesHelper def display_tree(category) […]

是否可以递归地要求Ruby中的目录中的所有文件?

我正在开发一个API,需要加载当前目录和所有子目录中的所有.rb文件。 目前,我正在为我添加的每个文件输入一个新的require语句,但是我想把它放在我只需要将文件放在其中一个子目录中并自动添加的地方。 是否有标准命令来执行此操作?