如何检查红宝石线中的pangram?

1 io file line pangram

你们中有些人可能会注意到我已经使用了相同的痛苦代码。接受答案后,我不确定其他问题是否仍未解决。

现在,问题变得更简单了。我找到了一些检查pangram的代码。它曾经是def pangram?('entent'),但我需要在其中插入一行,因此我尝试将其更改为def pangram?(行)。它似乎与我的编码风格不太吻合,并且不起作用。我尝试使用.contain('a'。.'z')检查一个pangram,但我认识的人尝试了该操作,但没有成功。谷歌也没有太大的帮助。

关于如何在if stmt中检查pangram的任何想法?

# 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
Run Code Online (Sandbox Code Playgroud)

小智 5

我偏爱简单的语法,例如

def pangram?(line)
  ('a'..'z').all? { |word| line.downcase.include? (word) }
end

if pangram?(line) then file_pangram.write line end
Run Code Online (Sandbox Code Playgroud)