首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ruby中检查一行中的pangram?

如何在ruby中检查一行中的pangram?
EN

Stack Overflow用户
提问于 2012-04-26 10:47:48
回答 1查看 2K关注 0票数 1

你们中的一些人可能已经注意到我已经带着同样痛苦的代码回来了。一旦我接受了答案,我不确定另一个问题是否仍然有效。

现在问题就简单了一点。我找到了一些检查pangrams的代码。它以前是def pangram?(‘句子’),但是我需要一行才能放进去,所以我试着把它改为def pangram?( line )。它似乎与我的编码风格不太协调,也不能工作。我试着使用.contain('a‘。。'z')来检查pangram,但我认识的一个人试过了,但没有起作用。此外,谷歌也帮不了太多忙。

对于如何在if stmt中检查pangram有什么建议吗?

代码语言:javascript
运行
复制
# To change this template, choose Tools | Templates
# and open the template in the editor
# This program reads a file line by line,
#separating lines by writing into certain text files.
#PPQ - Pangrams, Palindromes, and Quotes
class PPQ
  def pangram?(line)
    unused_letters = ('a'..'z').to_a - line.downcase.chars.to_a
    unused_letters.empty?
  end
  def categorize
    file_pangram = File.new('pangram.txt', 'w')
    file_palindrome = File.new('palindrome.txt', 'w')
    file_quotes = File.new('quotes.txt','w')
    File.open('ruby1.txt','r') do |file|
      while line = file.gets
        if(line.reverse == line)
          file_palindrome.write line
        elsif(pangram?(line)== true)
          file_pangram.write line
        else
          file_quotes.write line
        end
      end
    end
    file.close
    file_pangram.close
    file_palindrome.close
    file_quotes.close
   end
end
my_ruby_assignment = PPQ.new
my_ruby_assignment.categorize
EN

回答 1

Stack Overflow用户

发布于 2016-05-20 14:46:11

我倾向于使用更简单的语法,比如

代码语言:javascript
运行
复制
def pangram?(line)
  ('a'..'z').all? { |word| line.downcase.include? (word) }
end

if pangram?(line) then file_pangram.write line end
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10326547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档