0
我試圖找到列表的模式,並返回該模式的元組以及它在列表中出現的次數。 我這有一個地步,我可以返回每個數字和之後發生的次數的列表,但它也給我出現過第一,返回更大的元組值
fun counter(_, nil) = 0
| counter(a, x::xs) = if a = x then 1+counter(a, xs)
else counter(a, xs);
fun countList(nil) = []
| countList(x::xs) =
(x, counter(x, x::xs))::countList(xs);
val lst = countList([1,2,1,1,3,4,5,2,1,2,1]);
給我VAL LST = [( 1,5),(2,3),(1,4),(1,3),(3,1),(4,1),(5,1),(2,2),(1, 2),(2,1),(1,1)] :(int * int)list
這不應該是一個問題,只是循環每個值,看看第一個值是否相等,然後給第一個價值,然後只返回最大的一個(s),但我似乎無法弄清楚這一部分。 我想我只是無法遍歷列表,並與我正在檢查的當前值進行比較。
這很好,現在我只需要弄清楚如何適應這個返回一個列表,因爲如果有兩個值發生最多但具有相同的出現次數,我需要列表中的這兩個值。 – Nexion