小编Mat*_*att的帖子

gnu Prolog powerset修改

所以我为powerset得到了这个:

powerset([], []).
powerset([H|T], P) :- powerset(T,P).
powerset([H|T], [H|P]) :- powerset(T,P).
Run Code Online (Sandbox Code Playgroud)

这会生成所有列表集.是否可以按列表顺序生成所有集合.

例:

List = [a,b,c]
Run Code Online (Sandbox Code Playgroud)

我想得到

[a],[a,b],[a,b,c],[b],[b,c],[c]
Run Code Online (Sandbox Code Playgroud)

请注意[a,c],此子集列表中没有,因为这些是从左侧开始向右侧的子集.

我尝试过使用append和recursion的组合,但这并不是我想要的.在这一点上有点难过.

谢谢.

substring list set prolog dcg

5
推荐指数
1
解决办法
3995
查看次数

如何阅读FSM图

FMS

我如何使用此图并将其转换为可用程序.我不太确定如何阅读这个图表.如果有人可以通过我的方式,可能会显示一个代码示例以及它与图表的关系,那就太棒了.

谢谢!

network-programming state-machine packet

5
推荐指数
1
解决办法
3893
查看次数

Haskell:将偶数和奇数元素分成元组

我不能使用高阶函数.我只是无法弄清楚如何做到这一点.我对哈斯克尔很新.它也必须是递归的.

split :: [Int] -> ([Int],[Int])
split xs = 
Run Code Online (Sandbox Code Playgroud)

我得到这个开始.老实说,我甚至不知道从哪里开始这个问题.

例子:

split []
([],[])

split [1]
([1],[])

split [1,2,3,4,5,6,7,8,9,10]
([1,3,5,7,9],[2,4,6,8,10])
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

编辑:它的偶数和奇数位置.

所以

分割[3,6,8,9,10]将是([3,8,10],[6,9])

好的,所以我想出了这个.它不漂亮,但似乎工作正常.

split :: [Int] -> ([Int],[Int])
split [] = ([],[])
split [xs] = ([xs],[])
split xs = (oddlist xs, evenlist xs)

oddlist :: [Int] -> ([Int])
oddlist xs | length xs <= 2 = [head(xs)]
           | otherwise = [head(xs)] ++ oddlist(tail(tail(xs)))

evenlist :: [Int] -> ([Int])
evenlist xs | length xs <= 3 = [head(tail(xs))]
            | …
Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
2
解决办法
5773
查看次数

C从整数列表中获取模式

我需要编写一个程序来查找模式.或者最多出现一个整数或整数.所以,

1,2,3,4,1,10,4,23,12,4,1将具有1和4的模式.

我不确定应该使用哪种算法.我很难想到能够奏效的东西.

我正在考虑某种频率表,也许我可以通过数组,然后通过创建一个链表.如果链接不包含该值,则将其添加到链接,如果是,则将值加1.

所以,如果我从上面有同样的事情.循环通过1,2,3,4,1,10,4,23,12,4,1

然后list为空,所以添加number = 1和value = 1的节点.2不存在,所以添加number = 2和value = 1的节点,依此类推.到1和1已经存在,所以值= 2现在.

我必须循环遍历数组,然后每次循环遍历链表以找到该值.

完成后,请浏览链接列表并创建一个新的链接列表来保存模式.所以我将头设置为第一个元素1.然后我浏览包含出现的链接列表并比较值.如果当前节点的出现>当前最高,则我将头设置为该节点.如果它=到最高,那么我将节点添加到模式链表.

完成后,我遍历模式列表并打印值.

不确定这是否有效.有没有人看到这个有什么问题?有更简单的方法吗?我也在考虑哈希表,但不确定如何在C中做到这一点.

谢谢.

c

3
推荐指数
1
解决办法
4089
查看次数

Haskell - Create Set(唯一排序列表) - 没有递归,没有nub

是否可以创建一个函数来创建一个带有列表输入的集合.

没有使用递归我只是想不出任何办法.

我可以使用高阶函数,如折叠,滤镜,地图,zip.我只是无法在我的函数中进行递归.

显然我不能使用小块.

我一直在试图弄清楚如何摆脱重复没有递归或任何类型的循环(至少我不认为我们可以使用循环,要问).

haskell duplicate-removal

3
推荐指数
1
解决办法
3385
查看次数

ruby here-doc带循环

你可以做一个循环和here-doc,像这样:

array.each do |ele|
  a=<<-TEXT
   ele
   some stuff
  TEXT
end
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby loops heredoc

3
推荐指数
1
解决办法
1275
查看次数

您可以在条件文档中放入条件语句吗?

您可以在条件文档中放入条件语句吗?

IE浏览器:

sky = 1
str = <<EOF
The sky is #{if sky == 1 then blue else green end}
EOF
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby heredoc

3
推荐指数
1
解决办法
4585
查看次数

Haskell:具有多态相等函数的递归

好的,我们还没有学过多态函数,但我们仍然需要编写这段代码.

Given:
nameEQ (a,_) (b,_) = a == b
numberEQ (_,a) (_,b) = a == b
intEQ a b = a == b
member :: (a -> a -> Bool) -> a -> [a] -> Bool
Run Code Online (Sandbox Code Playgroud)

我补充说:

member eq x ys | length ys < 1 = False
               | head(ys) == x = True
            | otherwise = member(x,tail(ys))
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是不正确的类型以及其他一些东西.我们必须查看某个类型中是否存在元素.所以我们有以上两种类型.给出的一些例子:

phoneDB = [("Jenny","867-5309"), ("Alice","555-1212"), ("Bob","621-6613")]

> member nameEQ ("Alice","") phoneDB
True
> member nameEQ ("Jenny","") phoneDB
True
> member nameEQ ("Erica","") …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell

2
推荐指数
2
解决办法
333
查看次数