let myList=[(0,1);(0,2);(0,3);(1,5);(2,4);(3,5);(5,4);(5,6);(4,3)];;
對於計數存在於列表中的每個單個不同值I有此過程
let rec flat lst visited =
match lst with
[]->visited
| (x,y)::xs -> flat xs (x::y::visited)) ;;
let newLst = flat myList [];;
val newLst : int list =
[4; 3; 5; 6; 5; 4; 3; 5; 2; 4; 1; 5; 0; 3; 0; 2; 0; 1]
let rec count lista =
match lista with
[]->0
| x::xs ->
if (List.mem x xs) then count xs
else 1+count xs;;
count newLst;;
- : int = 7
的代碼運行正確的列表,但我的問題是:
有沒有更優雅或高效的方法來做到這一點? 例如獨特的功能,而不是兩個
非常有趣的解決方案 – daniele3004