我怎样才能使这个 mountain Haskell 代码工作?
How can I make this mountain Haskell code work?
如何将 2 个列表放在 1 个列表中,因为这段代码只返回第一个列表。
mountain :: Int -> [Int]
mountain 0 = [0]
mountain 1 = [0]
mountain 2 = [0,2,0]
mountain 3 = [0,2,0]
mountain x
| x `mod` 2 == 0 = [0,2..x] ++ [x-2..0]
| otherwise = [0,2..x-1] ++ [x-3..0]
Examples:
--mountain 0 == [0]
--mountain 6 == [0,2,4,6,4,2,0]
--mountain 7 == [0,2,4,6,4,2,0]
--mountain 10 == [0,2,4,6,8,10,8,6,4,2,0]
[x-2 .. 0]
将是空的,因为没有“then”项,它将使步骤为一。你可以用 [x-2, x-4 .. 0]
来制作这样的列表。您可以通过以下方式实现 mountain
功能:
mountain :: Int -> [Int]
mountain i = [0, 2 .. n] ++ [n-2, <strong>n-4</strong> .. 0]
where n = 2 * div i 2
如何将 2 个列表放在 1 个列表中,因为这段代码只返回第一个列表。
mountain :: Int -> [Int]
mountain 0 = [0]
mountain 1 = [0]
mountain 2 = [0,2,0]
mountain 3 = [0,2,0]
mountain x
| x `mod` 2 == 0 = [0,2..x] ++ [x-2..0]
| otherwise = [0,2..x-1] ++ [x-3..0]
Examples:
--mountain 0 == [0]
--mountain 6 == [0,2,4,6,4,2,0]
--mountain 7 == [0,2,4,6,4,2,0]
--mountain 10 == [0,2,4,6,8,10,8,6,4,2,0]
[x-2 .. 0]
将是空的,因为没有“then”项,它将使步骤为一。你可以用 [x-2, x-4 .. 0]
来制作这样的列表。您可以通过以下方式实现 mountain
功能:
mountain :: Int -> [Int]
mountain i = [0, 2 .. n] ++ [n-2, <strong>n-4</strong> .. 0]
where n = 2 * div i 2