0
假設我有一個不正確順序的列表。重新排列LIST(升序)
如何以升序重新排列列表?
E.g:
dog(bull,chiwawa,lucky).
而且我喜歡輸入dog(chiwawa,lucky,bull)
。
我該如何重新排列它們變成dog(bull,chiwawa,lucky)
?
只是讓它更容易比較。
假設我有一個不正確順序的列表。重新排列LIST(升序)
如何以升序重新排列列表?
E.g:
dog(bull,chiwawa,lucky).
而且我喜歡輸入dog(chiwawa,lucky,bull)
。
我該如何重新排列它們變成dog(bull,chiwawa,lucky)
?
只是讓它更容易比較。
排序結構參數它有點超出了Prolog的「主流」編碼。這是因爲參數實際上是佔位符(與RDB中的列完全一樣)。
?- Unsorted = dog(chiwawa,lucky,bull), Unsorted =.. [Functor|UnsortedArgs], msort(UnsortedArgs, Args), Sorted =.. [Functor|Args].
產量
當然Unsorted = dog(chiwawa, lucky, bull),
Functor = dog,
UnsortedArgs = [chiwawa, lucky, bull],
Args = [bull, chiwawa, lucky],
Sorted = dog(bull, chiwawa, lucky).
,你可能應該進行切換代表性清單,或將有很難與您的程序的其餘部分。如果您嘗試表示某種基本分類,則可以使用庫(pairs),並使用Key-Elements
的列表。像狗一樣 - [公牛,chiwawa,幸運]。
保持元素排序,您可以使用庫(ordsets),並且可以高效地執行許多強大的操作。更容易,真的...
這些變量或單字母原子?如果他們是原子,難道你不能把它們分類嗎?如果它們是變量,它們的定單又是如何定義的? – 2013-07-10 10:23:54
我已經修改了這個例子給你。 假設我已經定義了一個包含很多原子的謂詞。 –