我想寫一個程序,獲得一個列表作爲輸入,並且列表是有序返回ture,如果列表沒有排序列表。我寫了一個程序,得到一個列表作爲輸入,並返回true如果這個列表是有序的,否則返回false(有序(列表))我也寫一個程序,收到一個列表和排序,並返回有序列表作爲輸出(bubblesort( List,Ordered))但我不能將它們合併在一起編寫一個程序,如果列表被排序,則返回true否則對列表進行排序。我想了很多,但我不能。請幫助我 非常感謝如果列表是命令返回true否則如果列表沒有排序排序列表
0
A
回答
0
例如,我想命令([1,2,3])返回true作爲輸出和有序([1,3,2])返回[1,2,3]作爲輸出
這在Prolog中是不可能的。 Prolog謂詞不像許多其他語言中的程序可以對數據結構進行破壞性更改。在Prolog中,與許多功能語言一樣,「排序列表」意味着使用相同的元素以(可能!)不同的順序計算列表。
所以,如果你想要一個帶有列表並能「返回」同一列表的排序版本的謂詞,你需要一個帶有兩個參數的謂詞。通常的Prolog方式在這裏只是使用sort/2
謂詞。即使「輸入」列表已經排序(但請注意,它刪除了重複的元素),它仍能正常工作。
如果你真的要編碼的邏輯「檢查的有序列表;如果它是有序的,原樣返回,否則返回一個排序的版本」,可以是這樣做的,使用現有的代碼:
list_sorted(List, SortedList) :-
ordered(List),
SortedList = List.
list_sorted(List, SortedList) :-
\+ ordered(List), % the list is not already ordered
bubblesort(List, SortedList).
(我沒有測試你的代碼。)
相關問題
- 1. 列表沒有被排序
- 2. python是否有排序列表?
- 3. 排序列表
- 4. 排序列表
- 5. 列表排序
- 6. 排序列表
- 7. 排序列表
- 8. 排序列表
- 9. 排序列表
- 10. 排序列表
- 11. 排序列表
- 12. 排序列表
- 13. 排序列表
- 14. 排序列表
- 15. 排序列表
- 16. 排序列表
- 17. 列表排序
- 18. 排序列表
- 19. 排序列表
- 20. 排序列表
- 21. 是否有返回排序列表的list.sort()版本?
- 22. MVC jQuery重新排序列表沒有在回發排序
- 23. 從排序列表中選擇結果?
- 24. 排序列表,搜索結果等
- 25. 按函數結果排序列表
- 26. 返回按名字排序的列表?
- 27. Perksort不返回排序列表
- 28. 爲什麼排序列表返回無?
- 29. JSON重新排序返回列表
- 30. 如何排序列表
你能提供你的代碼和你的預期輸出的例子嗎?知道你在做什麼將幫助我們幫助你。 –
BubbleSort通常是一種包含外部循環和內部循環的算法,您可以在其中交換內部值,外部循環控制需要迭代的次數(在最壞情況下爲二次方程;可以在之後停止在一些內迭代過程中沒有進行交換)。除去外面的一個,並且只在計算需要的交換時重複一次。如果沒有,它已經訂購。 (當然,您可以刪除實際的交換,並只計算需要保留原始列表的情況) – sascha
除了接受投票之外,您還可以進行投票。 –