27 lines
699 B
C++
27 lines
699 B
C++
|
#include <alsk/alsk.h>
|
||
|
|
||
|
int produce(int a, int b) {
|
||
|
return rand()%(a|b);
|
||
|
}
|
||
|
|
||
|
using namespace alsk;
|
||
|
using namespace alsk::arg;
|
||
|
|
||
|
constexpr auto add = edsl::link<int(P<0>, P<1>), std::plus<int>>();
|
||
|
constexpr auto mul = edsl::link<int(R<1>, P<2>), std::multiplies<int>>();
|
||
|
constexpr auto min = edsl::link<int(int, int), Fn<int const&(&)(int const&, int const&), std::min<int>>>();
|
||
|
constexpr auto prod = edsl::link<int(int, P<1>), FN(produce)>();
|
||
|
|
||
|
using Skel = decltype(getSkeleton(
|
||
|
edsl::link<R<2>(int, int, int)>(
|
||
|
add &
|
||
|
edsl::link<int(R<0>, P<1>)>(seq(3 * prod) ->* min) &
|
||
|
mul
|
||
|
)
|
||
|
));
|
||
|
|
||
|
int main() {
|
||
|
auto task = alsk::implement<exec::Sequential, Skel>();
|
||
|
std::printf("%d\n", task(10, 20, 5));
|
||
|
}
|