【发布时间】:2018-06-07 18:43:21
【问题描述】:
背景故事:
所以我儿子随机来找我,问我如何写一个代数 (?) 表达式来计算根据指定的级别数制作一个纸牌屋需要多少张纸牌。我相当肯定这实际上不是一个家庭作业问题。如果他需要帮助,他通常会向我展示工作表。
“假设”是
a) 每层之间有水平放置的卡片,用于支撑;一张卡作为两个“高峰”之间的“桥梁” b) 最低(地面)层下面没有任何水平卡片,因为地板/桌子本身就是支撑。
例如,单层只有 2 张卡片:/\
再举个例子:3层一共15张卡片(请见谅我的烂图!)
/_\
/_\ /_\
/ \/ \/ \
嗯,我不擅长这种事情。我只知道基本代数,但我想认为自己是一个相当体面的(但不是“专业”)程序员。但无论如何,对于一个纯粹的代数公式,我无法想出一个公式来计算 所有 卡片,但我确实设法想出了一个计算给定层的卡片数量的公式,基于以上假设:2v + (v - 1)
嗯,可能有一个更好/更简化的方程式,同样,这仅适用于给定的层,而不是所有层。因此例如第 1 层(顶层),v=1,因此卡片数量为 2。或者对于第 3 层,v=3,因此卡片数量为 8(因此此公式计算水平支撑作为给定层的一部分)。
而且.. 这就是我对纯代数的理解。然而!使用一些计算机代码(我使用的是 javascript),我能够根据上述等式创建一个函数,以返回卡片的数量:
function getNumHouseCards(layers) {
var layers = layers || 1;
var cards = 0;
for (var v = 1; v <= layers; v++) {
cards += (2 * v) + (v - 1);
}
return cards;
}
与函数的返回值相比,我做了一些手动计数卡,这似乎是合法的,所以我应该很高兴,但是..我觉得这可以做得更好。所以..
问题:
如何改进?我想首先, 有没有办法只用代数表达式来写这个,或者真的需要编码来回答这样的问题?在任何一种情况下,我都觉得我把它弄得太复杂了(好吧,至少我做的那部分..)
【问题讨论】:
标签: javascript algebra