Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
OpenGEODE
Commits
e7bcf12f
Commit
e7bcf12f
authored
Nov 14, 2016
by
Maxime Perrotin
Browse files
test-recursion prints the result
parent
19a7dbf5
Changes
2
Hide whitespace changes
Inline
Side-by-side
tests/regression/test-recursion/dataview-uniq.asn
View file @
e7bcf12f
...
...
@@ -2,7 +2,7 @@ TASTE-Dataview DEFINITIONS ::=
BEGIN
-- Named integers to work with letters
Letter ::=
INTEGER
{
Letter ::=
ENUMERATED
{
a (0),
b (1),
c (2),
...
...
@@ -28,7 +28,36 @@ Letter ::= INTEGER {
w (22),
x (23),
y (24),
z (25) } (0..25)
z (25) }
LetterInt ::= INTEGER {
letter-a (0),
letter-b (1),
letter-c (2),
letter-d (3),
letter-e (4),
letter-f (5),
letter-g (6),
letter-h (7),
letter-i (8),
letter-j (9),
letter-k (10),
letter-l (11),
letter-m (12),
letter-n (13),
letter-o (14),
letter-p (15),
letter-q (16),
letter-r (17),
letter-s (18),
letter-t (19),
letter-u (20),
letter-v (21),
letter-w (22),
letter-x (23),
letter-y (24),
letter-z (25) } (0..25)
Cost-ty ::= INTEGER (0..255)
...
...
tests/regression/test-recursion/og.pr
View file @
e7bcf12f
...
...
@@ -25,73 +25,78 @@ dcl my_tree Tree;
dcl res path;
/* CIF ENDTEXT */
/* CIF PROCEDURE (
460
, 209), (75, 35) */
/* CIF PROCEDURE (
574
, 209), (75, 35) */
PROCEDURE findpath;
/* CIF TEXT (107, 140), (329, 53) */
dcl result, best_path Path := { cost 0, elem {} };
dcl elem Path_elem := {};
/* CIF ENDTEXT */
/* CIF TEXT (104, 47), (183, 68) */
fpar
in startnode letter,
in endnode letter;
returns Path;
/* CIF ENDTEXT */
/* CIF TEXT (107, 140), (304, 53) */
dcl result, best_path Path := { cost 0, elem {} };
dcl elem Path_elem := {};
/* CIF ENDTEXT */
/* CIF START (626, 64), (70, 35) */
START;
/* CIF TASK (608, 119), (106, 68) */
TASK best_path := {
cost 100,
elem {}
};
/* CIF DECISION (585, 207), (151, 50) */
/* CIF TASK (584, 119), (153, 23) */
TASK best_path.cost := 100;
/* CIF DECISION (585, 162), (151, 50) */
DECISION startnode = endnode;
/* CIF ANSWER (431, 2
77
), (70, 23) */
/* CIF ANSWER (431, 2
32
), (70, 23) */
(true):
/* CIF TASK (398,
320
), (136, 23) */
/* CIF TASK (398,
275
), (136, 23) */
TASK best_path.cost :=0;
/* CIF ANSWER (820, 2
77
), (70, 23) */
/* CIF ANSWER (820, 2
32
), (70, 23) */
(false):
/* CIF DECISION (7
58, 320
), (
193
, 50) */
DECISION length(my_tree(startnode))
/* CIF DECISION (7
42, 275
), (
226
, 50) */
DECISION length(my_tree(
num(
startnode))
)
= 0;
/* CIF ANSWER (547, 3
90
), (70, 23) */
/* CIF ANSWER (547, 3
45
), (70, 23) */
(true):
/* CIF ANSWER (918, 3
90
), (70, 23) */
/* CIF ANSWER (918, 3
45
), (70, 23) */
(false):
/* CIF TASK (7
14, 433
), (4
78
, 1
13
) */
TASK for each in my_tree(startnode):
/* CIF TASK (7
08, 388
), (4
90
, 1
28
) */
TASK for each in my_tree(
num(
startnode)
)
:
result := findpath(each.son, endnode)
elem := result.elem
result.cost := result.cost + each.cost
elem := { each.son } // elem
result.elem := elem
best_path := if result.cost < best_path.cost then result else best_path fi
endfor;
/* CIF TASK (882, 561), (141, 35) */
TASK result.elem := elem;
ENDDECISION;
ENDDECISION;
/* CIF RETURN (643,
62
6), (35, 35) */
/* CIF RETURN (643,
54
6), (35, 35) */
RETURN best_path;
ENDPROCEDURE;
/* CIF START (
155
, 2
16
), (70, 35) */
/* CIF START (
237
, 2
32
), (70, 35) */
START;
/* CIF TASK (
1
, 27
1
), (
378
, 128) */
TASK my_tree(a) := {{ cost 3, son b}, {cost 4, son c}},
my_tree(b) := {{cost 2, son d}},
my_tree(c) := {{ cost 1, son d}, {cost 1, son e}, {cost 6, son f}},
my_tree(d) := {{cost 1, son h}},
my_tree(e) := {{cost 7, son h}},
my_tree(f) := {{cost 1, son g}},
my_tree(g) := {},
my_tree(h) := {{cost 5, son g}};
/* CIF TASK (
1
20, 4
19
), (139, 35) */
/* CIF TASK (
60
, 2
8
7), (
424
, 128) */
TASK my_tree(
Letter_
a) := {{ cost 3, son b}, {cost 4, son c}},
my_tree(
Letter_
b) := {{cost 2, son d}},
my_tree(
Letter_
c) := {{ cost 1, son d}, {cost 1, son e}, {cost 6, son f}},
my_tree(
Letter_
d) := {{cost 1, son h}},
my_tree(
Letter_
e) := {{cost 7, son h}},
my_tree(
Letter_
f) := {{cost 1, son g}},
my_tree(
Letter_
g) := {},
my_tree(
Letter_
h) := {{cost 5, son g}};
/* CIF TASK (20
2
, 4
35
), (139, 35) */
TASK res := findpath(a, g);
/* CIF PROCEDURECALL (
88
, 4
69
), (20
4
, 35) */
/* CIF PROCEDURECALL (
172
, 4
85
), (20
0
, 35) */
CALL writeln('best cost:', res.cost);
/* CIF NEXTSTATE (155, 524), (70, 35) */
/* CIF PROCEDURECALL (199, 540), (145, 35) */
CALL write('best path: [ ');
/* CIF TASK (196, 590), (151, 53) */
TASK for each in res.elem:
call write(each, ' ');
endfor;
/* CIF PROCEDURECALL (211, 663), (122, 35) */
CALL writeln(']');
/* CIF NEXTSTATE (237, 713), (70, 35) */
NEXTSTATE wait;
/* CIF STATE (
296
, 231), (70, 35) */
/* CIF STATE (
494
, 231), (70, 35) */
STATE wait;
ENDSTATE;
ENDPROCESS og;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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