35 lines
842 B
Prolog
35 lines
842 B
Prolog
lexicographical_sort(Numbers, Sorted_numbers):-
|
|
number_strings(Numbers, Strings),
|
|
sort(Strings, Sorted_strings),
|
|
number_strings(Sorted_numbers, Sorted_strings).
|
|
|
|
number_strings([], []):-!.
|
|
number_strings([Number|Numbers], [String|Strings]):-
|
|
number_string(Number, String),
|
|
number_strings(Numbers, Strings).
|
|
|
|
number_list(From, To, []):-
|
|
From > To,
|
|
!.
|
|
number_list(From, To, [From|Rest]):-
|
|
Next is From + 1,
|
|
number_list(Next, To, Rest).
|
|
|
|
lex_sorted_number_list(Number, List):-
|
|
(Number < 1 ->
|
|
number_list(Number, 1, Numbers)
|
|
;
|
|
number_list(1, Number, Numbers)
|
|
),
|
|
lexicographical_sort(Numbers, List).
|
|
|
|
test(Number):-
|
|
lex_sorted_number_list(Number, List),
|
|
writef('%w: %w\n', [Number, List]).
|
|
|
|
main:-
|
|
test(0),
|
|
test(5),
|
|
test(13),
|
|
test(21),
|
|
test(-22).
|