Asked at Jump Trading, XTX Markets
Theory: Concurrency From ScratchRead the problem, hints and solution here. The editor needs a bigger screen: open this page on a laptop to write and run your code.
x xxxxxx-xxxx xxxxx xxxxx xxx xxxxxxx xxx xx xxxx: xxx, xxx, xxxx. xxx xxxxxx xxxxxx xx xx xxxxx xxxx; xxxx xxxxxxxx xxxxxxx xxxx xx xxxxxxxx xx xxxxx x xxxxxx. x xxxxx xxxxx xxxxxxx xxxxx xxx xxxxxx xxx xxxx xxxxx. x xxxxxx-xxxxxx xxxx xx xxxxx (xxx xxxxx xx x xxxxxxxxx xxxxx xxxx). xxx xxxxxxxxx xxxxx xxxxxxxx xxx xx xxx xxxxxxx: xxxxxxx xxx xxx xxxxx xx x xxxxxxxx xxxxxxx xxx xxxxx xx xxx xxxx xxxxxxxx; xxx xxxxxx xxxxx xxxxx xxx xxxxxx.
xxxxxxxxx xxxxxxx, x xxxxxxx xxxxxxxxxx xxxxx xxxx xxxx xxxxxx, xxx
xxx xxxxxx xxxxxx xxx xxx xxxxxx xx xxxxxx xxxxxxx:
xxxx xxxxx(xxxx xxxx x, xxxx xxxx x, xxxx xxxx x): xxxxxxxxx xxx
xxxxx xxxxxx xx xxx xxxxxx xxxxxxxx. xxxx xxxx xxxxxx xxxx xxx xxxxxx.xxx::xxxxx<xxxx xxxx, xxxx xxxx, xxxx xxxx> xxxx(): xxxxxxx x
xxxxxxxxxx xxxxxxxx: xxx xxxxx xxxxxx xx xxxx xxxxxx xxxxx (xx xxx
xxxxxxx xxxxx (x, x, x)). xxxxx x xxx xx xxx xxxxxx. xxxxxxx
xxxxxxxxxx xxxxx xx xxxx.xxx::xxxx_x xxxxxxxx() xxxxx: xxx xxxxxxx xxxxxxxx xxxxx.xxx xxxxx xxxxxxxx, xxxxx xxx xxxx xxxxxx:
xxx::xxxxxx<xxx::xxxx_x> xxxxxxxx xxxxxxx, xxxxxxxxx x. xxx
xxxxx x xxxxx xx xx xxxxxxxx.xxx + x (xxxxxxx), xxxx x
xxx::xxxxxx_xxxxxx_xxxxx(xxx::xxxxxx_xxxxx_xxxxxxx), xxxx xxxxx xxx
xxxxx xxxx xxxxxx, xxxx xxxxx xxx + x xxxx
xxx::xxxxxx_xxxxx_xxxxxxx. xxxx xxxxx xxxxxxxx xxx xxxxxxxx xx
xxxxxxx x, xxx xx xx xxxx xxxxxxx xxxxxx.xxx::xxxxxx_xxxxx_xxxxxxx; xx xxx,
xxxxx. xxxx xxx xxxxx xxxx xxxxxx, xxxx x
xxx::xxxxxx_xxxxxx_xxxxx(xxx::xxxxxx_xxxxx_xxxxxxx), xxxx xx-xxxx
xxx xxxxxxxx (xxxxxxx). xx xx xxxxxxx, xxxxx xxx xxxxx xxxxx.xxx::xxxxxx<xxxx xxxx> xxxx xxxxxxx
xxxxxxxxxx. xxxxx xxxx xxxx xxxxxx xxxx xxx xxxxxx xxxxx xxxxxxxxx
xxxxxxxxx xx xxx x++ xxxx xxxxxx xxx xxxxx xxxxxxxx xxxx; xxx
xxxxxxxxx xxxxxx xxxx xxxxxx xxx xxx xxx::xxxxxx_xxx xxxxxx xxxxx.xx xxxxx, xx xxx, xx xxxxxx-xxxx xxxxxx: x xxxx xxxx xxx xxxxxx xxx xxxxxx xxxxx xxxx, xxxx. xxxx xxxx xxxxxxxx xx xxx xxxxxx xxxxx xx xxx xxxxxxxxx.
[]{ xxxxxxx xxxx; xxx::xxxxxx<xxxx xxxx> xxx; xxxx xxxxxxx = xxxx.xxxx(); xxx.xxxx_xxxx(xxx::xxx<x>(xxxxxxx)); xxxx.xxxxx(xx, xx, xx); xxxx xxxxx = xxxx.xxxx(); xxx.xxxx_xxxx(xxx::xxx<x>(xxxxx)); xxx.xxxx_xxxx(xxx::xxx<x>(xxxxx)); xxx.xxxx_xxxx(xxx::xxx<x>(xxxxx)); xxxx.xxxxx(-x, xxx, x); xxxx xxxxxx = xxxx.xxxx(); xxx.xxxx_xxxx(xxx::xxx<x>(xxxxxx)); xxx.xxxx_xxxx(xxx::xxx<x>(xxxxxx)); xxx.xxxx_xxxx(xxx::xxx<x>(xxxxxx)); xxx.xxxx_xxxx(xxxxxx_xxxx<xxxx xxxx>(xxxx.xxxxxxxx())); xxxxxx xxx; }()
// [x, xx, xx, xx, -x, xxx, x, x] (xxxxxxxxx xxxxx; xxx xxxxxx xxxxx xxxxxxxx xx x)
[]{
xxxxxxx xxxx;
xxxx.xxxxx(x, x, x);
xxx::xxxxxx<xxxx> xxxx{xxxxx};
xxx::xxxxxx<xxxx xxxx> xxxxxxxxxx{x};
xxx::xxxxxx<xxx::xxxxxx> xxxxxxx;
xxx (xxx x = x; x < x; ++x) {
xxxxxxx.xxxxxxx_xxxx([&xxxx, &xxxx, &xxxxxxxxxx] {
xxxx xxxx xxxxxxxxxxxxxxx = x;
xxxxx (!xxxx.xxxx()) {
xxxx xxxx = xxxx.xxxx();
xx (xxx::xxx<x>(xxxx) != xxx::xxx<x>(xxxx) + x || xxx::xxx<x>(xxxx) != xxx::xxx<x>(xxxx) + x) ++xxxxxxxxxxxxxxx;
}
xxxxxxxxxx += xxxxxxxxxxxxxxx;
});
}
xxx::xxxxxx xxxxxx([&xxxx, &xxxx] {
xxx (xxxx xxxx x = x; x <= xxxxxx; ++x) xxxx.xxxxx(x, x + x, x + x);
xxxx.xxxxx(xxxx);
});
xxxxxx.xxxx();
xxx (xxxx& x : xxxxxxx) x.xxxx();
xxxx xxxx = xxxx.xxxx();
xxxxxx xxx::xxxxx<xxxx xxxx, xxxx xxxx, xxxx xxxx, xxxx xxxx>(xxxxxxxxxx.xxxx(), xxx::xxx<x>(xxxx), xxx::xxx<x>(xxxx), xxx::xxx<x>(xxxx));
}()
// (x, xxxxxx, xxxxxx, xxxxxx) (xxxxx xxxxx xxxxx x = x + x, x = x + x; xx xxxx xxxx xxxx x xxx)
xxxx() xxxx xx xxxx-xxxx xxx xxx xxxxxx xxxxxxx xxxxxx
xxxxxxxxxxxx: xx xxxxxxxx, xx xxxxxxxx xxxxxxxx (x xxxxx xxxx xx
xxxxxxxx xxx xxxx).xxxxxxxx() xxxxxx xx x xxx xx xxxx xxxxxxxx xx xxxxx xx xx xxxxxx;
xxxxx (x) xxxxxx xx xx xxxxxxx (xx).This problem is only available to subscribers.