問題タブ [bijection]

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 投票する
1 に答える
75 参照

javascript - 数値からソートされた一意の文字列を返します

私は基数10の数値である入力を持っています:1, 2, 3, 52, 53 ...

a数値を文字で構築された文字列に変換したいと思いzます。各数字には、文字の組み合わせが 1 つだけ存在し、アルファベット順に並べ替える必要があります。

現時点では、このスニペットを作成しています:

正解にはほど遠いですが、それでも間違っています。

関数の正しい形式は何ですか?

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

c++ - C++ の行列のような構造に対するインデックス ベースのアクセス

次の形式で、2 つのエンコーディング セット (関連なし: Unicodeと GB18030 ) 間のマッピング Nx2 があります: icu/データ/トランク/文字セット/データ/xml/gb-18030-2000.xml

スナップショット:

b 値 (右列) をデータ構造に保存し、a 値 (左列) に基づくインデックスを使用して (検索なしで) 直接アクセスしたいと考えています。

例:

これらの要素を次のようなデータ構造に格納できます。

unsigned short *my_page[256] = {my_00,my_01, ....., my_ff}

要素は次のように定義されます。

static unsigned short my_00[256] など

. したがって、基本的にはマトリックスのマトリックス => 256x256 = 65536 の利用可能な要素です。

要素が少なく、値が異なる他のエンコーディング (例: 中国語の Big5、日本語の Shift、韓国の KSC など) の場合、次のような全単射関数を使用して要素にアクセスできます。

element = my_page[(unicode[i]>>8)&0x00FF][unicode[i]&0x00FF];ここでunicode[i] は、マッピングからのa のような要素で埋められます (上記のとおり)。my_page 構造を生成して埋める方法は似ています。作業中のエンコーディングについては、約 7000 文字を保存する必要があります (それらは my_page の一意の場所に保存されます)。

問題は GB18030 エンコーディングにあり、my_page に 30861 要素 (65536 要素) を格納しようとします。同じ全単射関数を使用して my_page 構造体を埋めようとしています (そして同様にアクセスします) が、アクセス モードが一意の結果を返さないため失敗します。

例: Unicode 値の場合、たとえばii+1my_page[(unicode[i]>>8)&0x00FF][unicode[i]&0x00FF]のインデックスが同じになる可能性があるため、複数の要素にアクセスできます 。私がやろうとしていたように、事前に計算されたインデックスのみに基づいて my_page 構造内の要素にアクセス/入力する別の方法を知っていますか?

値の範囲 VRangeを返す疑似ハッシュ関数のようなものを使用する必要があると仮定し、一連のルールに基づいて範囲 VRange から my_page[256][256] の整数インデックスを抽出できます。

何かアドバイスがあれば、教えてください:)

ありがとうございました !

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

algorithm - 正確に N 個の項目を疑似ランダムに並べ替える関数は?

1 から N までの自然数 (N は約 1e7) を持ち、値の範囲と比較して、かなり短いパラメーター セットによって定義される方法でセットを並べ替える関数を夢見ています。

N = 2^i - 1これは単なるビットの並べ替えである可能性があるため、 の値のみのセットがミューiテーションを0..i 定義します。

任意の N に適用できる、同様に美しい方法を探しています。


ビット並べ替えの例。8 つの値:0..7は 3 ビットでエンコードされます: 000 – 111. そのセットを並べ替えるために、各ビットの新しい位置を保存しました。配列[0,1,2]を取得してランダムに並べ替え、その結果を順列キーとして保存します。つまり[1,0,2]、次のように 8 つの値を並べ替えます。

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

parsing - 正確な入力を再構築できるパーサーを作成する確立された方法はありますか?

言語Xでファイルを解析したいとします。本当に、私はその中の情報のほんの一部にしか興味がありません. その目的のために、Haskell の多くの eDSL の 1 つ (Megaparsec など) でパーサーを書くのは簡単です。

それはすぐに関数を生じさせますgetFoo :: Text -> Maybe Foo

しかし、今は情報のソースも変更Fooしたいと思います。つまり、基本的に実装したいです

プロパティで

パーサーの結果をレンズのようなものに変更することでそれを行うことができます

しかし、それは定義を非常に面倒なものにします。関連性のない情報をただ単に見過ごすことはできず、すべてのstringサブパースの一致を保存し、手動で再構築する必要があります。

これは、文字列の再構築をStateTパーサー モナドの周りのレイヤーに保持することである程度自動化できますが、既存のプリミティブ パーサーをそのまま使用することはできませんでした。

この問題に対する既存の解​​決策はありますか?

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

serialization - バイジェクション - Java Avro シリアライゼーション

SpecificRecordBaseに似た Avro オブジェクトで Bijection を実行する例を探しています。または、クラスを Kafka キーと値のシリアライザーとしてGenericRecordBase使用するより簡単な方法がある場合。AvroSerializer

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

java - avro :Java を使用して kafka spark ストリーミング アプリケーションで Twitter のバイジェクション例外を反転できませんでした

Spark ストリーミングを使用して kafka からメッセージを生成および使用するためのチュートリアルに従っています。アイデアは、avro 形式でシリアル化された単純なメッセージを生成することです。avro 形式からメッセージをデシリアライズし、spark ストリーミングを使用して消費します。バイジェクション API が Failed to Invert 例外をスローするため、メッセージを消費できません。

プロデューサー:

消費者:

例外: