問題タブ [set-theory]
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.
c# - 要素のN個の組み合わせのセットのテストを使用して、各要素の合計を計算できます
要素の組み合わせを使用して個別の要素の合計を計算できるかどうかを確認するために、一般的なテストが必要です。各組み合わせの合計はわかっていますが、個々の要素の値はわかっていません。この個別の合計を計算できる場合、セットは有効です。そうでない場合、セットは無効です。要素が組み合わせで 2 回表示されることはありません。
説明する:
- セット 1: {A+B}、{B,C} は無効なセットです
- セット 2: {A}、{B}、{B,C} は有効なセットです ( {A} + {B,C} = A+B+C )
- セット 3: {A,D}、{B,C,A}、{B,C} は無効なセットです
- セット 4: {A,B}、{B,C}、{A,C} は有効なセットです (({A,B}, {B,C}, {A,C})/2 = A+B +C )
C# または SQL を介してテストを実装しようとしています。
lisp - Lispの世界ではリストではなくセット?
集合論では があり{x, y, z}
、これは{z, y, x}
... と同じで、 ... と同じですが{y, x, z}
、{z, x, y}
Lisp (Scheme など) では、リストはそのような並置を許しません。順序が重要です。質問: 順序を問わないセットに相当する Lisp/Scheme はありますか?
推測するに、私は単純にリストを作成し、たとえば(x y z)
、次のようなものを作成するかもしれません。member?
つまり、あなたはメンバーですか? 機構。
...これについて疑問に思っているのは私だけではないはずです...
string - Clojure(スクリプト)の文字列で「交差を設定」や「結合を設定」などを模倣するにはどうすればよいですか?
とがそれぞれ次のように定義された文字列であるS
とします。T
以下を満たす類似の clojure(script) 操作string-intersection
とstring-union
(より適切な名前がないため) はありますか?
と
ご覧のとおり、string-intersection
は (行ごとに) 一致しない行を削除し (一致する行のみを残します)、行string-union
を結合して重複を無視する効果があります。
注:私はclojurescriptを使用していますが、答えはclojureにも一般化されると思います。
coq - Coqでサブセット関係を表現するには?
Y
あるセットが別のセットのサブセットであることをCoqでどのように記述できX
ますか?
私は以下をテストしました:
y
、要素が にY
ある場合、 にあることを表現しようとしていy
ますX
。y
しかし、これは驚くべきことではありませんが、について型エラーを生成します。
subset
Coqで定義する簡単な方法はありますか?
clojure - clojure.set/difference は、結果が空で右のセットがカーディナリティが高い場合に失敗します
Clojure の別のシーケンスに存在するセットから要素を削除しようとしています。しかし、clojure.set/difference
期待どおりに機能していないようです。私のエラーはどこですか?
いくつかの例:
空シーケンスの削除
結果:(#{3 2}
予想通り)
一部の要素を削除する
結果:(#{2}
予想通り)
セットに存在しない要素の削除
結果:(#{3 2}
予想通り)
すべての要素を削除する
結果:(#{}
予想通り)
存在する要素をさらに削除する
結果の代わりにIllegalArgumentException が含まれていますか? タイプではサポートされていません: clojure.lang.PersistentList clojure.lang.RT.contains (RT.java:814)
期待される結果:#{}
そのためclojure.set/difference
、結果が空のセットであり、削除される要素のセットが元のセットよりも高いカーディナリティを持つ場合、関数は失敗するようです。しかし問題は、なぜこれがうまくいかないのかということです。これは の合法的な適用だと思いますclojure.set/difference
。
recursion - Racket/Scheme - リストのリスト内の各要素に関数を適用する
私はプログラミングで数学のクラスを取っている物理学専攻です (私は数学のために入学しました) が、これまでどの言語でコーディングしたこともないので、Racket に関するすべてが私にとってまったく新しいものです。ここまでのクラスの目標は、セット関連の関数を取得し、Racket プログラムに変換することです。これらの関数の 1 つは、リストのリストを取得し、各要素の最初の項目を削除することです。
f({(0, 1, 0), (1, 0, 0), (1, 1, 1)...} = {(1, 0), (0, 0), (1, 1)。 ..}
これまでの手順としてこれを取得しました:
プログラムを実行すると、適切な関数が適用されて返されますが、最初の要素のみが返されます。
'(1 0) に戻ります。それはある種の「マップ」機能ですか、それともまったく異なるものですか? リストの残りの部分は最後の行で処理できると思っていましたが、そうではありませんでした。
python - Python: 凍結セットの比較
次のスクリプトを検討してください。
そして神秘的な出力は
これらの if-else 条件は、a) i <= singleFrozenset および b) len(i) == 1 の 2 つのケースをチェックしています。2 番目の条件は単純です。ただし、一致するケースが 1、4、6、および 7 である最初の条件を理解できませんでした。これらのケースでは、これらの凍結セット間のリンクを見つけることができませんでした! 理由はありますか?
c# - 双方向関係のテーブルを個別のグループに分割する
ユーザーがワークフローの一部として「コンポーネント」にタグを付けることができるアプリケーションに取り組んでいます。多くの場合、それらは互いに同義語である複数のタグで終了します。これらをグループ化して、1 つのタグをコンポーネントに追加すると、グループ内の残りのタグも追加できるようにしたいと考えています。
タグ グループを、グループ内のタグの各ペア間の双方向の関係に分割することにしました。したがって、グループにタグ 1 と 2 がある場合、次のようなレコードがあります。
基本的に、グループはその中の各タグのデカルト積として表されます。それを 3 つのタグに拡張します。
私たちの関係は次のようになります。
それらをグループ化する方法がいくつかありますが、それらは優れたものではありません。最初に、各タグとそのグループ内のタグのリストを一覧表示するビューを作成しました。
これの問題は、各グループがタグの数だけ結果に表示されることです。これを 1 つのクエリで回避する方法を思いつきませんでした。だからそれは私に返されます:
次に、バックエンドで、別のグループで発生するキーを含むすべてのグループを破棄します。タグは複数のグループに追加されていないので、うまくいきますが、取り出される無関係なデータの量が好きではありません。
私が思いついた 2 番目の解決策は、この LINQ クエリでした。タグをグループ化するために使用されるキーは、グループ自体のリストです。これはおそらく私が当初考えていたよりもはるかに悪いです。
を呼び出した結果でグループ化するのは本当に嫌いですstring.Join
が、キーのリストでグループ化しようとすると、適切にグループ化されず、各タグが単独でグループ化されました。また、それが生成した SQL は巨大です。ここには貼り付けませんが、LINQPad は、テスト データベースで約 12,000 行の個々の SELECT ステートメントを生成することを示しています (関連タグには 1562 個のタグと 67 個のレコードがあります)。
これらのソリューションは機能しますが、かなり単純で非効率的です。しかし、これで他にどこに行くべきかわかりません。何か案は?