-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.vc
64 lines (56 loc) · 1.04 KB
/
test.vc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
:[@{int} in] printarr;
:[@{int}, int b, int e] qsort;
type testt = [int x, int];
:[[int x, int] i] bar =
(
i[x] = i[x] + 1;
);
:[testt i] bar =
(
i[x] = i[x] + 1;
);
int:[] main =
(
{int} foo = {3,7,2,8,1,6,2,3,8};
int in = 6;
testt t = [in, 0];
bar:[t];
bar:[[in, 0]];
printarr:[foo];
qsort:[foo, 0, foo[length] - 1];
printarr:[foo];
return 0;
);
int:[int] putchar;
:[@{int} in] printarr =
(
int i = 0;
while (i < in[length])
(
putchar:[in{i} + 48];
putchar:[32];
i = i + 1;
)
putchar:[10];
);
[{int}, {int}]:[@{int} l] partition =
(
[{int} l, {int} g] ret;
int idx = 1;
while (idx < l[length])
(
if (l{idx} < l{0})
ret[l] = ret[l] $ {l{idx}};
else
ret[g] = ret[g] $ {l{idx}};
idx = idx + 1;
);
return ret;
);
{int}:[{int} l] qsort =
(
if (l[length] < 2)
return l;
[{int} l, {int}g] lists = partition:[l];
return (qsort:[lists[l]]) $ {l{0}} $ (qsort:[lists[g]]);
);