問題タブ [run-length-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 投票する
4 に答える
1848 参照

performance - MATLAB でのランレングスのデコード

線形インデックスまたは を巧みに使用するために、ランレングス エンコーディングaccumarrayに基づいてシーケンスを生成する必要があると感じることがあります。これには組み込み関数がないため、RLE でエンコードされたシーケンスをデコードする最も効率的な方法を求めています。

仕様:

これを公平に比較​​するために、関数の仕様をいくつか設定したいと思います。

  • 同じ長さのオプションの 2 番目の引数valuesが指定されている場合、出力はそれらの値に従っている必要があります1:length(runLengths)
  • 優雅に処理:
    • ゼロインrunLengths
    • valuesセル配列です。
  • 出力ベクトルは、次と同じ列/行形式にする必要がありますrunLengths

つまり、関数は次のコードと同等でなければなりません。

例:

ここにいくつかのテストケースがあります

とその出力:

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

filesystems - ext ファイルシステムが、ファイルが使用するすべてのブロックを個別に追跡するのはなぜですか?

http://www.nongnu.org/ext2-doc/ext2.html#I-BLOCKから、ファイルがブロック11、12、13、14、15を使用している場合、値は11、12、13、14であることを理解しています、および 15 は、inode の最初の 5 (12 個の) 「直接ブロック」エントリに格納されます。

ファイルのブロック番号に必要なストレージが大幅に縮小されるため、代わりに一連の「範囲」を使用しないのはなぜですか。

上記のばかげた例では、5 要素から 2 要素に縮小されます。

1000 ブロックのファイルを 2 回実行すると、1000 要素から 4 要素に縮小されます。つまり、間接ブロックの使用を完全に避けることができます。

この単純な最適化が行われなかった理由は何ですか?

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

arrays - バイナリ配列で連続する 1 の数を見つける

MATLAB の論理配列内のすべての一連の 1 と 0 の長さを見つけたいです。これは私がしたことです:

これは機能し、 と を与えseriesOnes = [4 2 5]ますseriesZeros = [3 1 6]。しかし、私の意見ではかなり醜いです。

これを行うためのより良い方法があるかどうか知りたいです。これは安価であるため、パフォーマンスは問題にAなりません (要素数が数千以下)。コードの明快さと優雅さを求めています。

これ以上何もできない場合は、これを小さなヘルパー関数に入れるだけで、見る必要がなくなります。

0 投票する
1 に答える
1031 参照

java - ランレングス符号化二次元配列

二次元配列でランレングスエンコーディングを理解しようとしています。サイズ x サイズのボードに 0 と 1 をランダムに配置しました。次に、私のプログラムはジグザグ ウォーク (開始位置 = 右上隅) を実行して、そのパターンで 0 と 1 を読み取ります。以下に示すように、それは私にとってはうまくいきます。ただし、連続する 0 または 1 を読み取り、毎回出現する回数を数えるには助けが必要です。次に例を示します。

これが私がこれまでに持っているものです。

rlc[][] を実行するには、A[r][c] が 0 から 1 に、またはその逆に変化するたびに、カウントを記録してリセットすることを考えています。しかし、どうすればそれを組み込むことができますか。rlc[][] はそれをどのように覚えているのでしょうか? 例からわかるように、rlc[][] は 2 つの列の形式で表示されます (1 つは 0 または 1、秒はカウント)。どんなアイデアでも大歓迎です。ありがとう。

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

c - C での RunLength デコード

これは RunLength Decoding のための私のプログラムです。しかし、ガベージ値として出力を与えています。メソッドの出力char *decode_rle(char *a,int length)は正しいですが、メイン関数に返されると間違っています。

0 投票する
4 に答える
155 参照

matlab - 行列の列のランのカウント

私はランダムに点在する1sとの行列を持っています:-1s0s

入力:

nonzero次のようなものを生成するために、要素が列で繰り返される回数を数えたいと思います。

基本的な考え方は (@rayryeng 提供) です。列ごとに個別に、一意の数値にヒットするたびに、累積実行カウンターをインクリメントし始め、前の数値と同じ数値にヒットするたびにインクリメントします。新しい数字を打つとすぐに 1 にリセットされますが、0 を打った場合を除き、0 です。

期待される出力:

これを達成するための最もクリーンな方法は何ですか?