Я не совсем понял ваш вопрос.
- Как определяются ваши объекты?В частности, что возвращает getChar ()?
- Почему объекты встречаются в вашем коде Prolog?Пролог не является объектно-ориентированным.
Независимо от того, что дано для строк S0
и S1
, common(S0, S1, I0, I1)
объединяет I0
и I1
с позициями первого общего символаS0
и S1
соответственно.Если его нет, он терпит неудачу.Вы можете добавить I0 < 6
, чтобы получить решения только для первых 6 символов S0
.
common([C|_], S1, 1, I) :-
contains(C, S1, I).
common([C|S0], S1, I0, I1) :-
\+ contains(C, S1, I),
common(S0, S1, I, I1),
I0 is I + 1.
contains(C, [C|_], 1).
contains(C, [C0|T], I) :-
C \= C0,
contains(C, T, I0),
I is I0 + 1.
Полагаю, вам не следует так сильно пытаться преобразовать C # в Пролог.Вместо этого лучше подумайте о том, что делает программа на C #, и постройте программу Prolog, которая дает тот же эффект.Они должны преобразовывать код из одного в другой и получать разумный код на целевом языке.