問題タブ [pattern-matching]

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

haskell - Haskellで関数を定義する2つ以上の方程式が同じwhere/letブロックを共有できますか?

Haskellで関数を定義する2つ以上の方程式が同じwhere/letブロックを共有できますか?

質問を説明するために考案された例を提示しましょう。

まず、開始点として次のコードを検討してください。

ここまでは順調ですね。しかし、次に、v3 == 99で差が4未満の場合にゼロを返す必要がある「代替ケース」を処理する必要があると想像してください(完全に任意ですが、これらが私の要件であるとしましょう)。

私の最初の考えはこれを行うことです:

ただし、someFunctionの最初の式とsomeFunctionの2番目の式の両方が同じwhereブロックを共有していないため、これは機能しません。whereブロックには変数が1つしかないため、これはこの不自然な例では大したことではありません(「差」)。しかし、実際の状況では、変数が多数存在する可能性があり、それらを繰り返すことは受け入れられません。

ガードを使用し、方程式を1つだけ持つことで、これを解決する方法をすでに知っています。問題は、複数の方程式が同じwhere / let句を共有する方法はありますか?多くの警備員がいる1つの方程式だけを強制するのではなく、異なるパターンの複数の方程式を作成することが望ましいと思われるためです。

0 投票する
5 に答える
1807 参照

regex - 特定の Perl 変数に多くの値を割り当てるにはどうすればよいですか?

タンパク質配列(文字列)のモチーフ(部分文字列)を検索するスクリプトをPerlで書いています。検索するモチーフ配列 (または部分文字列) は hhhDDDssEExD です。

  • hは任意の疎水性アミノ酸です
  • sは任意の小さなアミノ酸です
  • xは任意のアミノ酸
  • h、s、xは別々に複数の値を持つことができます

1 つの変数に複数の値を代入できますか? はいの場合、どうすればよいですか?複数の値のリストを変数に割り当てたい。

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

haskell - 「不可能」な場合でも、Haskell で常に徹底的なパターン マッチを行うことをお勧めしますか?

「不可能」な場合でも、Haskell で常に徹底的なパターン マッチを行うことをお勧めしますか?

たとえば、次のコードでは、foldr の「accumulator」でパターン マッチングを行っています。アキュムレータを作成するため、アキュムレータの内容を完全に制御できます (入力として渡されるのではなく、関数内に構築されます)。したがって、特定のパターンが決して一致してはならないことを知っています。「パターン一致は網羅的ではありません」というエラーが発生しないように努める場合は、「このパターンは発生しないはずです」というメッセージとともに単純にエラーになるパターン一致を配置します。C# の assert によく似ています。そこで他にやることは思いつきません。

この状況で推奨されるプラクティスとその理由は何ですか?

コードは次のとおりです。

一致しないパターン (インタープリターによって報告される) は次のとおりです。

警告: パターン マッチは網羅的ではありません 代替ケース: パターンがマッチしません: [] : _

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

c# - 単語が出現する順序や回数が重要ではない場合、2 つの文字列間の最適な一致は重要ではありませんか?

単語が出現する順序や回数が重要でない場合、C# で 2 つの文字列間の距離を照合または計算するための最適なアルゴリズムは何ですか?

最良の手段:

  • 人間の試合にほぼ同意するだろう
  • エレガント
  • 効率的
  • スケーラブルであるため、入力文字列を他の文字列の潜在的に大きなコレクションに一致させることができます

関連する質問:

いくつかのメモ:

  • 順序と発生に依存しないため、入力は、文字の配列という意味での文字列ではなく、一意の単語のセットと考えることができます。
  • データベースソリューションを特に探しているわけではありませんが、興味深いものがあります
  • 私はこれが宿題の問題であるには年を取りすぎています ;)
0 投票する
7 に答える
1337 参照

algorithm - 単語を比較するためのアルゴリズム(アルファベット順ではない)

特定の要件に対応するソリューションをコーディングする必要があります。それを実現できる既成のライブラリに精通している人がいるか、ベストプラクティスを教えてくれる人がいるかを知りたいと思いました。説明:

ユーザーは、いくつかの固定オプションの1つであると思われる単語を入力します(私はオプションをリストに保持しています)。入力はリストのメンバーに含まれている必要がありますが、ユーザー入力であるため、間違いを犯した可能性があります。ユーザーが意味する最も可能性の高い単語を教えてくれるアルゴリズムを探しています。私にはコンテキストがなく、ユーザーにリストから選択するように強制することはできません(つまり、ユーザーは単語を自由に手動で入力できる必要があります)。

たとえば、リストに「water」、「quarter」、「beer」、「beet」、「hell」、「hello」、「aardvark」という単語が含まれているとします。

ソリューションは、さまざまなタイプの「通常の」エラーを考慮する必要があります。

  • スピードのタイプミス(例:文字の2倍、文字の削除など)
  • キーボードの隣接文字のタイプミス(例:「水」の「カタール」)
  • 英語を母国語としないタイプミス(例:「クォーター」の「クォーター」)
  • 等々...

