【问题标题】:Permutation gem排列宝石
【发布时间】:2011-09-22 16:54:30
【问题描述】:

我正在尝试获取一个字符串列表,这些字符串是字母、数字和破折号的排列,长度从 1 到 63 不等。 我正在使用排列 gem,并尝试使用 join('') 获取字符串。

length = 1
alphabet = [('a'..'z').to_a, ('0'..'9').to_a, ('-').to_a].flatten
while length < 64
  puts (alphabet.permutation(length){|x| p x}).join('')
  length += 1
end

我得到的输出如下:

["r", "q", "l"]
["r", "q", "m"]

我确信我在这里遗漏了一些基本的东西。 非常感谢任何帮助。

【问题讨论】:

  • p 返回nil,顺便说一句,所以puts (nil).join('') 没有任何意义。
  • 是的,它确实有效... "file--53.txt" "file--54.txt" 但是,我试图摆脱块中的“p”并分配整个字符串到一个实例变量,然后进入一个数据库。
  • 顺便说一句,你没有在这里使用排列宝石:P 这只是 ruby​​ >= 1.8.7
  • 哈哈!感谢您的提醒,因此下载排列 gem 和阅读它是浪费时间。
  • 回答了我自己的问题...取出块并将其分解为 .each do |x| 等。谢谢大家的帮助。 :)

标签: ruby permutation ruby-1.8


【解决方案1】:

不确定您要完成什么。下面的代码呢(一个简化的例子):

['a','b','c'].permutation(3).collect { |x| x.join('')}

返回,

=> ["abc", "acb", "bac", "bca", "cab", "cba"] 

【讨论】:

  • Hmmmmm...如何将连接的输出分配给变量...我正在尝试 {|x| @variable = x.join('')} 但它没有给我我想要的。
  • @perm_or_not_to_perm 你想存储整个数组吗?如果是这样,请尝试@variable = ['a','b','c'].permutation(3).collect { |x| x.join('')}
【解决方案2】:

那么让我们用这种机制进行 SQL 查询:

假设我想在数据库中查找一个人。人有名字和姓氏,而不仅仅是“姓名”。更复杂的是,Firstname 和 Lastname 都可能包含许多单词。

...所以我们有来自搜索引擎的查询字符串,其中包含 "Jo Svenda Schmidt" ,其中 "Jo Svenda" 是名字。

query = "Jo Svenda Schmidt".split
=> ["Jo", "Svenda", "Schmidt"]
query.permutation(query.length).collect { |x| x.join(" AND ") }.join(" OR ")

=> "Jo AND Svenda AND Schmidt OR Jo AND Schmidt AND Svenda OR Svenda AND Jo AND Schmidt OR Svenda AND Schmidt AND Jo OR Schmidt AND Jo AND Svenda OR Schmidt AND Svenda AND Jo"

这几乎是我们想要的,但不是全部。我们需要添加列名并将其分组。 分组可能很简单,只是 ...加入(“)或(”) 在 and 处,然后将“(”添加到结果查询的开头,将“)”添加到结果查询的末尾。

但是如何在这个查询中很好地添加 'Firstname=' 和 'Lastname=' 或 'LIKE' 呢?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多