我想把我拥有的配对列表添加到一个列表中。例如,如果我有配对:
[(2,0),(4,5),(3,10)]
请注意,每一对都是我想要的(值,索引):
[2,0,0,0,0,4,0,0,0,0,3]
到目前为止,我已经:
insert :: [(Int,Int)] -> Int -> [Int]
insert [] _ = []
insert ((x, y):xs) t
| t == y = x : (insert (xs) (t + 1))
| otherwise = 0 : insert ([(x,y)]) (t + 1)
而我只得到
[2,0,0,0,0,0,4]
任何帮助都将不胜感激
1条答案
按热度按时间erhoui1w1#
这个代码的问题是,当
otherwise = 0 : insert ([(x,y)]) (t + 1)
完成时,列表的其余部分被丢弃,剩余的xs
丢失了。这里有两个递归:
1.列表中元素的递归
1.递归添加当前元素
所以,我重新编码了它,添加了一个元素:
也要添加所有元素:
如果输入列表是按索引排序的,这似乎是可行的。