小编Ron*_*ese的帖子

寻找组合

我想编写一个函数来计算7元组中数字1到7的所有组合,但是每个数字在每个元组中只能出现一次。

到目前为止,我已经找到了这种方法,但是它还会返回每个元组中多次出现相同编号的组合。我不太确定如何删除具有相同编号的多次出现的元组。

  a = [(a,b,c,d,e,f,g) | a <- [1..7], b <- [1..7], c <- [1..7], 
        d <- [1..7], e <- [1..7], f <- [1..7], g <- [1..7]]
Run Code Online (Sandbox Code Playgroud)

目标结果示例(所有有效组合都应在此处):

  [(1,2,3,4,5,6,7),(2,1,3,4,5,6,7),(2,3,1,4,5,6,7),...]
Run Code Online (Sandbox Code Playgroud)

haskell list-comprehension

7
推荐指数
4
解决办法
194
查看次数

Haskell:列表操作

我想编写一个接受输入列表并按以下方式操作的函数:

步骤1:将列表的第一个元素和列表的最后一个元素放在一个子列表中。

步骤2:获取列表的第二个元素和列表的倒数第二个元素,并将其放到下一个子列表中。

步骤3:获取列表的第三个元素和列表的倒数第三个元素,并将其放到下一个子列表中。

根据相同的方案继续此操作(获取n个元素的列表)...

如果输入列表的元素数为奇数,则将输入列表的n / 2个元素添加为输出列表的最后一个子列表。

例:

[1,2,3,4,5,6,7]

-- should be transformed to

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

我已经编写了一个函数,该函数接受列表的每两个元素并将其放到子列表中,我想知道这段代码是否可以帮助我解决上述问题:

g2 :: [a] -> [[a]]
g2 [] = []
g2 (x1:x2:xs) = [x1,x2]: g2 xs
g2 xs = [xs]
Run Code Online (Sandbox Code Playgroud)

haskell list

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

简化功能中的if语句

以下函数包含多个if-then-else语句。是否可以在不使用内部if-then-else语句的情况下简化代码?

f x y z = if y >= 15 
            then (if y < 23 then x*5 else f (x+4) (y+7) z) 
            else f(x+4) (y+7) z
Run Code Online (Sandbox Code Playgroud)

haskell if-statement

0
推荐指数
1
解决办法
115
查看次数

标签 统计

haskell ×3

if-statement ×1

list ×1

list-comprehension ×1