2

私のコードは、これを除くすべてのテスト条件(配列、文字列、ハッシュなど)に合格しました:

ValidPalindromeTest.new(81,96).palindrome?

true を返す必要がありますが、そうではありません。コードは次のとおりです。

class String
  def palindrome?     
    self.gsub(/\W/,"").downcase == self.gsub(/\W/,"").downcase.reverse
  end
end

module Enumerable
  def palindrome?
    if self.is_a?(Hash)
      false
    else
      self.to_a.join('').gsub(/\W/,"").downcase == self.to_a.join('').gsub(/\W/,"").downcase.reverse
    end
  end
end

しかし、私がに変更するとき

module Enumerable
  def palindrome?
    if self.is_a?(Hash)
      false
    else
      self.to_a == self.to_a.reverse
    end
end

できます。

問題は、 の型は何ValidPalindromeTest.new(81,96)ですか? それは型のインスタンスであるべきValidPalindromeTestですよね?2番目のメソッドはどのようにパスauto_graderできますか?最初のメソッドはパスできませんか? 私の考えでは、機能する限りself.to_a、残り ( .join('').gsub(/\W/,"").downcase) も機能するはずです。

4

1 に答える 1

0

何をしようとしているのかよくわかりませんが、配列が「回文」であるかどうかを知るメソッドが目標に設定されている場合、最初のメソッドは次のような配列を渡すと true と評価されると思い%w( ani ta la va la ti na )ます2 番目は のような配列で true と評価されます[0,2,3,2,0]。つまり、これらのメソッドは異なるものを評価し、同じオブジェクトでテストしても両方とも true を返しません。最初のメソッド評価はより複雑で、何か違うことをします。ただし、そのメソッドを Enumerable に混在させようとしている場合、なぜself.to_a?

于 2012-10-16T04:04:10.837 に答える