From 7a7d5e4bdca1794ce89d8f46979b5eab1b9621c9 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Wed, 23 Jan 2019 03:58:10 +0100 Subject: [PATCH] fix --- or-tools.code-workspace | 13 ++++++++++++- ortools/sat/table.cc | 19 +++++++++---------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/or-tools.code-workspace b/or-tools.code-workspace index 469be9fd5c..ac60e8bb38 100644 --- a/or-tools.code-workspace +++ b/or-tools.code-workspace @@ -9,7 +9,18 @@ "scoped_allocator": "cpp", "*.inc": "cpp", "vector": "cpp", - "utility": "cpp" + "utility": "cpp", + "__config": "cpp", + "__nullptr": "cpp", + "cstddef": "cpp", + "exception": "cpp", + "initializer_list": "cpp", + "optional": "cpp", + "stdexcept": "cpp", + "type_traits": "cpp", + "typeinfo": "cpp", + "variant": "cpp", + "algorithm": "cpp" }, "C_Cpp.clang_format_fallbackStyle": "Google", "C_Cpp.default.includePath": [ diff --git a/ortools/sat/table.cc b/ortools/sat/table.cc index f1396f1943..dcdada1370 100644 --- a/ortools/sat/table.cc +++ b/ortools/sat/table.cc @@ -96,9 +96,8 @@ void ProcessOneColumn( } } -void CompressTuples(const std::vector& domain_sizes, - std::vector>* tuples, int64* any_value) { - *any_value = kint64min; // Check not conflicting. +void CompressTuples(const std::vector& domain_sizes, int64 any_value, + std::vector>* tuples) { if (tuples->empty()) return; const int initial_num_tuples = tuples->size(); const int num_vars = (*tuples)[0].size(); @@ -118,8 +117,8 @@ void CompressTuples(const std::vector& domain_sizes, masked_tuples_to_indices; for (int t = 0; t < tuples->size(); ++t) { std::vector masked_copy = (*tuples)[t]; - if (masked_copy[i] == *any_value) continue; - masked_copy[i] = *any_value; + if (masked_copy[i] == any_value) continue; + masked_copy[i] = any_value; masked_tuples_to_indices[masked_copy].push_back(t); } to_remove.clear(); @@ -197,7 +196,7 @@ std::function TableConstraint( for (int i = 0; i < n; ++i) { domain_sizes.push_back(values_per_var[i].size()); } - CompressTuples(domain_sizes, &new_tuples, &any_value); + CompressTuples(domain_sizes, any_value, &new_tuples); // Create one Boolean variable per tuple to indicate if it can still be // selected or not. Note that we don't enforce exactly one tuple to be @@ -228,12 +227,12 @@ std::function TableConstraint( std::vector active_values; std::vector any_tuple_literals; for (int i = 0; i < n; ++i) { - bool has_any = false; - bool all_equals = true; active_tuple_literals.clear(); active_values.clear(); any_tuple_literals.clear(); const int64 first = new_tuples[0][i]; + bool has_any = first == any_value; + bool all_equals = true; for (int j = 0; j < tuple_literals.size(); ++j) { const int64 v = new_tuples[j][i]; @@ -312,8 +311,8 @@ std::function NegatedTableConstraintWithoutFullEncoding( } std::vector> new_tuples = tuples; - int64 any_value = kint64min; - CompressTuples(domain_sizes, &new_tuples, &any_value); + const int64 any_value = kint64min; + CompressTuples(domain_sizes, any_value, &new_tuples); for (const std::vector& tuple : new_tuples) { clause.clear();