0

だから、これは私の頭を痛めています.私は明らかにプログラミングが得意ではありません. 私は持っている、

LetterArray = [a,b,c,d,e,f,g]
NumArray = [1,2,3,4,5,6,7,8,9,10]
ListOfLetters = []

and から要素を取得し、LetterArray でvar回NumArray上に移動し、その要素を追加します (たとえば、var を配列に追加します。次に、 内の次の番号に移動するなどです。次に、を出力します。慰める。LetterArray[0]xyyNumArrayListOfLetters

私の目標は、出力が次のようになることです[a, c, f, c, a, f, e, e, f, a]

コードでこれを行う方法については空白を描いています。

4

3 に答える 3

2

このようなもの(もちろん、あなたの要件が正しければ)?

letter_array = %w[a b c d e f g]
number_array = [1,2,3,4,5,6,7,8,9,10]
list_of_letters = []

number_array.inject(0) do |offset, delta| 
  list_of_letters << letter_array[offset] 
  (offset + delta) % letter_array.size
end

p list_of_letters #=> ["a", "b", "d", "g", "d", "b", "a", "a", "b", "d"]
于 2012-06-06T16:23:46.377 に答える
0

問題の説明が理解できないか、表示された出力例が特定の時点から間違っています。とにかく、これで始められるかもしれません:

letter_array = [*?a..?g]
number_array = *1..10
list_of_letters = []

number_array.inject(0) do |s, n| 
  i = s + n
  list_of_letters << letter_array[i % letter_array.size - 1] 
  i 
end

これにより、出力が生成されます["a", "c", "f", "c", "a", "g", "g", "a", "c", "f"]

または、最初にインデックスを作成してから使用することもできます (事前に初期化された は必要ありませんlist_of_letters)。

indices = number_array.inject([]) { |a, n| a << (a.last || 0) + n ; a})
list_of_letters = indices.map { |i| letter_array[i%letter_array.size-1] }
于 2012-06-06T15:46:00.180 に答える