Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Vít Novotný
pb016-priklady
Commits
d7c413bf
Commit
d7c413bf
authored
Jan 18, 2017
by
Vít Novotný
Browse files
added example 2.9.2_22
parent
6d4c7dae
Changes
3
Hide whitespace changes
Inline
Side-by-side
2.9.2_22.pl
0 → 100644
View file @
d7c413bf
% nacteni:
/*
['2.9.2_22.pl'].
*/
path
(
A
,
Z
,
Graf
,
Cesta
,
Cena
)
:-
path1
(
A
,[
Z
],
0
,
Graf
,
Cesta
,
Cena
).
path1
(
A
,[
A
|
Cesta1
],
Cena1
,
_
,[
A
|
Cesta1
],
Cena1
).
path1
(
A
,[
Y
|
Cesta1
],
Cena1
,
Graf
,
Cesta
,
Cena
)
:-
adjacent
(
X
,
Y
,
CenaXY
,
Graf
),
\
+
member
(
X
,
Cesta1
),
Cena2
is
Cena1
+
CenaXY
,
path1
(
A
,[
X
,
Y
|
Cesta1
],
Cena2
,
Graf
,
Cesta
,
Cena
).
adjacent
(
X
,
Y
,
CenaXY
,
Graf
)
:-
member
(
X
-
Y
/
CenaXY
,
Graf
);
member
(
Y
-
X
/
CenaXY
,
Graf
).
start
:-
write
(
'Cesta v grafu'
),
nl
,
nl
,
path
(
s
,
u
,
[
s
-
t
/
3
,
t
-
v
/
1
,
t
-
u
/
5
,
u
-
t
/
2
,
v
-
u
/
2
],
Cesta
,
Cena
),
write
(
'Cesta='
),
write
(
Cesta
),
nl
,
write
(
'Cena='
),
write
(
Cena
),
nl
,
nl
.
?-
start
.
2.9.2_22.py
0 → 100644
View file @
d7c413bf
#!/usr/bin/env python
# encoding=utf-8 (pep 0263)
from
linked_lists
import
LinkedList
,
Cons
,
Nil
def
path
(
a
,
z
,
graph
):
for
cesta
,
cena
in
path1
(
a
,
LinkedList
(
z
),
0
,
graph
,
1
):
yield
(
cesta
,
cena
)
def
path1
(
a
,
akumulator_cesty
,
akumulator_ceny
,
graph
,
depth
):
if
akumulator_cesty
.
head
==
a
:
yield
(
akumulator_cesty
,
akumulator_ceny
)
else
:
y
=
akumulator_cesty
.
head
for
x
,
cenaXY
in
adjacent_anyXcenaXY
(
y
,
graph
):
if
not
member
(
x
,
akumulator_cesty
):
for
cesta
,
cena
in
path1
(
a
,
Cons
(
x
,
akumulator_cesty
),
akumulator_ceny
+
cenaXY
,
graph
,
depth
+
1
):
yield
(
cesta
,
cena
)
def
adjacent_anyXcenaXY
(
y
,
edges
):
for
a
,
b
,
cenaAB
in
member_anyX
(
edges
):
if
y
==
a
:
yield
(
b
,
cenaAB
)
if
y
==
b
:
yield
(
a
,
cenaAB
)
def
member
(
x
,
xs
):
if
xs
==
Nil
:
return
False
if
x
==
xs
.
head
:
return
True
return
member
(
x
,
xs
.
tail
)
def
member_anyX
(
xs
):
if
xs
==
Nil
:
return
yield
xs
.
head
for
x
in
member_anyX
(
xs
.
tail
):
yield
x
# demonstracni vypis
if
__name__
==
"__main__"
:
print
(
'Cesta v grafu
\n
'
)
cesta_
,
cena_
=
next
(
path
(
"s"
,
"u"
,
LinkedList
(
(
"s"
,
"t"
,
3
),
(
"t"
,
"v"
,
1
),
(
"t"
,
"u"
,
5
),
(
"u"
,
"t"
,
2
),
(
"v"
,
"u"
,
2
))))
print
(
'Cesta=%s'
%
cesta_
)
print
(
'Cena=%d
\n
'
%
cena_
)
2.9.2_22.py.out
0 → 100644
View file @
d7c413bf
Cesta v grafu
Cesta=[s, t, u]
Cena=8
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