方法只影响一定数量?

时间:2014-09-26 02:55:02

标签: ruby arrays credit-card luhn

所以我试图通过一个简单的算法来验证信用卡号。我能够得到一些数字,但不是所有的数字,我无法弄清楚为什么。

class CreditCard

  def initialize(number)
    @number = (number.to_s.split("")).map! { |i| i.to_i}

    if @number.length != 16
      raise ArgumentError, "Not a valid credit card number"
    end

  end

  def check_card()

    @number.reverse!.map! do |i|
      if @number.index(i).odd?
        i * 2
      else
        i
      end
    end
    p "Here is my array: #{@number}"

    # split method
    # @number.map! do |num|
    #   if num >= 10
    #     num = num.to_s.split("").map! { |i| i.to_i }
    #   else
    #     num
    #   end
    # end
    # @number.flatten!

    #sum method
    # @number = @number.flatten!.inject(0) { |sum, element| sum + element}
    # if @number % 10 == 0
    #   return true
    # else
    #   return false
    # end





  end

end

当我传递6789678967896781(整数,而不是字符串)时,每个方法都有效。 当我通过1111111111111111时,它不起作用。我正在努力通过我所有的(诚然凌乱) 代码,我发现当控制命中时:

@number.reverse!.map! do |i|
      if @number.index(i).odd?
        i * 2
      else
        i
      end
    end

输出只是一个包含16个数组的数组。其余的代码已被注释掉,因为我无法通过rspec中的每个测试,所以我开始向后工作。我打算尝试进行拆分并添加方法私有方法,这些方法都由check_card方法调用。我真的觉得我需要第二双眼睛。我只是遗漏了一些东西。希望它是一个min鱼而不是鲸鱼。

0 个答案:

没有答案