00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "test/flatzinc.hh"
00039
00040 namespace Test { namespace FlatZinc {
00041
00042 namespace {
00044 class Create {
00045 public:
00046
00048 Create(void) {
00049 (void) new FlatZincTest("fzn_sets",
00050 "var set of 1..10: s1 :: output_var;\n\
00051 var set of 1..10: s2 :: output_var;\n\
00052 var set of 1..10: s3 :: output_var;\n\
00053 var set of 1..10: s4 :: output_var;\n\
00054 var set of 1..10: s5 :: output_var;\n\
00055 var set of 1..10: s6 :: output_var;\n\
00056 var set of 1..10: s7 :: output_var;\n\
00057 var set of 1..10: s8 :: output_var;\n\
00058 \n\
00059 var bool: rs1 :: output_var;\n\
00060 var bool: rs2 :: output_var;\n\
00061 var bool: rs3 :: output_var;\n\
00062 \n\
00063 constraint set_in(1, {1, 2, 3});\n\
00064 constraint set_in(1, s1);\n\
00065 constraint set_in_reif(2, s1, rs1);\n\
00066 \n\
00067 constraint set_subset({1, 2}, {1, 2, 3});\n\
00068 constraint set_subset({1, 2}, s2);\n\
00069 constraint set_subset_reif({1, 2, 3}, s2, rs2);\n\
00070 \n\
00071 constraint set_subset({1, 2}, {1, 2, 3});\n\
00072 constraint set_subset({1, 2, 3}, s3);\n\
00073 constraint set_subset_reif({1, 2, 3, 4}, s3, rs3);\n\
00074 \n\
00075 constraint set_intersect({1, 2, 3}, {1, 3, 5}, {1, 3});\n\
00076 constraint set_intersect(s4, {1, 2, 3}, {1, 3});\n\
00077 \n\
00078 constraint set_diff({1, 2, 3}, {1, 3, 5}, {2});\n\
00079 constraint set_diff(s5, {2}, {1, 3});\n\
00080 \n\
00081 constraint set_symdiff({1, 2, 3}, {1, 3, 5}, {2, 5});\n\
00082 constraint set_symdiff(s6, {2, 5}, {1, 5});\n\
00083 \n\
00084 constraint set_union({1, 2, 3}, {1, 3, 5}, {1, 2, 3, 5});\n\
00085 constraint set_union(s7, {2, 5}, {1, 2, 3, 4, 5});\n\
00086 \n\
00087 constraint set_card({1, 2, 3}, 3);\n\
00088 constraint set_card(s8, 3);\n\
00089 \n\
00090 solve satisfy;\n\
00091 ",
00092 "rs1 = false;\n\
00093 rs2 = false;\n\
00094 rs3 = false;\n\
00095 s1 = {1, 3, 4, 5, 6, 7, 8, 9, 10};\n\
00096 s2 = {1, 2, 4, 5, 6, 7, 8, 9, 10};\n\
00097 s3 = {1, 2, 3, 5, 6, 7, 8, 9, 10};\n\
00098 s4 = {1, 3, 4, 5, 6, 7, 8, 9, 10};\n\
00099 s5 = 1..3;\n\
00100 s6 = 1..2;\n\
00101 s7 = 1..5;\n\
00102 s8 = 1..3;\n\
00103 ----------\n\
00104 ");
00105 }
00106 };
00107
00108 Create c;
00109 }
00110
00111 }}
00112
00113