明らかな解決策は、文字ごとに比較し、それぞれの異なる文字、余分な文字、欠落している文字に「ペナルティの重み」を与えることです。しかし、このソリューションは、どこかにリストされていると確信している何千もの「標準」エラーを無視します。おそらく標準の不一致の大規模なデータベースを使用して、特定のケースと一般的なケースの両方を処理するヒューリスティックが存在すると確信しています(データ量の多いソリューションを受け入れています)。

私はPythonでコーディングしていますが、この質問は言語に依存しないと考えています。

推奨事項/考えはありますか?

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

xslt - XSL Rookie - 「if test」ブロック全体を繰り返さずに、「this phrase」に一致する XSL を「ths fraze」にも一致させることはできますか?

私は完全な XSL 初心者であり、XSL ファイルを作成して、アプリケーションによって作成された出力ログに表示されるさまざまなエラー メッセージを CSV 形式にフォーマットします。

これらの出力ログでは、一致するタグにわずかな違いが生じる場合があります。たとえば、ログ内の 1 つの文には「サービス月/年:」というフレーズが含まれている場合がありますが、アプリケーションの別の領域からの別の文には、代わりに「サービス月/年:」が含まれています。

そのフレーズの両方のバリエーションを XSL の 1 行に入れる方法はありますか? それとも、独自の If ブロックで一致させたいフレーズの各バリエーションで、If ブロック全体を繰り返す必要がありますか?

XSL をバッククォートで囲んでここに投稿しようとしましたが、すべてが 1 つの大きな塊で実行され、読み取ることができません。誰かがこの質問を手伝ってくれるなら、読みやすくする方法を教えてくれたら喜んで投稿します。:-)

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

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

c++ - パターンマッチングにおける変数置換?

私は推論エンジンを開発しています。これは、基本的に、特定の瞬間の世界の表現である特定の数の「事実」を持っていることを意味します。事実 (通常は開始状態と目標状態の 2 つだけです) とともに、多くのルールがあります (特定の問題については文字通り数百になる場合もあります)。推論エンジンの目的は、開始状態と一連のルールを指定して、許容可能な目標状態の 1 つへの最短パスを見つけることです。これは、DFS、BFS、A* などのいくつかのアルゴリズムで実行できます。プログラムの基本構造は次のとおりです。

ルールでは、LHS (> の前の部分)は、「値」に等しいファクト内のすべての属性に一致します。factnameこの場合は 1 つだけですが、複数ある場合もあります。つまり、変数を解決する必要があり (多くの場合、同じ事実に対して複数回)、ルールの LHS には複数の条件が設定されているか、適切な優先度の解析が行われている可能性があります。

問題は、この種の変数を効率的に解決する方法はありますか? 私が今行っていることは、実際のすべての属性を反復処理することであり、基本的に、バランスの取れていない非常に大きな n-ary ツリーを生成しています。これは、特に上記の条件を考えると非常に遅いです。

この種のパターンマッチングの論文へのポインタが欲しい

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

sql - ストアド プロシージャで使用する単純なテキスト マッチング アルゴリズム

SQL Server データベースに 2 つのフィールドを持つテーブルがあり、asp.net アプリケーションが '@SearchString' パラメータを使用してストアド プロシージャを呼び出し、ストアド プロシージャは @Searchstring 値が 2 つのフィールドの連結で見つかったすべてのレコードを検索しますテーブル、それらを 'Field1' および 'Field2' と呼びます

したがって、ロジックは次のようになります (実際のクエリを単純化しました)。

このかなり基本的なマッチング アルゴリズムを改善して、一致するレコードがそれほど制限されないようにしたいと考えています。たとえば、ユーザーが「DOG HOUSE」をパラメーターとして入力すると、既存の SP のかなり基本的なロジックによって、正確な文字列が見つかったレコードが返されます。文字列が正確に隣り合っていなくても、「DOG」と「HOUSE」だけのレコードも返すようにしたいと思います。

「最良の一致」に関してレコードをランク​​付けする方法があればさらに良いでしょう。つまり、「DOG HOUSE」が見つかった場合は完全一致であり、「DOG」と「HOUSE」が見つかった場合は 2 番目です。ベスト マッチ、「犬だが「家」または「家」ではなく、「犬」ではない場合」など。

私が望むことの多くを行う一般的なアルゴリズムはありますか?

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

erlang - ETSマッチングの問題

私はETSを学んでいます。やった:

次に、次のように入力しました。

しかし、取得する代わりに8-私は取得しています:["\b"]出力として!

0 投票する
5 に答える
6808 参照

pattern-matching - 個人名に基づくマッチングレコード

2つの異なるデータソース間で人の名前を照合するために使用できるツールまたは方法はありますか?

システムには他の共通情報がなく、多くの場合、名前の入力方法が異なります。

完全に一致しない例:

キングジュニア、マーティンルーサー=キング、マーティン(サフィックスを除く)
アービング、ドクターJ. =アービング、J。(プレフィックスを除く)
オバマ、バラクフセイン=オバマ、バラク(ミドルネームを除く)
プフンストゥフ、HR =プフンストゥフ、ハイバネレンメイ(略語に一致)
Tankengine、Thomas = Tankengine、Tom(一般的なニックネームに一致)
Flair、Rick "the Natureboy" = Flair、Natureboy(ニックネームに一致)