問題タブ [clpfd]
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.
prolog - プロローグ : 例から学ぶ
私はswi-prologについて少し学ぼうとしています(基本的な役に立たないプログラムを超えて)。
この数独ソルバーと関連する関数が何をしているのか、誰でも (おそらく疑似コードで) 説明できますか? さらに参照が必要な場合は、swi-prolog の CLP(FD) パッケージにあります。
ありがとう!
prolog - それらの合計が指定された数に等しくなるように、個別の奇数 (存在する場合) のリストを計算します
これは私のコードです。正しい出力が得られないようです。コード評論家はいますか? :)
prolog - Prolog の整数除算演算子
このコードは、プロローグの暗号パズルを解くために私が書いているプログラムの一部です。CLPFD (SICStus Prolog) を使用してこれを解決しています。組み込みの整数除算演算子「//」を使用しているときにエラーが発生します (詳細については以下を参照してください)。これを解決できなかったので、独自の整数除算関数を作成しました。
私が知りたいのは、「//」が失敗する理由です。+、 - 、 / などの他の算術演算子にはそのような問題はありません。
前:
これは私が得るエラーです
エラー:ドメイン エラー: clpfd_expression' expected, found
(0+_G1592+_G1586)//10' 例外: (12) throw(error(domain_error(clpfd_expression, (0+_G3994{0..9}+_G3991{0..9}))// 10)、_G3976)) ?
後:
これは完全に機能します。「//」を独自の整数除算に置き換えるだけでした
algorithm - N-Queens 問題を解く... どこまで行ける?
N クイーン問題:
この問題は、サイズが N × N のチェス盤が与えられたときに、互いに脅威を与えずに N 個のクイーンを盤上に配置できるさまざまな順列を見つけることを示しています。
私の質問は次のとおりです。
プログラムが妥当な時間内に答えを計算できる N の最大値は何ですか? または、これまでに見た最大の N は?
CLPFD(Prolog)での私のプログラムは次のとおりです。
このプログラムは問題なく動作しますが、所要時間は N とともに増加し続けます。実行例を次に示します。
これは、列 1 の行 2、列 2 の行 4、列 2 の行 1、行 3 の列 4 に 4 つのクイーンを配置することを意味します (4 x 4 のチェス盤で)。
次に、このプログラムがどのように実行されるかを見てみましょう (最初の順列の計算にかかる時間):
N=4,5.....10 の場合 1 秒以内に計算
N=11-30 の場合 -1-3 秒かかります
N=40 の場合..50 それでも1分以内に計算
N=60で グローバルスタックから抜けます(探索空間が膨大)。
これは過去の宿題の問題でした。(元の問題は、N-Queen をコーディングすることだけでした)
また、他の言語での代替実装 (私の実装よりもパフォーマンスが高い) を見ることにも興味があります。または、アルゴリズム/プログラムに改善の余地があるかどうか
prolog - Prolog算術構文
a
整数/浮動小数点数として定義する方法は?
a+b+c+d=10
wherea,b,c,d
がintegerと。の結果を見つけたいです>=0
。
prolog - Prolog を使用した単一リソースへのタスクのスケジューリング
ここでできる限り検索しましたが、関連する質問がいくつか見つかりましたが、目前の質問をカバーしているとは思いません。
1 つのリソースと、タスクをスケジュールするための既知の要求リストがあるとします。各リクエストには、start_after、start_by、expected_duration、および action が含まれます。
目標は、各タスクのスケジュールを start_after から start_by の間に保ちながら、できるだけ早く実行するようにタスクをスケジュールすることです。
動作するはずだと「思った」簡単な Prolog の例をコーディングしましたが、残念ながら実行時にエラーが発生しました: ">=/2: 引数が十分にインスタンス化されていません".
どんな助けやアドバイスも大歓迎です
編集: 競合の目標が正しくありませんでした: 追加の T>T1 句が必要でした。
編集: 有効な Request,Time ペアを指定すると、スケジュールの目標が機能するようですが、R1..3 が指定されたときに Prolog に T1..3 の有効な値を強制的に見つけさせようとして行き詰まりましたか?
prolog - プロローグ: n >= 1 で a^nb^(n+1) 言語を認識する
宿題を自分で考えなければならないことは理解していますが、クラスの誰もそれを理解できないので、助けが必要です。
任意の について、 がの後に が続くリストで
p(X)
ある場合に真となるような Prolog プログラムを作成します。X
n
a
n+1
b
n >= 1
prolog - プロローグ全部違う
PROLOG に非常に奇妙な問題があります。以前から使っていたのですが、時間がたって錆びてきました。変数のリストがあり、どれも同じでないことを確認する必要があります。
私が試してみました:
use_module(library(bounds)).
all_different(A, B, C, D, 6, 8).
しかし、これを試してみると、all_different/6 が未定義であるというエラーが表示されます。
この問題を解決するにはどうすればよいですか? これを直接呼び出すことができるライブラリ関数はありますか?
私は非常に立ち往生しており、助けていただければ幸いです。
前もって感謝します。
prolog - プロローグを理解する [リスト]
私はこれを行うプログラムを書くつもりです:
(2 から 5 までのすべてのペア X,X+1 に加えて、最後の特殊なケースを示します)。
これがおそらく解決策です。仕組みがよくわからないのですが、どなたか教えていただけないでしょうか?
私は次のように簡単にします:
なぜ機能しないのですか (最後の特別なケースを無視します)?
prolog - SICStus Prolog によるフィボナッチ数列の一般化
一般化されたフィボナッチ数列 (GFS) に対するクエリの解決策を見つけようとしています。クエリは次のとおりです。12 番目の数字が 885 である GFS はありますか? 最初の 2 つの数字は 1 ~ 10 の間で制限される場合があります。
(1, 1) で始まるシーケンスで N 番目の数値を見つけるための解決策を既に見つけました。ここで、最初の数値を明示的に定義します。これが私がこれのために持っているものです:
前述のクエリについては、動的に実行する必要があるため、初期番号を明示的に定義せずに fib メソッドを再利用する次の方法でうまくいくと思いました。
...しかし、これはうまくいかないようです。
この方法で初期数を定義することはできませんか、それとも何かひどく間違っていますか? 解決策を求めているわけではありませんが、これを解決するのに役立つアドバイスをいただければ幸いです。