1

ruby チャレンジのトレーニングの一環として、文字列を受け取り、すべての部分文字列を含む配列を返すメソッド substrings(string) を作成するように依頼されました。

すなわち

substrings("cat") #=> ["c", "ca", "cat", "a", "at", "t"]

これを行うために、次のメソッドを作成しようとしましたが、実行するとエラーが発生します ArgumentError: wrong number of arguments (at least 1)

def substrings(string)
  i = 0 
  answer_arr = []

  while i < string.count 
    for val in i...string.count do 
      substring = string.(i..val)
      unless answer_arr.include?(substring)
        answer_arr << substring
      end
    end
    i+=1
  end
  answer_arr
end

substrings("stepan")

どんな助けでも大歓迎です!

4

4 に答える 4

4

count は、使用する方法が正しくありませんでした。長さだったはず

def substrings(string)

    i = 0 
    answer_arr = []

    while i < string.length 
        for val in i...string.length do 
            substring = string[i..val]
            unless answer_arr.include?(substring)
                answer_arr << substring
            end
        end
        i+=1
    end

    answer_arr
end

substrings("stepan")
于 2013-09-03T07:50:33.620 に答える
0
def substrings(string)
  (0...string.length).flat_map { |i|
    (i...string.length).map {
      |j| string[i..j]
    }
  }
end

例:

>> substrings('cat')
=> ["c", "ca", "cat", "a", "at", "t"]
于 2013-09-03T07:56:44.370 に答える