Adding tracked variables in main.jpf.
[jpf-core.git] / examples / Permutation.groovy
1 //import gov.nasa.jpf.vm.Verify\r
2 \r
3 //int count1 = Verify.getIntFromList(1,2,3)\r
4 //int count2 = Verify.getIntFromList(4,5,6)\r
5 //int count3 = Verify.getIntFromList(0)\r
6 //println "Count1: " + count1\r
7 //println "Count2:   " + count2\r
8 //println "Count3:     " + count3\r
9 \r
10 /*def list = [[1,2,3],\r
11             [1,3,2],\r
12             [2,1,3],\r
13             [2,3,1],\r
14             [3,1,2],\r
15             [3,2,1]]\r
16 int count = Verify.getInt(0,5)\r
17 \r
18 list[count].each {\r
19   switch(it) {\r
20     case 1:\r
21       //appObject.setValue([name: "Touched", value: "Touched", deviceId: 0, descriptionText: "",\r
22                         //                 displayed: true, linkText: "", isStateChange: false, unit: "", data: []])\r
23       println "1";\r
24       break;\r
25     case 2:\r
26       //lockObject.setValue([name: "lock0", value: "locked", deviceId: 0, descriptionText: "",\r
27                         //                 displayed: true, linkText: "", isStateChange: false, unit: "", data: []])\r
28       println "   2";\r
29                         break;\r
30     case 3:\r
31       //lockObject.setValue([name: "lock0", value: "unlocked", deviceId: 0, descriptionText: "",\r
32                         //                 displayed: true, linkText: "", isStateChange: false, unit: "", data: []])\r
33       println "      3";\r
34       break;\r
35     default:\r
36       break;\r
37   }\r
38 }*/\r
39 \r
40 def permuteHelper(nums, curr, list) {\r
41   if (curr == nums.size() - 1) {\r
42     list.add(nums)\r
43   } else {\r
44     for(int i=curr; i<nums.size(); i++) {\r
45       swap(nums, i, curr)\r
46       permuteHelper(nums, curr + 1, list)\r
47       swap(nums, curr, i)\r
48     }\r
49   }\r
50 }\r
51     \r
52 def swap(nums, src, dest) {\r
53   int temp = nums[dest];\r
54   nums[dest] = nums[src];\r
55   nums[src] = temp;\r
56 }\r
57 \r
58 def nums = [1,2,3,4]\r
59 def list = [[]]\r
60 permuteHelper(nums, 0, list)\r
61 \r
62 println list\r
63 \r