Advertisement
Guest User

Untitled

a guest
Nov 15th, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 6.50 KB | None | 0 0
  1. change_list([], _, _, []) :- !.
  2. change_list([Head|Tail], Head, Y, [Y|Result]):- change_list(Tail, Head, Y, Result), !.
  3. change_list([Head|Tail], X, Y, [Head|Result]):- change_list(Tail, X, Y, Result).
  4. generate_down(1, [1]).
  5. generate_down(N, [N|Tail]):-N1 is N-1, generate_down(N1,Tail).
  6. generate_up(N, N, [N]) :- !.
  7. generate_up(N, I, [I|Tail]):- I1 is I + 1, generate_up(N, I1, Tail).
  8. generate_up(N, Result) :- generate_up(N, 1, Result).
  9. generate_random_1_100(N, Result):- randset(N, 100, Result).
  10. generate_random_M_K(N, M, K, N, [Result]) :- random_between(M, K, Result).
  11. generate_random_M_K(N, M, K, I, [Head|Tail]):- I1 is I + 1, random_between(M, K, Head), generate_random_M_K(N, M, K, I1, Tail).
  12. generate_random_M_K(N, M, K, Result) :- generate_random_M_K(N, M, K, 1, Result).
  13. generate_random_size_M_K(M, K, Result) :- random_between(1, 10, N), generate_random_M_K(N, M, K, Result).
  14. intToString(0, "Ноль").
  15. intToString(1, "Один").
  16. intToString(2, "Два").
  17. intToString(3, "Три").
  18. intToString(4, "Четыре").
  19. intToString(5, "Пять").
  20. intToString(6, "Шесть").
  21. intToString(7, "Семь").
  22. intToString(8, "Восемь").
  23. intToString(9, "Девять").
  24. intsToStrings([], []) :- !.
  25. intsToStrings([Head|Tail], [HeadResult|TailResult]):-intToString(Head, HeadResult), intsToStrings(Tail, TailResult).
  26. list_x2([], []) :- !.
  27. list_x2([Head|Tail], [HeadResult|TailResult]):- HeadResult is Head*2, list_x2(Tail, TailResult).
  28. intsToAbs([], []) :- !.
  29. intsToAbs([Head|Tail], [HeadResult|TailResult]):- HeadResult is abs(Head), intsToAbs(Tail, TailResult).
  30. list_to_negative_positions([], _, []) :- !.
  31. list_to_negative_positions([Head|Tail], I, [I|TailResult]) :- Head < 0, !, I1 is I+1, list_to_negative_positions(Tail, I1, TailResult).
  32. list_to_negative_positions([Head|Tail], I, Result) :- Head >= 0, !, I1 is I+1, list_to_negative_positions(Tail, I1, Result).
  33. list_to_negative_positions([Head|Tail], Result) :- list_to_negative_positions([Head|Tail], 1, Result).
  34. delete_even_positions([], _, []) :- !.
  35. delete_even_positions([Head|Tail], I, [Head|TailResult]) :- I mod 2 =\= 0, !, I1 is I+1, delete_even_positions(Tail, I1, TailResult).
  36. delete_even_positions([_|Tail], I, Result) :- I mod 2 =:= 0, !, I1 is I+1, delete_even_positions(Tail, I1, Result).
  37. delete_even_positions([Head|Tail], Result) :- delete_even_positions([Head|Tail], 1, Result).
  38. split_pos_neg([], [], []) :- !.
  39. split_pos_neg([Head|Tail], [PosHeadResult|PosTailResult], Result) :- Head >= 0, !, PosHeadResult is Head, split_pos_neg(Tail, PosTailResult, Result).
  40. split_pos_neg([Head|Tail], Result, [NegHeadResult|NegTailResult]) :- Head < 0, !, NegHeadResult is Head, split_pos_neg(Tail, Result, NegTailResult).
  41. split_odd_even_positions([], _, [], []) :- !.
  42. split_odd_even_positions([_|Tail], I, [EvenHeadResult|EvenTailResult], Result) :- I mod 2 =:= 0, !, EvenHeadResult is I, I1 is I+1, split_odd_even_positions(Tail, I1, EvenTailResult, Result).
  43. split_odd_even_positions([_|Tail], I, Result, [OddHeadResult|OddTailResult]) :- I mod 2 =\= 0, !, OddHeadResult is I, I1 is I+1, split_odd_even_positions(Tail, I1, Result, OddTailResult).
  44. split_odd_even_positions([Head|Tail], EvenResult, OddResult) :- split_odd_even_positions([Head|Tail], 1, EvenResult, OddResult).
  45. delete_last_n([Head|Tail], N, [HeadResult|TailResult]) :- length([Head|Tail], L), L - N > 0, !, HeadResult is Head, delete_last_n(Tail, N, TailResult).
  46. delete_last_n([Head|Tail], N, []) :- length([Head|Tail], L), L =:= N, !.
  47. split_from_beg([], _, [], []) :- !.
  48. split_from_beg([Head|Tail], N, [BegHeadResult|BegTailResult], Result) :- length([Head|Tail], L), L - N > 0, !, BegHeadResult is Head, split_from_beg(Tail, N, BegTailResult, Result).
  49. split_from_beg([Head|Tail], N, Result, [EndHeadResult|EndTailResult]) :- length([Head|Tail], L), L - N =< 0, !, EndHeadResult is Head, split_from_beg(Tail, N, Result, EndTailResult).
  50. delete_beforelast_elem([], []).
  51. delete_beforelast_elem([Head|Tail], [HeadResult|TailResult]) :- length([Head|Tail], L), L > 1, HeadResult is Head, delete_beforelast_elem(Tail, TailResult), !.
  52. delete_beforelast_elem([_|Tail], Tail) :- length(Tail, L), L =:= 1, !.
  53. change_2_in_the_row([], []) :- !.
  54. change_2_in_the_row([Head|[Head|TailsTail]], [Head|TailResult]):- change_2_in_the_row(TailsTail, TailResult), !.
  55. change_2_in_the_row([Head|Tail], [Head|TailResult]) :- change_2_in_the_row(Tail, TailResult), !.
  56. swap([Head, SecondsHead|SecondsTail], 1, 2, [SecondsHead, Head|SecondsTail]) :- !.
  57. swap([Head, SecondsHead|SecondsTail], 1, I, [HeadResult, SecondsHead|TailResult]) :- I1 is I - 1, swap([Head|SecondsTail], 1, I1, [HeadResult|TailResult]), !.
  58. swap([Head|Tail], I, J, [Head|TailResult]) :- I1 is I - 1, J1 is J - 1, swap(Tail, I1, J1, TailResult), !.
  59. leftShift([Head|Tail], Result) :- append(Tail, [Head], Result).
  60. rightShift(List, Result) :- last(List, Last), delete_last_n(List, 1, TempResult), append([Last], TempResult, Result).
  61. mult_Lists_elem_by_elem(_, [], []) :- !.
  62. mult_Lists_elem_by_elem([], _, []) :- !.
  63. mult_Lists_elem_by_elem([Head1|Tail1], [Head2|Tail2], [HeadResult|TailResult]) :- HeadResult is Head1 * Head2, mult_Lists_elem_by_elem(Tail1, Tail2, TailResult), !.
  64. scalar_product([], [], 0).
  65. scalar_product([Head1|Tail1], [Head2|Tail2], Result) :- scalar_product(Tail1, Tail2, Result2), Result is Result2 + Head1*Head2, !.
  66. append_after_pos(List1, [Head2|Tail2], 1, Result) :- append([Head2], List1, Result2), append(Result2, Tail2, Result), !.
  67. append_after_pos(List1, [Head2|Tail2], Pos, [Head2|TailResult]) :- Pos > 1, I is Pos - 1, append_after_pos(List1, Tail2, I, TailResult), !.
  68. sym_raz([], _, []).
  69. sym_raz([Head1|Tail1], Set2, [Head1|TailResult]) :- not(member(Head1, Set2)), sym_raz(Tail1, Set2, TailResult), !.
  70. sym_raz([_|Tail1], Set2, Result) :-  sym_raz(Tail1, Set2, Result), !.
  71. xor(X, Y, R) :- sym_raz(X, Y, R1), sym_raz(Y, X, R2), union(R1, R2, R).
  72. last_enter([_|Tail], Char, I, Result) :- I1 is I+1, last_enter(Tail, Char, I1, Result), !.
  73. last_enter([Char|_], Char, I, I) :- !.
  74. last_enter(String, Char, Result) :- string_to_list(String, List), char_code(Char, CharCode), last_enter(List, CharCode, 1, Result).
  75. count_latin_list([], 0) :- !.
  76. count_latin_list([Head|Tail], Result) :- (Head >= 65, Head=<90 ; Head >= 97, Head=<122) -> count_latin_list(Tail, R), Result is R+1; count_latin_list(Tail, Result).
  77. count_latin(String, Result) :- string_to_list(String, List), count_latin_list(List, Result).
  78. palindrome(String) :- string_lower(String, StringLower), string_chars(StringLower, ListChars), reverse(ListChars, ReversedListChars), ListChars == ReversedListChars ->  true; false.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement