所以我为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的组合,但这并不是我想要的.在这一点上有点难过.
谢谢.
我如何使用此图并将其转换为可用程序.我不太确定如何阅读这个图表.如果有人可以通过我的方式,可能会显示一个代码示例以及它与图表的关系,那就太棒了.
谢谢!
我不能使用高阶函数.我只是无法弄清楚如何做到这一点.我对哈斯克尔很新.它也必须是递归的.
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) 我需要编写一个程序来查找模式.或者最多出现一个整数或整数.所以,
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中做到这一点.
谢谢.
是否可以创建一个函数来创建一个带有列表输入的集合.
没有使用递归我只是想不出任何办法.
我可以使用高阶函数,如折叠,滤镜,地图,zip.我只是无法在我的函数中进行递归.
显然我不能使用小块.
我一直在试图弄清楚如何摆脱重复没有递归或任何类型的循环(至少我不认为我们可以使用循环,要问).
你可以做一个循环和here-doc,像这样:
array.each do |ele|
a=<<-TEXT
ele
some stuff
TEXT
end
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以在条件文档中放入条件语句吗?
IE浏览器:
sky = 1
str = <<EOF
The sky is #{if sky == 1 then blue else green end}
EOF
Run Code Online (Sandbox Code Playgroud)
谢谢
好的,我们还没有学过多态函数,但我们仍然需要编写这段代码.
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)