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
35a8877a
Commit
35a8877a
authored
Jan 22, 2017
by
Vít Novotný
Browse files
added missing prolog file for example 4.2_17
parent
149d835c
Changes
1
Hide whitespace changes
Inline
Side-by-side
4.2_17.pl
0 → 100644
View file @
35a8877a
% nacteni:
/*
['4.2_17.pl'].
*/
% move(+Uzel, -NaslUzel, -Cena)
% Uzel - aktuln stav
% NaslUzel - nov stav
% Cena - cena pechodu
move
(
Tasks1
*
[
_
/
F
|
Active1
]
*
Fin1
,
Tasks2
*
Active2
*
Fin2
,
Cost
)
:-
del1
(
Task
/
D
,
Tasks1
,
Tasks2
),
\
+
(
member
(
T
/
_
,
Tasks2
),
before
(
T
,
Task
)),
\
+
(
member
(
T1
/
F1
,
Active1
),
F
<
F1
,
before
(
T1
,
Task
)),
Time
is
F
+
D
,
insert
(
Task
/
Time
,
Active1
,
Active2
,
Fin1
,
Fin2
),
Cost
is
Fin2
-
Fin1
.
move
(
Tasks
*
[
_
/
F
|
Active1
]
*
Fin
,
Tasks
*
Active2
*
Fin
,
0
)
:-
insertidle
(
F
,
Active1
,
Active2
).
before
(
T1
,
T2
)
:-
precedence
(
T1
,
T2
).
before
(
T1
,
T2
)
:-
precedence
(
T
,
T2
),
before
(
T1
,
T
).
insert
(
S
/
A
,[
T
/
B
|
L
],[
S
/
A
,
T
/
B
|
L
],
F
,
F
)
:-
A
=<
B
,!.
insert
(
S
/
A
,[
T
/
B
|
L
],[
T
/
B
|
L1
],
F1
,
F2
)
:-
insert
(
S
/
A
,
L
,
L1
,
F1
,
F2
).
insert
(
S
/
A
,[],[
S
/
A
],
_
,
A
).
insertidle
(
A
,[
T
/
B
|
L
],[
idle
/
B
,
T
/
B
|
L
])
:-
A
<
B
,!.
insertidle
(
A
,[
T
/
B
|
L
],[
T
/
B
|
L1
])
:-
insertidle
(
A
,
L
,
L1
).
goal
([]
*
_
*
_
).
% del1
del1
(
A
,[
A
|
T
],
T
).
del1
(
A
,[
H
|
T1
],[
H
|
T2
])
:-
del1
(
A
,
T1
,
T2
).
% pocatecni uzel
start
([
t1
/
4
,
t2
/
2
,
t3
/
2
,
t4
/
20
,
t5
/
20
,
t6
/
11
,
t7
/
11
]
*
[
idle
/
0
,
idle
/
0
,
idle
/
0
]
*
0
).
% heuristika
h
(
Tasks
*
Processors
*
Fin
,
H
)
:-
totaltime
(
Tasks
,
Tottime
),
sumnum
(
Processors
,
Ftime
,
N
),
Finall
is
(
Tottime
+
Ftime
)
/
N
,
(
Finall
>
Fin
,
!
,
H
is
Finall
-
Fin
;
H
=
0
).
totaltime
([],
0
).
totaltime
([
_
/
D
|
Tasks
],
T
)
:-
totaltime
(
Tasks
,
T1
),
T
is
T1
+
D
.
sumnum
([],
0
,
0
).
sumnum
([
_
/
T
|
Procs
],
FT
,
N
)
:-
sumnum
(
Procs
,
FT1
,
N1
),
N
is
N1
+
1
,
FT
is
FT1
+
T
.
precedence
(
t1
,
t4
).
precedence
(
t1
,
t5
).
precedence
(
t2
,
t4
).
precedence
(
t2
,
t5
).
precedence
(
t3
,
t5
).
precedence
(
t3
,
t6
).
precedence
(
t3
,
t7
).
%
biggest
(
99
).
writelist
(
L
):-
writelist
(
L
,
1
).
writelist
([
E
|
L
],
I
):-
write
(
I
),
write
(
': '
),
write
(
E
),
nl
,
I1
is
I
+
1
,
writelist
(
L
,
I1
).
writelist
([],
_
).
run
:-
[
'4.1_9.pl'
],
nl
,
write
(
'Rozvrh prace procesoru, algoritmus A*'
),
nl
,
nl
,
start
(
Start
),
write
(
'Pocatecni stav: '
),
write
(
Start
),
nl
,
bestsearch
(
Start
,
Solution
),
write
(
'Nalezene reseni:'
),
nl
,
reverse
(
Solution
,
RSolution
),
writelist
(
RSolution
).
:-
run
.
% vim: set ft=prolog:
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