-
Notifications
You must be signed in to change notification settings - Fork 0
/
action.rego
82 lines (63 loc) · 1.39 KB
/
action.rego
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package keybab
action[key] = result {
key := c
result := {"type": "center"}
}
test_action {
action[c] == {"type": "center"}
}
type_move(x, y) = {
"type": "move",
"x": x,
"y": y,
}
action_move(n, d) = result {
d == j
y := n * -1
x := 0
result := type_move(x, y)
}
action_move(n, d) = result {
d == k
y := n * 1
x := 0
result := type_move(x, y)
}
action_move(n, d) = result {
d == h
x := n * -1
y := 0
result := type_move(x, y)
}
action_move(n, d) = result {
d == l
x := n * 1
y := 0
result := type_move(x, y)
}
test_action_move {
action_move(1, j) == {"type": "move", "x": 0, "y": -1}
action_move(20, k) == {"type": "move", "x": 0, "y": 20}
action_move(300, h) == {"type": "move", "x": -300, "y": 0}
action_move(4000, l) == {"type": "move", "x": 4000, "y": 0}
}
group_action(ng, d) = result {
n := group_to_number(ng)
result := action_move(n, d)
}
test_group_action {
group_action([n1], k) == action_move(1, k)
group_action([n5, n9, n2], h) == action_move(592, h)
}
merge_action(a1, a2) = result {
a1.type == "move"
a2.type == "move"
x := a1.x + a2.x
y := a1.y + a2.y
result := type_move(x, y)
}
test_merge_action {
action_move(19, k) == merge_action(action_move(1, j), action_move(20, k))
action_move(3700, l) == merge_action(action_move(300, h), action_move(4000, l))
{"type": "move", "x": 3700, "y": 19} == merge_action(action_move(19, k), action_move(3700, l))
}