java - 如何递减 ArrayList 中的每一列并使用 Java 中递减列的总和创建新列
问题描述
我正在尝试为保加利亚纸牌提出一种新算法。在互联网上,这个游戏只有一个解决方案,每个人都只是应付它。在这里,我试图以一种不同的方式来做。这是描述
在本作业中,您将模拟保加利亚纸牌游戏。游戏以 45 张牌开始。将它们随机分成若干堆。例如,您可以从大小为 20、5、1、9 和 10 的牌堆开始。在每一轮中,您从每堆牌中取出一张牌,用这些牌组成一个新牌堆。例如,样本起始配置将转换为大小为 19、4、8、10 和 5 的堆。当这些堆的大小为 1、2、3、4、5、6、7、8、和 9,按某种顺序。(可以证明你总是以这样的配置结束。)在你的程序中,产生一个随机的起始配置并打印出来。然后继续应用纸牌步骤并打印结果。达到纸牌最终配置时停止。
所以我做了什么,我创建了 2 Dimensional ArrayList 并用随机数量的桩填充它。每堆都有一些金额卡。总和正好是 45。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class BulgarianSolitare {
public static void main(String[] args) {
int numberOfCards = 45;
Random random = new Random();
int numberOfPiles = random.nextInt(numberOfCards) + 1;
System.out.println("Number of piles - " + numberOfPiles);
ArrayList<ArrayList<Integer>> piles = new ArrayList();
ArrayList<Integer> eachPile = new ArrayList();
ArrayList<Integer> lastPile = new ArrayList();
if (numberOfCards % numberOfPiles != 0) {
for (int i = 0; i < numberOfPiles; i++) {
for (int j = 1; j <= numberOfCards / numberOfPiles; j++) {
eachPile.add(j);
}
piles.add(eachPile);
eachPile = new ArrayList();
}
for (int i = 0; i < numberOfCards % numberOfPiles; i++) {
lastPile.add(i + 1);
}
piles.add(lastPile);
eachPile = new ArrayList();
} else {
for (int i = 0; i < numberOfPiles; i++) {
for (int j = 1; j <= numberOfCards / numberOfPiles; j++) {
eachPile.add(j);
}
piles.add(eachPile);
eachPile = new ArrayList();
}
}
System.out.println("This is your beginning set up:");
for (int i = 0; i < piles.size(); i++) {
System.out.print("[" + piles.get(i).size() + "]");
}
}
}
这个程序的输出是。
桩数 - 17
这是您的初始设置:
[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2 ][11]
现在我需要编写程序的主要逻辑,但是无论我在写什么,我都会得到一个超出边界的错误。有人可以帮我解决这个游戏的算法吗?
解决方案
推荐阅读
- ios - 使用属性字符串获取 UILabel 中特定文本的框架?
- java - Java Spring:mongodb连接问题
- python - Python Dataframe:如何去除列中列表中的所有值
- php - 如何修复未定义的偏移量:laravel 刀片中的 0?
- powershell - 执行bat文件到远程客户端
- json - 从包含多个 JSON 的字符串中解析 JSON
- ssl - Kafka HBase Sink Connector 无法将其消息传递到 HBase
- c - C 宏观评价
- python - 将我的数组中的值转换为 INT
- python - 使用熊猫数据框中的不同参考行比较数值