#include "loops.hpp" #include #include namespace control_flow { auto sum_range(const int from, const int to) -> int { return std::ranges::fold_left( std::views::iota(from, to + 1), // End-exclusive 0, [](const int acc, const int x) { return acc + x; } ); } auto factorial(const int n) -> long long pre(n >= 0) { if (n == 0 || n == 1) return 1; return std::ranges::fold_left( std::views::iota(2, n + 1), // End-exclusive 1LL, [](const long long acc, const int x) { return acc * x; } ); } auto count_occurrences(const std::vector& data, const int target) -> int { int count = 0; std::ranges::for_each(data, [target, &count](const int x) { if (x == target) ++count; }); return count; } auto first_index_of(const std::vector& data, const int target) -> int { const auto it = std::ranges::find(data, target); if (it == data.end()) return -1; return static_cast(std::distance(data.begin(), it)); } } // namespace control_flow