29 lines
818 B
C++
29 lines
818 B
C++
#include <alsk/alsk.h>
|
|
#include <algorithm>
|
|
|
|
struct Gen {
|
|
int value;
|
|
int operator()() { return value++; }
|
|
};
|
|
|
|
int transform(int v, std::mt19937& rng) {
|
|
std::uniform_int_distribution<int> d(-3, 3);
|
|
return v + d(rng);
|
|
}
|
|
|
|
int main() {
|
|
auto gen = alsk::edsl::makeOperand<int(), Gen>();
|
|
auto transform = alsk::edsl::makeOperand<int(alsk::arg::R<0>, alsk::arg::RNG), FN(::transform)>();
|
|
auto selectMin = alsk::edsl::makeOperand<int(int, int), Fn<int const&(&)(int const&, int const&), std::min<int>>>();
|
|
|
|
constexpr auto body = (10*alsk::edsl::link<alsk::arg::R<1>()>(gen, transform)) ->* selectMin;
|
|
auto algo = alsk::edsl::implement<alsk::exec::StaticPool>(body);
|
|
algo.skeleton.task.task<0>() = Gen{5};
|
|
|
|
algo.executor.repeatability.upTo(8);
|
|
algo.executor.cores = 8;
|
|
|
|
auto r = algo();
|
|
std::printf("%d\n", r);
|
|
}
|