gpt4 book ai didi

java - 以围绕保留中心框的圆形图案将网格框分配给用户

转载 作者:行者123 更新时间:2023-12-01 16:59:13 25 4
gpt4 key购买 nike

我正在尝试找出一种解决方案/可扩展公式/方法来将 2D 网格框分配给用户。

所以我们假设我使用的是无限网格。但有一个中心点(0, 0)将是它的坐标。该框永远不会被分配。

我需要从该框之外的一个点开始,例如 (0, 1),以便为第一个用户分配网格上的一个框。然后,对于下一个用户,它将移动到 (1, 1),对于下一个用户,它将移动到 (1, 0),依此类推。

一旦原点周围的所有盒子都被认领,就移动到下一个“层”,例如[(2, 2), (2, 1), (2, 0)]。

抱歉,如果以前有人问过这个问题,我不知道您会如何调用它。

另外:我还存储已分配的盒子数量以及类似信息。

Grid Visualization

最佳答案

最有效和简洁的方法是预先将给定图层的所有坐标生成到列表中。这样它就变成了数字对排列的简单算法。

这里有一个方法,它将生成给定 n-nn 的所有对的排列,并排除对 [0 ,0] .我正在使用 Apache commons 库中的 Pair

public List<Pair<Integer, Integer>> generateAllPerm(int n) {
return IntStream.rangeClosed(Math.abs(n)*-1, Math.abs(n))
.mapToObj(i -> IntStream.rangeClosed(Math.abs(n)*-1, Math.abs(n))
.filter(j -> i != 0 || j != 0)
.mapToObj(j -> new ImmutablePair<Integer, Integer>(i, j))
.collect(Collectors.toList())
).flatMap(List::stream)
.collect(Collectors.toList());

关于java - 以围绕保留中心框的圆形图案将网格框分配给用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61537714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com