Я хочу написать программу, которая получает список в качестве входных данных и список упорядочен return ture, а если список не упорядочен, сортируйте список. я пишу программу, которая получает список как входной и возвращает true, если этот список упорядочен и возвращает false в противном случае (упорядоченный (список)), также я пишу программу, которая получает список и сортирует его, и возвращает упорядоченный список в качестве вывода (bubblesort (List, Ordered)), но я не могу объединить их вместе, чтобы написать программу, которая, если список упорядочен, возвращает true else, сортирует список. я думаю много, но я не могу. пожалуйста, помогите мне спасибо большоеЕсли список упорядочен, возвращайте true else, если список не упорядочен, сортируйте список
ответ
, например, я хочу заказать ([1,2,3]) возвращает истину, как выход и упорядоченные ([1,3,2]) возвращает [1,2,3] как выход
Это невозможно в Прологе. Предикаты Пролога не похожи на процедуры на многих других языках, которые могут привести к разрушительным изменениям в структурах данных. В 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. HTML: Unordered Список не упорядочен правильно
- 2. Проверка, будет ли список упорядочен последовательно
- 3. Проверка того, упорядочен ли список в соответствии с функцией
- 4. Использование Order By в Oracle 11g, но список не упорядочен
- 5. Я пытаюсь использовать динамический порядок, но полученный список не упорядочен
- 6. Очень специфический упорядочен Python
- 7. нетрадиционный упорядочен первенствует
- 8. NSDictionary не упорядочен полностью
- 9. Столяр не правильно упорядочен?
- 10. комплекс упорядочен питона
- 11. Если заявление список исключений
- 12. List.forEach упорядочен в Java?
- 13. Запрос CAML не правильно упорядочен
- 14. Crystal Reports Если true, то возвращайте число else return NULL
- 15. Javascript, если список Cotains?
- 16. Javamail multiparts не упорядочен правильно
- 17. Python Если список пуст
- 18. Twitter4j поиск друзей не упорядочен по релевантности
- 19. Закрытый список возвращает новый список, если null
- 20. Вывод упорядочен по
- 21. Проверьте, если список заказан.
- 22. ListBox упорядочен по большинству нажатых элементов
- 23. Проверьте, не упорядочен ли заказ на дату
- 24. Отключить список, если выбрана опция
- 25. если Шара равно список символов
- 26. CouchDB/Couchbase вид упорядочен по количеству клавиш
- 27. Сортировка dataframe в R, используя список, который не является числовым или буквенным, но упорядочен
- 28. Отмена проверки, если список пуст
- 29. Сортируйте список, чтобы сформировать максимально возможное число
- 30. Завершите список, если список или новый список с объектом в нем, если объект
не могли бы вы предоставить код и пример вашего ожидаемого результата? Знание того, с чем вы работаете, поможет нам вам помочь. –
BubbleSort - это, в общем, алгоритм, содержащий внешний цикл и внутренний цикл, в котором вы меняете значения внутри внутреннего, внешний контролирует, сколько раз вам нужно перебирать (квадратичный в худшем случае, может остановиться после во время некоторой внутренней итерации не выполнялось никаких свопов). Удалите внешнюю и повторите операцию только после подсчета необходимых свопов. Если его нет, он уже заказывается. (Конечно, вы можете удалить фактический своп и подсчитать только один, чтобы сохранить исходный список немодифицированным). – sascha
Вы также можете оставить голосование в дополнение к принятому голосованию. –