簡體   English   中英

如何比較列表中的兩個元組?

[英]How to compare two tuple in list?

我有這樣的元組列表:

[(0.0,0.0),(1.0,0.0),(2.0,0.0),(3.0,0.0),(3.0,0.0),(3.0,0.0),(4.0,0.0),(4.0,0.0)]

其中第一個元素是X坐標,第二個元素是Y坐標,我現在想編寫將返回的函數:

[(0.0,0.0),(1.0,0.0),(2.0,0.0),(3.0,0.0),(3.0,1.0),(3.0,2.0),(4.0,0.0),(4.0,1.0)]

它從第一個元組中取出第一個元素,從第二個元組中取出第一個元素,如果它們不相等,則Y不變,但如果它們相等,則將Y加一個。

如果有人有想法如何在Haskell中寫作?

尚未測試,但可以執行以下操作:

foo :: [(Float, Float)] -> [(Float, Float)]
foo []  = []
foo [x] = [x]
foo ((xx, xy):(yx, yy):xs) = (xx, xy): theTuple : (foo ((yx, yy):xs))
    where
        theTuple = if xx == yx then (yx, yy) else (yx, yy+1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM