次のケースがあり、重いループやスライスを行わずに一般的な解決策を得たいと考えています。
まず:
N
それを介してリストサイズ(初期サイズ)を計算する初期化します:
この方程式を通してN(N-1)/2
..
N = 5
初期サイズが になるように設定したとしましょう10
。
その後、リストに 1 と 0 をいくつかのメソッドで埋めます。
このような :
0 1 0 1 1 1 0 1 0 1
このリストは、セグメントが (N-1) である N に従ってセグメント化されています。
そう
- 最初のセグメントは次のとおりです。
0 1 0 1
- 2 番目のセグメントは次のとおりです。
1 1 0
- 3 番目のセグメントは次のとおりです。
1 0
- 第 4 セグメントは次のとおりです。
1
[0 1 0 1] [1 1 0] [1 0] [1]
私がやりたいことは、入力 N として任意の数値を再度入力する場合です。
適切なシフトで以前のデータを維持する
新しいサイズによると、たとえば N=6 の場合、サイズは 15 になります。
したがって、4 つの代わりに 5 つのセグメントを使用します。
私はこのようにしたい:
[0 1 0 1 0 ] [1 1 0 0 ] [1 0 0 ] [1 0 ] [ 0 ]
逆に、最初に N = 7 を入力して入力すると、N = 4 と入力します。
正しい変速をしたい