Skip to content
GitLab
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Vít Novotný
pb016-priklady
Commits
3ea34c7f
Commit
3ea34c7f
authored
Jan 17, 2017
by
Vít Novotný
Browse files
added example 1.1_13
parents
Changes
2
Hide whitespace changes
Inline
Side-by-side
1.1_13.pl
0 → 100644
View file @
3ea34c7f
% nacteni:
/*
['1.1.1_13.pl'].
*/
% fakty (DB)
otec
(
milan
,
dana
).
otec
(
milan
,
petr
).
otec
(
jan
,
david
).
matka
(
pavla
,
dana
).
matka
(
pavla
,
petr
).
matka
(
jana
,
david
).
% pravidla
rodic
(
X
,
Y
):-
otec
(
X
,
Y
).
rodic
(
X
,
Y
):-
matka
(
X
,
Y
).
sourozenci
(
X
,
Y
):-
otec
(
O
,
X
),
otec
(
O
,
Y
),
X
\
=
Y
,
matka
(
M
,
X
),
matka
(
M
,
Y
).
% demonstracni vypis
% abychom se vyhli varovanim "Redefined static procedure ..."
:-
dynamic
write_all_X
/
3
,
start
/
0
.
write_all_X
(
Goal
,
X
,
Name
):-
call
(
Goal
),
write
(
' '
),
write
(
Name
),
write
(
' = '
),
write
(
X
),
nl
,
fail
.
write_all_X
(
_
,
_
,
_
).
start
:-
write
(
'Program predstavuje jednoduchou prologovskou databazi'
),
nl
,
write
(
's fakty i pravidly o rodinnych vztazich "otec", "matka"'
),
nl
,
write
(
'a "rodic".'
),
nl
,
nl
,
write
(
'Na databazi muzeme klast pomoci volani prologovskych cilu'
),
nl
,
write
(
'ruzne dotazy. Napr.:'
),
nl
,
nl
,
write
(
'Vysledek dotazu "otec(X,dana)" je:'
),
nl
,
write_all_X
(
otec
(
X
,
dana
),
X
,
'X'
),
nl
,
write
(
'Vysledky dotazu "rodic(X,david)" jsou: '
),
nl
,
write_all_X
(
rodic
(
X
,
david
),
X
,
'X'
),
nl
,
write
(
'Vysledek dotazu "sourozenci(dana,Y)" je:'
),
nl
,
write_all_X
(
sourozenci
(
dana
,
Y
),
Y
,
'Y'
),
nl
,
write
(
'Sami si vyzkousejte dalsi kombinace.'
),
nl
.
?-
start
.
:-
retractall
(
write_all_X
/
3
).
:-
retractall
(
start
/
0
).
1.1_13.py
0 → 100644
View file @
3ea34c7f
#!/usr/bin/env python
# encoding=utf-8 (pep 0263)
# fakty (DB)
# klici hasove tabulky jsou jmena potomku, hodnotami jmena rodicu
otec
=
dict
(
dana
=
"milan"
,
petr
=
"milan"
,
david
=
"jan"
)
matka
=
dict
(
dana
=
"pavla"
,
petr
=
"pavla"
,
david
=
"jana"
)
potomci
=
dict
()
def
_init_potomci
():
for
y
in
otec
:
potomci
[
y
]
=
True
for
y
in
matka
:
potomci
[
y
]
=
True
_init_potomci
()
# pravidla
def
rodic_testuj
(
x
,
y
):
return
y
in
otec
and
otec
[
y
]
==
x
or
\
y
in
matka
and
matka
[
y
]
==
x
def
rodic_generuj_Xs
(
y
):
xs
=
[]
if
y
in
otec
:
xs
.
append
(
otec
[
y
])
if
y
in
matka
:
xs
.
append
(
matka
[
y
])
return
xs
def
sourozenci_testuj
(
x
,
y
):
return
x
in
otec
and
y
in
otec
and
otec
[
x
]
==
otec
[
y
]
and
x
!=
y
and
\
x
in
matka
and
y
in
matka
and
matka
[
x
]
==
matka
[
y
]
def
sourozenci_generuj_Ys
(
x
):
ys
=
[]
for
y
in
potomci
:
if
sourozenci_testuj
(
x
,
y
):
ys
.
append
(
y
)
return
ys
# demonstracni vypis
if
__name__
==
"__main__"
:
print
(
'Vysledek dotazu otec["dana"] je %s.'
%
[
otec
[
"dana"
]])
print
(
'Vysledek dotazu rodic_generuj_Xs("david") je %s.'
%
\
rodic_generuj_Xs
(
"david"
))
print
(
'Vysledek dotazu sourozenci_generuj_Ys("dana") je %s.'
%
\
sourozenci_generuj_Ys
(
"dana"
))
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment