0

我对编程非常陌生,并且是 Ruby 的初学者。我做了很多搜索以尝试找到我需要的答案,但似乎没有什么能与我正在寻找的东西相匹配。

我需要制定一个工作计划,它将:

  1. 从用户那里获取关键字
  2. 将这些关键字与句子数据库中的相同关键字匹配,然后
  3. 吐出随机句子:
    1. 包含所有关键字 1 次
    2. 不包含未列出的关键字
    3. 不要重复关键字

重要提示:句子都有几个关键字的组合,而不是每个句子一个

1和2没问题,我已经能够做到了。我的问题出在第 3 部分。我尝试过一长串“如果包含?” 参数,但它永远不会工作,我知道必须有更好的方法来做到这一点。

我对 Ruby(和一般编程)的掌握是基本的,我真的不知道它可以做什么和不能做什么,因此非常感谢任何关于哪些功能有用的提示或提示。

4

1 回答 1

0

如果找到匹配项,为什么不连续将其从数组/数据库中弹出?它将确保没有重复,因为该记录不会出现以供以后匹配。不?考虑这个片段:

db=%q(It is hot today), %q(It is going to rain), %q(Where are you, sonny?), %q(sentence contains is and are)
keyw=%w(is am are)
de=[]
keyw.each do |word|
    for index in 0...db.length  
        if db[index].include?(word)    
            puts "Matched #{word} with #{db[index]}"      
            de<<index
        end  
    end  
    until de.empty?
        db.delete_at(de.pop)
    end
end 

db 是数据库示例,keyw 包含关键字。

对应输出:

Matched is with It is hot today
Matched is with It is going to rain
Matched is with sentence contains is and are
Matched are with Where are you, sonny?

没有重复。:)

于 2012-05-06T05:42:02.933 回答