【问题标题】:Ruby palindrome words in a text file [closed]文本文件中的 Ruby 回文词 [关闭]
【发布时间】:2016-05-27 14:11:09
【问题描述】:

我正在尝试编写一个 ruby​​ 程序,它将查找并显示保存在文件示例中的回文词:(c:/palindrome.txt)。这个想法是读取文件的内容(几个单词)并仅打印回文单词。

@string=""
File.new("C:\\palindrome.txt", "r").each do |line|
@string += line
end

【问题讨论】:

  • 您需要提供更多信息。你试过什么了?粘贴一些代码。如果这是您遇到的特定错误,请告诉我们该错误是什么。
  • 请详细说明文件的内容。它包含标点符号吗?每行有一个单词吗?有些单词是大写的,有些不是吗?请编辑您的问题,而不是在评论中解释。
  • 为什么急于选择答案?您是否考虑过其他人可能正在准备答案?此外,快速选择可能会阻止其他可能更好的答案。这里的许多人至少要等几个小时。关键是,不要着急。
  • 答案很适合我的需要,也解决了我的问题。另一方面,即使我已经得到了正确的答案,其他人仍可能会尝试帮助我。这就是我可以节省其他人思考时间的方法。
  • 请在我的第一条评论中回复请求。你应该感谢那些将来会阅读这个问题的人。

标签: ruby palindrome


【解决方案1】:

这会起作用

words = File.read("c:/palindrome.txt")
words_array = words.downcase.split(" ")

palindromes = []

words_array.each do |word|
    if word.length>1
        palindromes << word if word == word.reverse
    end
end

puts palindromes

【讨论】:

  • 完美运行。谢谢
  • 可能使用:words_array.select{|w| w.length > 1 && w == w.reverse}
  • 您可能希望使用不带参数的split,这与split(/\s+/) 相同。 @大卫,为什么?
  • 在我看来,以这种方式链接方法更习惯。从语义上讲,任务是从数组中选择那些匹配条件的元素,我认为我建议的方法更接近于此——你会看着它说“啊,是的,这是从一个将符合条件的元素排列成数组。
  • 再进一步,您可能会决定创建一个继承自 String 的新类 Word,并在其上放置一个方法来定义 Word 实例是否为回文以及您所有其他与单词相关的行为。然后你可以: string_array.map{|s| Word.new(s)}.select(&:palindrome?) 那会很有趣。
猜你喜欢
  • 1970-01-01
  • 2014-12-28
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多