Вывести на экран данные в неубывающем порядке - Prolog
Формулировка задачи:
Пролог только начал изучать. Покопался в учебниках и интернете. Написал вот такой "код". Задача элементарная, но...
Решение задачи: «Вывести на экран данные в неубывающем порядке»
textual
Листинг программы
domains int=integer intl=int* file = input predicates start get_list(intl) app(intl,intl,intl) split(intl,int,intl,intl) sort(intl,intl) print_list(intl) clauses get_list([N|T]) :- not(eof(input)),readint(N),get_list(T). get_list([]). app([],X,X). app([H|T],X,[H|R]) :- app(T,X,R). split([],_,[],[]). split([H|X],D,[H|L],R) :- H<=D, split(X,D,L,R). split([H|X],D,L,[H|R]) :- H>D, split(X,D,L,R). sort([],[]). sort([H|T],Q) :- split(T,H,L,R), sort(L,SL), sort(R,SR), app(SL,[H],Q1), app(Q1,SR,Q). print_list([]). print_list([H|T]) :- write(H),nl,print_list(T). start :- openread(input,".\\my\\z.txt"),readdevice(input),get_list(U),sort(U,SU),print_list(SU).
Объяснение кода листинга программы
- В начале кода объявлены типы данных и файл для ввода данных.
- Далее идут определения функций (predicates) и их реализация (clauses).
get_list
считывает числа из файла до тех пор, пока не достигнет конца файла.app
применяет функцию к каждому элементу списка, разделяя его на подсписки.split
разделяет список на подсписки по определенному разделителю.sort
сортирует список по разделителю.print_list
выводит элементы списка на экран.start
запускает программу, открывая файл для чтения, считывая список, сортируя его и выводя на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д