【问题标题】:Prolog Binary Numbers of length N长度为 N 的 Prolog 二进制数
【发布时间】:2021-05-03 19:56:31
【问题描述】:

我如何创建一个谓词来获取长度为 N 的二进制数的所有可能组合?

示例 -> 如果长度 N = 3,则输出为

L = [0,0,0]

L = [0,0,1]

L = [0,1,0]

L = [0,1,1]

L = [1,0,0]

L = [1,0,1]

L = [1,1,0]

L = [1,1,1]

【问题讨论】:

  • length(L, N), L ins 0..1, labeling([],L) 使用library(clpz)library(clpfd)
  • 如果我想在没有任何库的情况下这样做怎么办,名字也不错(呵呵)。

标签: list binary prolog


【解决方案1】:
binary_list(0,[]).
binary_list(N,[X|Xs]) :-
    N > 0,
    member(X,[0,1]),
    N1 is N-1,
    binary_list(N1,Xs).

【讨论】:

  • 您能简要解释一下这是如何工作的吗?
  • 第一个 binary_list 只是告诉我们长度为 0 的列表是空的,下一个 binary_list 表示对于长度为 N 的列表,它将由一个 X 和一个 Xs 组成。 X 将是来自成员的 0 或 1 #,而 Xs 将是长度为 N-1 的 binary_list 基本上我们将递归地创建列表,首先取一个 0,然后取一个 1,并将其放在所有二进制列表组合的前面其中缩短了 1。有时只需将 prolog 代码视为对真实情况的描述并相信它会在这些限制内完成工作会有所帮助
猜你喜欢
  • 2017-03-24
  • 2011-12-04
  • 2021-04-06
  • 1970-01-01
  • 2016-08-10
  • 2021-02-10
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多