gpt4 book ai didi

java - 指数公式背后的推理/直觉

转载 作者:行者123 更新时间:2023-12-01 19:31:38 26 4
gpt4 key购买 nike

我得到了这段代码用于分析:

private String type[] = {"Hearts","Spades","Clubs","Diamonds"};
private String rank[] = {"2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"};
private String deck[] = new String[52];


private void createDeck(){
for (int i = 0; i < rank.length; i++){
for (int j = 0; j < type.length; j++){
deck[type.length*i + j] = rank[i]+type[j];
}
}
}

这是对一副纸牌的简单模拟,我完全理解数组是如何工作的以及如何通过循环逻辑填充。但我难以理解的是,数组索引背后的直觉和推理是如何完成的: type.length*i + j

分析其输出后,它很简单,每次循环都会增加 1。伟大的。但出于对 Java 的热爱,我无法理解创建者如何为每次加 1 这么简单的事情制定这个公式。

我不确定我在这里问什么......这个简单公式背后的推理/逻辑是什么?当面对类似的情况时,我该怎么做才能获得这种直觉?从我的角度来看,这似乎完全是出乎意料的。我对代数和微积分相当熟悉,但这不是我用我所拥有的数学知识能够解决的问题。

谢谢。

最佳答案

首先,让我们考虑一下将卡片添加到数组中的顺序。根据给定的代码,我们循环遍历各个等级,并且对于每个等级,在进入下一个等级之前遍历所有类型。所以顺序是:

1 of hearts, 1 of spades, 1 of clubs, 1 of diamonds, 2 of hearts, ...

既然我们知道要按什么顺序添加卡片,那么我们如何根据卡片的排名和类型知道卡片的索引?

我们按顺序有 4 个等级的牌:4 张等级 1 的牌,然后是 4 张等级 2 的牌,4 张等级 3 的牌,依此类推。因此,例如,应在至少 6*4 = 24 张牌之后添加一张 8 级牌,加上一些偏移量。这个偏移量取决于卡的类型。

差不多就是这样了!将 i 作为等级索引,将 j 作为花色索引,我们得到给定卡牌的索引为:

type.length*i + j

关于java - 指数公式背后的推理/直觉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59648257/

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