


Нужна помощь по языку программирования PROLOG
На языке PROLOG написать программу. Условие: Вывести на экран серию из символов "/\" (две косых черты, соответственно, на каждый такой "пик" уходит два символа), количество которых задает пользователь.
Буду очень признательна за помощь.
Текст программы:
domains /*Razdel opisania tipov dannix*/
N=integer.
predicates /*Razdel opisania predikatov*/
povtor(N) /*Odnomestnii predicat*/
clauses /*Razdel faktov i pravil*/
povtor(0):-!. /*Yslovie okonchania rekyrsii*/
povtor(N):-write("/| "),N1=N-1,povtor(N1). /*Rekyrsivnoe pravilo*/
goal /*Vnytren. cel*/
write("Vvedite kolichestvo /| "),readint(X),povtor(X),nl,
write("Dlia vixoda nagmite lub. klav."),readchar(_).
Результат работы программы:

Какая-то плохая задача для пролога, она слишком процедурная.
Вот мой взгляд на задачу на диалекте swi-prolog:
%**
%* Предикат sawtooth_sequence(Sequence, Length):
%* Sequence есть список символов, представляющий Length зубцов.
%**
% База рекурсивного определения: 0 зубцов представляет пустой список.
sawtooth_sequence(Sequence, Length)
:- Length is 0, Sequence = [].
% Рекурсия: Sequence есть список символов, представляющий Length зубцов, при
% числе Length зубцов больше нуля, если в начале Sequence есть зубец
% (символы "/\" [47, 92]), а оставшаяся часть ---SequenceTail суть
% список, представляющий Length-1 зубец.
sawtooth_sequence(Sequence, Length)
:- Length > 0, TailLength is Length-1,
sawtooth_sequence(SequenceTail, TailLength),
Sequence = [47, 92 | SequenceTail].
%**
%* string_println(String):
%* Посимвольная печать строки.
%**
% Для пустой строки необходиво вывести символ перевода строки \n (ASCII 10).
string_println(String)
:- String = [], put(10).
% Если строка содержит в начале символ, то нужно вывести первый символ строки,
% а затем напечатать ее конец.
string_println(String)
:- String = [Char | StringEnd], put(Char),
string_println(StringEnd).
%**
%* main: Запрашивает у пользователя число зубцов, потом строит
%* с помощью предиката sawtooth_sequence последовательность зубцов,
%* А затем выводит ее на экран.
%**
main
:- string_println("Введите число зубцов"),
read(Length),
sawtooth_sequence(Sequence, Length),
string_println(Sequence).