問題タブ [zigzag-encoding]

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.

0 投票する
6 に答える
9114 参照

language-agnostic - ジグザグデコード

googleプロトコルバッファエンコーディングの概要では、「ジグザグエンコーディング」と呼ばれるものが導入されています。これは、大きさが小さい符号付き数値を取得し、大きさが小さい一連の符号なし数値を作成します。

例えば

等々。彼らがこれのために与えるエンコーディング関数はかなり賢いです、それは次のとおりです:

これがどのように機能するかは理解していますが、これを逆にして符号付き32ビット整数にデコードする方法を一生理解することはできません。

0 投票する
3 に答える
8319 参照

protocol-buffers - Googleプロトコルバッファ:ZigZagエンコーディング

エンコーディングの「署名されたタイプ」から-プロトコルバッファ-Googleコード

ZigZagエンコーディングは、符号付き整数を符号なし整数にマップするため、絶対値が小さい(たとえば、-1)数値もvarintエンコード値が小さくなります。これは、正と負の整数を前後に「ジグザグ」する方法で行われるため、-1は1としてエンコードされ、1は2としてエンコードされ、-2は3としてエンコードされ、以下同様に続きます。次の表で確認できます。

言い換えると、各値nは次を使用してエンコードされます。

(n << 1) ^ (n >> 31)

sint32sの場合、または

(n << 1) ^ (n >> 63)

64ビットバージョンの場合。

テーブルの内容はどのように(n << 1) ^ (n >> 31)等しくなりますか?私はそれがポジティブに機能することを理解していますが、それはたとえば-1にどのように機能しますか?-1は1111 1111、ではないでしょ(n << 1)1111 1110か?(ネガのビットシフトはどの言語でもうまく形成されていますか?)

それでも、数式を使用して実行すると(-1 << 1) ^ (-1 >> 31)、32ビット整数を想定する1111 1111と40億になりますが、表では1が必要であると考えています。

0 投票する
2 に答える
9732 参照

python - Python でジグザグ配列を作成する関数

位置の北南の距離を表すの整数の配列を作成しようとしています - 配列の要素をジグザグの順序で表示する必要があります。

つまり、最大のメンバーが最初に表示され、最小のメンバーが 2 番目に表示され、残りの要素は、最大のメンバーから減少する大きなメンバーと、最小のメンバーから増加する小さなメンバーとの間で交互に表示されます。

つまり、配列 [1, 3, 6, 9, -3] は [9, -3, 6, 1, 3] になります。

wiggleArrangeArrayn 個の整数の整数配列を 1 つの引数として受け取るfunction を完成させようとしています。

必要な入力形式、制約、および出力形式 ここに画像の説明を入力

なんて言っていいのかわからない

「配列内の項目が配列内の他の項目よりも大きい場合は、最初に表示します。」

「項目が配列内の他の項目よりも小さい場合は、2 番目に表示します。」

「次に大きい数字と次に小さい数字を交互に」

可能であれば助けてください。これはC++のソリューションへのリンクですが、Pythonで必要です。ありがとう。

編集:関数は次のテストで動作する必要があります:

0 投票する
0 に答える
183 参照

python - ND行列をジグザグに並べ替え/再形成する方法は?

このようにテンソルのセルをソートしたい

ここに画像の説明を入力

各セルは単一の値ではなく、値のスタック (DCT コンポーネント) であることに注意してください。したがって、元のテンソルの次元は 2D ではありません。