你能告诉我如何在Prolog中找到N个独特的目标解决方案吗?
我知道使用findall/3可以找到目标的所有解决方案,但是对于有太多或无限解决方案的目标,如果足够的话我想要找到最多N个唯一解决方案.
我想做的是这样的:
?- find_unique_n(10, X, any_goal(X), Xs).
Xs = [...] % up to 10 unique solutions.
Run Code Online (Sandbox Code Playgroud)
如果目标的唯一解决方案的总数低于N,我想找到所有这些.
编辑:正如虚假指出的那样,尚不清楚"独特解决方案"的含义.如果sample_goal/1定义如下:
sample_goal(1).
sample_goal(1).
sample_goal(2).
sample_goal(2).
Run Code Online (Sandbox Code Playgroud)
预期的结果是:
?- find_unique_n(1, X, sample_goal(X), Xs).
Xs = [1]
?- find_unique_n(2, X, sample_goal(X), Xs).
Xs = [1,2]
?- find_unique_n(3, X, sample_goal(X), Xs).
Xs = [1,2]
Run Code Online (Sandbox Code Playgroud)
对于具有无限解决方案的目标,预期结果是:
?- find_unique_n(2, X, (repeat, between(1,2,X)), Xs).
Xs = [1,2]
?- find_unique_n(3, X, (repeat, between(1,2,X)), Xs).
% This won't stop, it's ok
Run Code Online (Sandbox Code Playgroud) 假设我正在使用命令行参数运行 SLURM 作业,比方说srun sleep 1000. squeue并scontrol show job ID显示执行的命令sleep,但不显示其参数1000。
我的问题是,如何1000从作业 ID 获取传递给 SLURM 作业命令(在本示例中)的参数?
我正在使用 slurm 17.02.3。