問題タブ [array-indexing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - $p$ コンマを使用した部分配列
サイズ (nx m_1 x m_2 x m_3) の配列 Y があるとします。サイズ (m_1 x m_2 x m_3) の最初のサブ配列が必要な場合は、次のようにカンマを使用して選択できます
同様に、Y のサイズが (nx m_1 x m_2 x m_3 x m_4) で、サイズ (m_1 x m_2 x m_3 x m_4) の最初のサブ配列が必要な場合は、次のようにコンマを使用して選択できます。
一般に、Y がサイズ (nx m_1 x m_2 x ... x m_p) の配列で、サイズ (m_1 x m_2 x ... x m_p) の最初のサブ配列が必要な場合、次のように選択できます。
ここで、,..., は p 個の異なるコンマを意味します。p がわかっている場合、p のコンマはどのように書けばよいでしょうか?
簡単な解決策は
ただし、これは非効率的なコードです (Y は巨大になる可能性があるため、これを行列に変換してから配列に戻すことは避けたいと考えています)。
vhdl - VHDL 2008: 生成されたインスタンスを含む外部名のインデックス
テストベンチの場合、外部名を使用して DUT 内の信号を読み取ろうとしています。これらの信号を DUT の外部にエクスポートすることは望ましくないため、ここでは外部名を使用することが最善の選択肢であると結論付けました。
残念ながら、for generate
DUT にはいくつかのステートメントがあり、これにより、何らかの理由で DUT の外部に信号を割り当てることが非常に困難になっているようです。
これらの生成システムの 1 つが次のようになります。
最初の生成の外部名の定義は、次のようにして std_logic_vector 信号に入れることができますalias_signal
。
これは正しく動作します。ただし、 の値が大きいgen_loops
ため、関連する生成インデックスに対応するインデックスを使用して、外部 std_logic 信号を std_logic_vectors に割り当てたいと考えています。
私が最初に試したのは、インデックスを除外し、外部名を std_logic_vector として定義することでした。
Sigasi によると、これはまったく問題ありませんが、Questasim でコンパイルすると、これを行う行ごとに次のエラーが発生します。
これは、何があってもインデックスを使用する必要があることを意味すると思います。
次の明らかなステップは、変数for_val
を指定した for ループを使用して、 のすべての反復に対処することですentity_block
。
奇妙なことに、これにより Sigasi でエラーが発生し、「に対応する宣言が見つかりませんでした」と主張しますfor_val
。どういうわけか、外部名内で for_val の値が失われ、外部名の定義がコードの残りの部分から何らかの形で分離されています。for_val の代わりに数値を書くことですべてが正常に機能することを覚えておいてください。ただし、 の値が大きいためgen_loops
、これはかなり骨の折れる作業です。
誰かが私が間違っていることを見ることができますか? この方法よりも良い方法の提案はありますか? Sigasi はばかですか、それとも私ですか? よろしくお願いします:)
以下の最小限の再現可能な例: tb_name:
DUT_名:
エンティティ名:
java - for ループ内の配列値で +5 (または任意の +number) ジャンプを行う方法は?
だから私は同じ番号の5つのインスタンスを見つける必要がある数字で構成されるデータの列を持っています.
したがって、たとえば、8,8,8,8,8,8,8,8,8,9,9,9,5,6,4,7,,6,2,3 などです。この 8 には、 9回発生。したがって、カウントを1回だけインクリメントしたいのは、8が9つあるにもかかわらず、コードが最初の8を取得し、5つの連続した数字を取得してインクリメントしているためです。次に、次の8を取り、カウントをインクリメントし、カウントが5になるところをインクリメントしますが、1にしたいのですが、最初に出現した任意の数字をベース値にし、5つの連続した数字を取り、カウントをインクリメントします. 次に、6 番目の 8 を取り、5 つの連続した 8 があるか、またはその特定の数があるかどうかを数えます。たとえば、8,8,8,8,8,8,9,9,9,9,9,9,9,9,5,5,5,5,5,1,1,2,2 ,5,4,3,6,7,9,3,4,2,2,2,2,2,1,2,1. この場合、カウントは 4 になるはずです。
私のエラーはロジックにあるため、どの言語のロジックでも問題ありません。助けてくれてありがとう。それは大歓迎です:)。
余分な精緻化
したがって、最初のものには、指定した方法で 5 つの連続した 8 しかありません。したがって、最初のものには出力 count =1 があります。2 番目の番号では、同じ開始番号の連続する 5 つの数字のうち 4 つがあります。したがって、出力は 4 になります。別の例として、8,8,8,8,8,8,8,8,8,8(10 の 8),9,9,9,9,4,5,6 が挙げられます。 、4,6,6,6,6,6. この では、カウントを 2 にインクリメントする 10 個の 8 と、もう一度カウントをインクリメントする別の 5 つの連続した 6 があるため、カウントは 3 である必要があります。合計数は 3 になります。
エラーは、配列インデックスを a[i] から a[i+5] にジャンプできないことです。したがって、最初のものには、指定した方法で 5 つの連続した 8 しかありません。したがって、最初のものには出力 count =1 があります。2 番目の番号では、同じ開始番号の連続する 5 つの数字のうち 4 つがあります。したがって、出力は 4 になります。別の例として、8,8,8,8,8,8,8,8,8,8(10 の 8),9,9,9,9,4,5,6 が挙げられます。 、4,6,6,6,6,6. この では、カウントを 2 にインクリメントする 10 個の 8 と、もう一度カウントをインクリメントする別の 5 つの連続した 6 があるため、カウントは 3 にする必要があります。合計数は 3 になります。私の問題は 、条件が満たされたときに for ループで配列インデックスをx から x+5にスキップ/ジャンプできないことです。