как сделать оговорку в pyswip - PullRequest
0 голосов
/ 29 января 2019

может ли кто-нибудь здесь помочь мне сделать предложения пролога внутри python, используя pyswip, как эта

база данных:

man(peter).
woman(adam).
man(jonathan).
man(paul).
woman(cloe).
father(jonathan, peter).
father(pierre, adam).
brother(pierre, paul).
father(pierre, cloe).

это функции

child(X, Y) :- father(Y,X).
son(X, Y) :- man(X) , father(Y, X).
daughter(X, Y) :- woman(X), father(Y, X).
brother(X, Y) :- man(X), father(Z, Y), father(Z, X).
sister(X, Y) :- woman(X), father(Z, Y), father(Z, X).

как можноя определяю эти функции пролога внутри python через pyswip

1 Ответ

0 голосов
/ 15 февраля 2019

У меня нет времени, чтобы прямо сейчас дать подробный ответ, я обновлю его позже, но вот простой пример интерфейса на python, который я сделал с пролог-программой, которая воспроизводит реверси.

#!/usr/bin/python

import sys
from pyswip import Prolog, Functor, Variable, Query, Atom

#important lines that were missing
prolog = Prolog()
prolog.consult('./reversi_game.pl')

start_board = Functor("startBoard", 1)
b = Variable()
start_board_query = Query(start_board(b))
start_board_query.nextSolution()
board = list(b.get_value())
print()
print_board(board) # an 8*8 board filled with 0 except at the 4 center squares that have x's and o's
start_board_query.closeQuery()

set_to_x = Functor("setToX", 1)
xp = Variable()
set_player_query = Query(set_to_x(xp))
set_player_query.nextSolution()
x_player = xp.get_value()
print()
print(x_player) # 'x'
set_player_query.closeQuery()

Надеюсь, это поможет.

...