【问题标题】:Combining words in a string into anagrams using ruby使用 ruby​​ 将字符串中的单词组合成字谜
【发布时间】:2014-12-03 14:58:47
【问题描述】:

我想制作一个程序,在该程序中,我可以对作为字谜的字符进行排序并将其存储到各个组中。例如字符串:

“四款疤痕膏的尖叫车”答案应该是:

[["scream", "creams"], ["cars", "scar"], ["for"], ["four"]] 

上面我使用了代码:

here = self.split()
there = here.group_by { |x| x.downcase.chars.sort}.values

我得到了所需的答案。但是当我将代码更改为:

here = self.split()
there = here.group_by { |x| x.downcase.chars.sort}

我得到了答案:

{["a", "c", "e", "m", "r", "s"]=>["scream", "creams"], ["a", "c", "r", "s"]=>["cars", "scar"], ["f", "o", "r"]=>["for"], ["f", "o", "r", "u"]=>["four"]} 

我想知道为什么现在会这样?我是通过hit-and-trial方法得到答案的。

【问题讨论】:

  • 你正在使用返回哈希的 group_by 你可以在这里看到ruby-doc.org/core-2.1.5/Enumerable.html#method-i-group_by
  • @Kranthi 我想知道为什么删除“值”会将答案从所需变为我最终得到的?
  • 因为您使用#chars 根据字符对它们进行排序。
  • 首先它对字母进行排序,然后反复检查哪个单词与之匹配,并根据它对单词进行分组。
  • @Rohit 因为values 是一种方法:返回一个新数组,其中填充了来自 hsh 的值。 ( www.ruby-doc.org/core-2.1.4/Hash.html#method-i-values )。当你删除它时,你会得到整个哈希,而不是值数组。

标签: ruby regex split group-by


【解决方案1】:

正如 Yevgeniy Anfilofyev 所评论的,values 是一种方法,因此它

返回一个用哈希值填充的新数组

同时,如果我们删除方法values,那么我们会得到整个哈希值,而不仅仅是值的array

【讨论】:

    猜你喜欢
    • 2012-03-27
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2021-09-16
    • 1970-01-01
    相关资源
    最近更新 更多