2012-04-26 5 views
0

皆さんは既に同じ苦痛なコードで既に私が戻っていることに気付くかもしれません。私は他の質問がまだ開いているかどうか、私は答えを受け入れるかどうかは分かりません。ルビーの行にあるパングラムはどうやってチェックするのですか?

問題は少し簡単です。私はパングラムをチェックするコードをいくつか見つけました。それはdef pangram?( 'sentence')に使うのですが、そこに入るためにはラインが必要でしたので、それをdef pangramに変更しようとしましたか?私のコーディングスタイルにうまく適合しないようで、うまくいきません。私は.contain( 'a'。 'z')を使ってパングラムをチェックしようとしましたが、私が知っている誰かがそれを試しても動作しませんでした。また、Googleは多くの助けもありません。

if stmtのpangramsをチェックする方法はありますか?

# 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 
+0

ような何か簡単な構文に部分的です。 –

+0

また、 'pangram?()'実装([Rosetta Codeからのストレート](http://rosettacode.org/wiki/Pangram_checker#Ruby)、btw)はうまく動作するので、問題は他の場所にあります。 http://ideone.com/HHbfi –

+0

申し訳ありませんが質問を投稿するときに私は何かを乱した。私のコードがひどいと思っていた。それは私の圧痕を取り除いた。 –

答えて

4

私は、あなたが本当に[SSCCE](http://sscce.org)にご質問のコードを減らすことで動作するはずです

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

if pangram?(line) then file_pangram.write line end 
関連する問題