私はA = [X, 0, X, Y, Y, 0, 0, Y, Z, 0, 0, 0, Z, 0, T, 0, T, 0]
のような配列を持っています。私は配列A
からY
を取り除き、Z
とT
(Z
とT
の位置を置き換えて0
の位置に置き換えることによって)それらの位置を置き換えるアルゴリズムを書こうとしています。だから、私は得るだろう特定の場所で配列のサブセットを左にシフトする方法はありますか?
- 元の配列は
A = [X, 0, X, Y, Y, 0, 0, Y, Z, 0, 0, 0, Z, 0, T, 0, T, 0]
です。 - 結果は
A = [X, 0, X, Z, Z, 0, 0, T, T, 0, 0, 0, 0, 0, 0, 0, 0, 0]
です。
私は次のことを試してみました:
- インデックス
I={i: A[i] = Y}
を見つけます。 - インデックスを見つける
J={j: A[j] != 0 & j > max(I)}
。 size(I)>=size(J)
の場合は、i
をループスルーI
とj
ループスルーJ
とします。- を
A[i]=A[j]
と設定し、両方をi
とj
とします。
私の問題はケースsize(I)<size(J)
ですか?ここ
は別の例である:
- 元の配列が
A = [X, Y, Y, Y, Z, 0, T]
です。 - 結果は
A = [X, Z, T, 0, 0, 0, 0]
です。
別の例:
- 元の配列が
A = [X, Y, 0, Y, Z, T]
あります。 - 結果は
A = [X, Z, 0, T, 0, 0]
です。
私は両方の 'Z 'を左にシフトするので。 – Ribz
StackOverflowはあなた自身の問題を最初に解決しようとしています(http://meta.stackoverflow.com/questions/261592)。また、[宿題に関する質問に回答しない](https://softwareengineering.meta。 stackexchange.com/questions/6166)。既に試した内容を[最小限で完全で検証可能な例](http://stackoverflow.com/help/mcve)に表示するために質問を更新してください。詳細については、[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を参照し、[サイトの見学]を受けてください(http://stackoverflow.com/tour ):) – Barmar
私は試したことを書きましたが、これは宿題の問題ではありません。たぶん、あなたが見ているのは、pythonの部分です。私はその後Pythonを削除します。 – Ribz