0
私はアプリのアカデミーの練習問題について質問しています。Rubyの挿入メソッドが要素を間違ったインデックスに挿入する
文字列内の文字列とインデックスの配列を取り込むメソッドを記述します。入力文字列 からの文字列をインデックスの配列のインデックスで指定された順序で含む新しい文字列を生成します。
私はそれを解決するためにRubyのinsertメソッドを使用してみました:
def scramble_string(string, positions)
arr = []
indx = 0
positions.each do |x|
arr.insert(x,string[indx])
indx += 1
end
return arr.join("")
end
puts scramble_string("abcd", [3, 1, 2, 0]) # for testing
puts scramble_string("markov", [5, 3, 1, 4, 2, 0]) # for testing
# These are tests to check that your code is working. After writing
# your solution, they should all print true.
puts("\nTests for #scramble_string")
puts("===============================================")
puts(
'scramble_string("abcd", [3, 1, 2, 0]) == "dbca": ' +
(scramble_string("abcd", [3, 1, 2, 0]) == "dbca").to_s
)
puts(
'scramble_string("markov", [5, 3, 1, 4, 2, 0]) == "vkaorm"): ' +
(scramble_string("markov", [5, 3, 1, 4, 2, 0]) == "vkaorm").to_s
)
puts("===============================================")
最初のチェック「ABCD」のために、それが正しい答え「DBCA」を出力しますが、2番目のテストが実行されたときに、私が取得間違った答え "vrokam"。正解は "vkaorm"であるはずです。なぜ私のコードが2回目のチェックのために働いていないのか分かりません。どんな助けもありがとうございます。
EDIT:
私は自分のコードに間違いを見つけました。代わり
arr.insert(x,string[indx])
の正しいコードが
arr.insert(indx,string[x])
を。ありがとう。配列のサイズを変更せずに挿入のように動作するメソッドはありますか? – JimmyW
juste do 'arr [x] =文字列[indx]' – djothefou