| test_cases = [ |
| { |
| "predictions": [ |
| [ |
| { |
| "base": r""" |
| template <typename T> |
| bool has_close_elements(T numbers, float threshold) { |
| for (int i = 0; i < numbers.size(); i++) |
| for (int j = i + 1; j < numbers.size(); j++) |
| if (std::abs(numbers[i] - numbers[j]) < threshold) |
| return true; |
| |
| return false; |
| } |
| """, |
| "sfinae": r""" |
| template < |
| typename T, |
| std::enable_if_t<std::is_same_v<typename T::value_type, float>, int> = 0> |
| bool has_close_elements(T numbers, float threshold) { |
| for (int i = 0; i < numbers.size(); i++) |
| for (int j = i + 1; j < numbers.size(); j++) |
| if (std::abs(numbers[i] - numbers[j]) < threshold) |
| return true; |
| |
| return false; |
| } |
| """, |
| "concepts": r""" |
| template <typename T> |
| requires std::same_as<typename T::value_type, float> |
| bool has_close_elements(T numbers, float threshold) { |
| for (int i = 0; i < numbers.size(); i++) |
| for (int j = i + 1; j < numbers.size(); j++) |
| if (std::abs(numbers[i] - numbers[j]) < threshold) |
| return true; |
| |
| return false; |
| } |
| """, |
| } |
| ] |
| ], |
| "references": [ |
| { |
| "tests": r""" |
| #define ASSERT(...) \ |
| do { \ |
| if (!(__VA_ARGS__)) { \ |
| std::exit(-1); \ |
| } \ |
| } while (false) |
| |
| #define TEST_ON_TYPE(_type_) \ |
| do { \ |
| _type_ a = {1.0, 2.0, 3.9, 4.0, 5.0, 2.2}; \ |
| ASSERT(has_close_elements(a, 0.3) == true); \ |
| ASSERT(has_close_elements(a, 0.05) == false); \ |
| ASSERT(has_close_elements(_type_{1.0, 2.0, 5.9, 4.0, 5.0}, 0.95) == true); \ |
| ASSERT(has_close_elements(_type_{1.0, 2.0, 5.9, 4.0, 5.0}, 0.8) == false); \ |
| ASSERT(has_close_elements(_type_{1.0, 2.0, 3.0, 4.0, 5.0}, 2.0) == true); \ |
| ASSERT(has_close_elements(_type_{1.1, 2.2, 3.1, 4.1, 5.1}, 1.0) == true); \ |
| ASSERT(has_close_elements(_type_{1.1, 2.2, 3.1, 4.1, 5.1}, 0.5) == false); \ |
| } while (false) |
| |
| int main() { |
| TEST_ON_TYPE(std::vector<float>); |
| TEST_ON_TYPE(std::deque<float>); |
| } |
| """, |
| "invalids": r""" |
| int main() { |
| std::string s{}; |
| has_close_elements(s, 3.4); |
| } |
| """, |
| } |
| ], |
| "result": { |
| "base_run_passed@1": 1.0, |
| "base_run_compiled@1": 1.0, |
| "sfinae_run_passed@1": 1.0, |
| "sfinae_run_compiled@1": 1.0, |
| "concepts_run_passed@1": 1.0, |
| "concepts_run_compiled@1": 1.0, |
| }, |
| }, |
| ] |
|
|