如何处理组中的groupby子流

时间:2018-03-03 13:33:43

标签: scala akka akka-stream

我一直在玩akka-streams,似乎遇到了一个问题,我找不到一个干净的方法来处理这个问题。

我有来自1 ... *球员的事件,他们在棋盘上有相应的位置。我想检查是否有任何给定时间的球员发生碰撞。为此,我需要在一个动作中处理所有当前连接的玩家的一组事件。我只能想出这样的东西,它可以适用于2个玩家,并且由于事件顺序流动,所以很可能不需要groupby。

<?php do_action('tribe_get_event_cat_slugs');
                if ( $slugs = ((array) 'charity') ) : ?>
                <p>If is 'charity' slug</p>
                <?php else : ?>
                <p>If is 'charity' slug</p>
        [contact-form-7 id="770" title="Inscrieri"]
<?php endif?>

理想情况下,我希望滑动窗口根据当前连接的玩家数量,在不同的组中均匀地发布每个玩家的事件。当然问题是,如果一个玩家比其他玩家更快地制作事件会需要某种节流,但为了教育,我认为可以假设他们以相同的速度发布。

1 个答案:

答案 0 :(得分:0)

假设有n个玩家,其中n等于或大于2(游戏对一个玩家来说没有意义),并且在每一轮中,{ {1}} player-1 player-n在下一轮开始之前都会进行各自的移动,然后使用groupBy是不必要的。换句话说,如果有三个玩家,例如,并且所有三个玩家在他们进行第二次移动之前首先进行移动,依此类推,那么可以简单地使用sliding方法。该方法的两个参数都等于玩家的数量,并且每个滑动的窗口&#34;将代表一轮。玩家在每轮中移动的顺序并不重要(在您的方案中,player-1player-n按顺序移动,从{{每轮1}}到1

此外,用于确定窗口中是否存在冲突的函数可以针对两个或更多个玩家进行推广。这是通过获取玩家的位置,将此集合转换为集合,然后检查此集合的大小是否小于玩家的数量来完成的:如果是,则至少有两个玩家持有相同的位置。

n