Ruby Anagram比较模块

时间:2015-10-07 18:19:17

标签: ruby

我是Ruby新手并试图找出在线测试的问题。问题如下:

  

anagram是通过重新排列字母而形成的另一个字,   使用所有原始字母一次;例如,管弦乐队   可以重新安排到马车。

     

编写一个函数,检查两个单词是否是彼此的字谜。

     

例如,AreAnagrams.are_anagrams?('momdad','dadmom')应该   返回true,因为参数是字谜。

我提出的代码是:

module AreAnagrams
  def self.are_anagrams?(string_a, string_b)
      ## Create @word1 variable to store string_a
      @word1 = string_a

      ## Create @word1_compare variable to store string_a in lower case
      @word1_compare = @word1.downcase

      ## Create @word2_compare variable to store string_b
      @word2 = string_b

      ## Create @word2_compare variable to store string_b in lower case
      @word2_compare = @word2.downcase

      ## Check length of @word1 and @word2 to make sure they are the same length
      if @word1.length == @word2.length

      =begin
        Sort the letters of the @word1 and @word2 variables and compare
        them to see if they are anagrams
      =end

      if @word1_compare.chars.sort.join == @word2_compare.chars.sort.join
          puts "#{@word1} and #{@word2} are anagrams!"
      else
          puts "#{@word1} and #{@word2} are not anagrams!"
      end
      else
          puts "#{@word1} and #{@word2} are not anagrams!"
      end
  end
end

当我提交代码时,我从测试中得到以下内容:

  

编译正常,但4个测试用例中有4个失败

     

示例案例:错误答案

     

带有独特字母的单词:错误答案

     

带有重复字母的单词:错误答案

     

一个词是另一个词的前缀:错误答案

我已经用多个字符串测试了我的代码,它似乎工作得很好。它看起来像是要我检查更具体的实例(特殊字符,带有重复字母的单词等)但是真的需要吗?对不起,如果这是一个愚蠢的问题,我是Ruby新手并且输了。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

我认为此处的问题是您正在显示消息,但未返回预期的truefalse值。

在每个puts之后,请包含相应的答案。这样你的方法将返回一些有用的东西。现在我假设它nil适用于所有情况,因为puts返回的是什么。