1

シーケンスとリストのリストがあるとします。

["A" "B" "C" "D" "E"] [[:1 :2][:3 :4 :5]]

そして、リストのリストの各要素にラベルを付けるためにシーケンスを使用したいと思います:

[["A" :1 "B" :2] ["C" :3 "D" :4 "E" :5]]

私のアルゴリズムはどうあるべきですか?


編集:スタックオーバーフローが与えることができる最良の答えは、コピーを作成してからそれを変更することであり、それはデータが特定の形状である場合にのみ機能しますか?

それは正しく、与えられた唯一の答えなので、私はその答えを受け入れましたが、確かにそれよりも良いことができますか?

4

1 に答える 1

1

かなり単純なはずです。シーケンス内でインデックスを移動しながら、サブリスト要素を反復処理します。リストがシーケンスよりも長い場合は、モジュロを使用して、シーケンスが最後に到達したときに移動インデックスをシーケンスの先頭に設定できます。

int index = 0

for(sublist in list) {
    for(element in sublist) {
        element.label = sequence[index++]
        index = index modulo length_of(sequence)
    }
}

サブリストにもサブリストを含めることができる場合は、おそらく再帰メソッドを作成する必要があります。

于 2013-01-07T14:50:51.733 に答える