test_cases = [ { "predictions": [ [ { "base": r""" template 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, 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 requires std::same_as 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); TEST_ON_TYPE(std::deque); } """, "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, }, }, ]