Tag: 迭代

对于带有OR的for循环内的循环

我有点卡住了。 我想要回复我的post和我的follow_userspost。 我有一个名为“followed_users”的关联,所以我可以调用@ user.followed_users 这适用于“follow_users”post。 我还想包括我的post。 所以我的计划是首先检查我的post,然后遍历所有,看看哪个属于我的follow_users。 我的实现是返回我的post,但不是所有的follow_users。 我是在正确的轨道上吗?

Ruby – 使用多维数组比较数字

我正在研究一个问题,我需要将数字与一组数字进行比较,看看4个数字中的3个是否匹配。 例如: winning_numbers = [[“2537”], [“1294”], [“5142”]] my_number = “1234” 如果比较有3个匹配的数字则返回true。 如果比较小于3或完全匹配则返回false。 从我所读到的,我正在使用一个多维数组,但是我不明白如何在每个数组中循环一个数字,以便我可以将它与我的数字进行比较。 任何帮助将不胜感激。

Ruby代码qn。 如何减少迭代

我是ruby的新手,我想知道为什么会出现这个错误。 (抱歉格式不正确) 错误: rb37: in ‘%’: nil can’t be coerced into Fixnum (TypeError) 而且我的问题也需要帮助。 我想要提出一种方法来运行一个包含100万个ID号的列表,以便以最有效的方式(在不到5分钟内)找到一个特定的ID。 我整个下午一直在这里:( def exist?(id) dump = [] employee_list = $employee_list.sort #employee_list is an array of 1 million lines of data, I have to look for a specific “id” while dump.length < id dump << employee_list.first if dump.last != id if id%dump.last […]

在迭代时添加到数组

为什么这段代码’锁定’ruby? 什么是超越它的最佳方式? 我在下面发布了解决方案。 还有另一种方法吗? 提前致谢! 码: nums = [1, 2, 3] nums.each { |i| nums << i + 1 } 我的解决方案 nums = [1, 2, 3] adjustments = [] nums.each { |i| adjustments << i + 1 } nums += adjustments

多次迭代

是否有一种更简单,更清晰的方式来编写这样的代码: (1..10).each do |i| (1..10).each do |j| (1..10).each do |k| (1..10).each do |l| puts “#{i} #{j} #{k} #{l}” end end end end 理想情况下,我可以做… (1..10).magic(4) { |i, j, k, l| puts “#{i} #{j} #{k} #{l}” } 甚至更好…… magic(10, 4) { |i, j, k, l| puts “#{i} #{j} #{k} #{l}” } 如果没有内置的东西,我怎么写一个像最后一个方法?

迭代/排序来自两个具有不同属性的不同模型

我有一个活动菜单,应该显示由created_at排序的两个不同模型的项目。 我知道如何迭代和排序单个模型中的项目,但是当我尝试组合结果时。 然后我无法迭代,因为属性会有所不同。 所以下面没有意义。 由于post具有不同的事件属性。 在我的脑海中,我正在考虑单独对它们进行排序,但是我不确定如何将@post和@events显示为一个组,而不是显示一个然后显示另一个结果。 跟进: 这个

嵌套循环Ruby

难以理解这个嵌套循环问题: 你有10个鹅卵石(编号1-10)。 它们默认为黑色。 如果它们是黑色的,则必须将它们涂成白色,或者如果它们是白色则将它们涂成黑色。 共有10轮。 每一轮,你必须改变当前轮次倍数的鹅卵石。 鹅卵石默认为黑色。 第一轮,你改变每一块鹅卵石(将它们全部涂成白色)。 第二轮,你改变所有其他鹅卵石(你画鹅卵石#2,4,6,8,10黑色)。 第3轮,你改变鹅卵石#3,6,9。 第4轮你改变鹅卵石#4,8。 … … 第10轮,你改变#10卵石。 在第10轮之后,哪些鹅卵石被涂成黑色并且涂成白色? 我没有运行的解决方案如下(我尝试通过制作一组数字(转换为字符串)并添加“w”(如果涂成白色)并删除“w”(如果涂成黑色)。 (我已经尝试编辑它以使其运行,但我是嵌套循环的新手,我只是没有理解这个概念)。 如果有人能向我解释我做错了什么并给出更好的解决方案,我将不胜感激。 pebbles = (1..10).map {|element| element.to_s} pebble_colors = (1..10).map {|element| element.to_s} (1..10).each do |round| pebbles_to_paint = [] pebbles.each_with_index {|element, index| pebbles_to_paint << index if element % round == 0} pebbles_to_paint.each do |pebble_number| if pebble_color[pebble_number].include?("w") pebble_color[pebble_number].delete!("w") else pebble_color[pebble_number] << […]

Ruby:一次从字符串和两个数组值构建哈希

我正在尝试使用以下方法构建哈希: hash = {} strings = [“one”, “two”, “three”] array = [1, 2, 3, 4, 5, 6] 所以我最终得到: hash = { “one” => [1, 2] , “two” => [3, 4] , “three” => [5, 6] } 我试过了: strings.each do |string| array.each_slice(2) do |numbers| hash[string] = [numbers[0], numbers[1]] end end 但是产量: hash = { “one” => […]

映射数组仅修改与特定条件匹配的元素

在Ruby中,以某种方式映射数组的最具表现力的方式是什么?某些元素被修改而其他元素保持不变 ? 这是一种直截了当的方式: old_a = [“a”, “b”, “c”] # [“a”, “b”, “c”] new_a = old_a.map { |x| (x==”b” ? x+”!” : x) } # [“a”, “b!”, “c”] 当然,如果不够的话,省略“单独”的情况: new_a = old_a.map { |x| x+”!” if x==”b” } # [nil, “b!”, nil] 我想要的是这样的: new_a = old_a.map_modifying_only_elements_where (Proc.new {|x| x == “b”}) do |y| y + “!” […]

使用Ruby迭代JSON并获取数组中的键值

我在使用这个JSON时遇到了一些麻烦: { “ENAX-BRANCHESM-10” : { “repo”:”test-ASO”, “PATH”:”/tmp/pruebaAlvaro”, “ARTIFACTS”:”example1.jar,another_one.jar,and_another.jar”, “uri”:”http://server:8081/artifactory/test-ASO”, “created”:”A705663″ }, “QZQP-QZQPMAN-16” : { “repo”: “test-ASO”, “PATH”: “/tmp/pruebaAlvaro2”, “ARTIFACTS”: “test543.jar,thisisa.jar,yesanother.jar”, “uri”: “http://server:8081/artifactory/test-ASO”, “created”: “A705663” } } 我正在尝试遍历列表以获取每个列表的PATH和ARTIFACTS值,在示例中有两个列表,但实际上有几十个。 目的是了解将哪个工件部署到其自己的路径。 例如: /tmp/pruebaAlvaro example1.jar /tmp/pruebaAlvaro another_one.jar /tmp/pruebaAlvaro and_another.jar /tmp/pruebaAlvaro2 test543.jar /tmp/pruebaAlvaro2 thisisa.jar /tmp/pruebaAlvaro2 yesanother.jar 在我深入搜索之后,我仍然无法得到解决方案。