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 #include "test/flatzinc.hh"
00035
00036 namespace Test { namespace FlatZinc {
00037
00038 namespace {
00040 class Create {
00041 public:
00042
00044 Create(void) {
00045 (void) new FlatZincTest("fzn_sets",
00046 "var set of 1..10: s1 :: output_var;\n\
00047 var set of 1..10: s2 :: output_var;\n\
00048 var set of 1..10: s3 :: output_var;\n\
00049 var set of 1..10: s4 :: output_var;\n\
00050 var set of 1..10: s5 :: output_var;\n\
00051 var set of 1..10: s6 :: output_var;\n\
00052 var set of 1..10: s7 :: output_var;\n\
00053 var set of 1..10: s8 :: output_var;\n\
00054 \n\
00055 var bool: rs1 :: output_var;\n\
00056 var bool: rs2 :: output_var;\n\
00057 var bool: rs3 :: output_var;\n\
00058 \n\
00059 constraint set_in(1, {1, 2, 3});\n\
00060 constraint set_in(1, s1);\n\
00061 constraint set_in_reif(2, s1, rs1);\n\
00062 \n\
00063 constraint set_subset({1, 2}, {1, 2, 3});\n\
00064 constraint set_subset({1, 2}, s2);\n\
00065 constraint set_subset_reif({1, 2, 3}, s2, rs2);\n\
00066 \n\
00067 constraint set_subset({1, 2}, {1, 2, 3});\n\
00068 constraint set_subset({1, 2, 3}, s3);\n\
00069 constraint set_subset_reif({1, 2, 3, 4}, s3, rs3);\n\
00070 \n\
00071 constraint set_intersect({1, 2, 3}, {1, 3, 5}, {1, 3});\n\
00072 constraint set_intersect(s4, {1, 2, 3}, {1, 3});\n\
00073 \n\
00074 constraint set_diff({1, 2, 3}, {1, 3, 5}, {2});\n\
00075 constraint set_diff(s5, {2}, {1, 3});\n\
00076 \n\
00077 constraint set_symdiff({1, 2, 3}, {1, 3, 5}, {2, 5});\n\
00078 constraint set_symdiff(s6, {2, 5}, {1, 5});\n\
00079 \n\
00080 constraint set_union({1, 2, 3}, {1, 3, 5}, {1, 2, 3, 5});\n\
00081 constraint set_union(s7, {2, 5}, {1, 2, 3, 4, 5});\n\
00082 \n\
00083 constraint set_card({1, 2, 3}, 3);\n\
00084 constraint set_card(s8, 3);\n\
00085 \n\
00086 solve satisfy;\n\
00087 ",
00088 "rs1 = false;\n\
00089 rs2 = false;\n\
00090 rs3 = false;\n\
00091 s1 = {1, 3, 4, 5, 6, 7, 8, 9, 10};\n\
00092 s2 = {1, 2, 4, 5, 6, 7, 8, 9, 10};\n\
00093 s3 = {1, 2, 3, 5, 6, 7, 8, 9, 10};\n\
00094 s4 = {1, 3, 4, 5, 6, 7, 8, 9, 10};\n\
00095 s5 = 1..3;\n\
00096 s6 = 1..2;\n\
00097 s7 = 1..5;\n\
00098 s8 = 1..3;\n\
00099 ----------\n\
00100 ");
00101 }
00102 };
00103
00104 Create c;
00105 }
00106
00107 }}
00108
00109