Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 生成表示门铃系统的列表_List_Haskell_Tuples - Fatal编程技术网

List 生成表示门铃系统的列表

List 生成表示门铃系统的列表,list,haskell,tuples,List,Haskell,Tuples,我试图从两个Ints和另一个元组列表中生成一个列表,以表示公寓楼的门铃系统。第一个数字是楼层数,第二个数字是“不存在”/“我们跳转”的楼层,列表是楼层公寓的分布。例如: geneList 10 4 [("Rgt", 10), ("Lft", 8), ("Cent", 3)] (在本例中,我们将有10层,第4层不存在。只有前三层有“分”Rgt和“Lft”公寓。第五层到第九层只有“Rgt”和“左”公寓。第10层到第11层只有“Rght”公

我试图从两个
Int
s和另一个元组列表中生成一个列表,以表示公寓楼的门铃系统。第一个数字是楼层数,第二个数字是“不存在”/“我们跳转”的楼层,列表是楼层公寓的分布。例如:

geneList 10 4 [("Rgt", 10), ("Lft", 8), ("Cent", 3)]
(在本例中,我们将有10层,第4层不存在。只有前三层有“分”Rgt和“Lft”公寓。第五层到第九层只有“Rgt”和“左”公寓。第10层到第11层只有“Rght”公寓。)

返回值必须为:

["1Rgt","1Lft","1Cent","2Rgt","2Lft","2Cent","3Rgt","3Lft","3Cent","5Rgt","5Lft","6Rgt","6Lft","7Rgt","7Lft","8Rgt","8Lft","9Rgt","9Lft","10Rgt","11Rgt"]
我尝试过不同的方法,但从未达到目的

我最后一次尝试是:

geneList :: Int -> Int -> [(Char, Int)] -> [Char]
geneList 0 _ _ = []
geneList x y xs = [a++b | a <- [1..x+1], b <- xs, (\=) a y]
geneList::Int->Int->[(Char,Int)]->[Char]
基因列表0[uuu0][]

geneList x y xs=[a++b | a以下是代码中的问题:

  • “Rgt”
    的类型是
    字符串
    (又称
    [Char]
    ),而不是
    字符
  • 不相等比较运算符编写为
    /=
    ,而不是
    \=
    (请仔细阅读文档!)
  • 您没有确保当前楼层最多是每个公寓的高度

  • 当你写
    b的时候,首先让我们算出一个楼层要写的数字:

    floorNum skip n = if n < skip then n else n + 1
    
    floorNum skip n=如果n
    现在让我们把公寓的名字作为楼层的名字

    apartments :: [(String, Int)] -> Int -> Int -> [String]
    apartments spec skip floor = [f ++ name | (name, max) <- spec, floor <= max]
      where f = show $ floorNum skip floor
    
    公寓::[(字符串,Int)]->Int->Int->[String]
    
    apartments spec skip floor=[f++name |(name,max)预期结果中的最后一个元素不应该是
    11Rgt
    ?我不确定我是否正确理解了这个问题,但是如果每个元组中的
    snd
    数字表示这个“边”存在多少层,那么它不是
    geneList
    的第一个参数(
    x
    )冗余?你还应该发布失败尝试的输出。@MarkSeemann是的,应该是11Rgt,我现在纠正了它,thx。第一个参数是让它更简单,我想,如果我尝试geneList 03[('N',3),('S',1)],这是不可能的,或者如果我尝试geneList 310[('A',3),('B',3)],返回值将是[“1A”,“1B”,“2A”,“2B”,“3A“,“3B”]。我不知道我是否清楚应该
    genelist410[('A',3),('B',3)]
    返回什么?我不会发布完整的代码,而只是一些提示。@onegirl这是堆栈溢出,你应该这样做。
    geneList floors skip spec = [name | floor <- [1..floors], name <- apartments spec skip floor]