研究人员最近发现了一个有趣的蜂群,它生活在无限的蜂窝区域中:
每个牢房可以容纳一只蜜蜂或不能容纳一只蜜蜂。实际上,这些生物的生活似乎有点……混乱。可以计算出一个殖民地总是以以下模式开头:
(蜂绘制由 灵光布泰 上维基共享资源。这个蜂窝和蜜蜂图像从而被下发布的 CC-BY-SA。 牢骚)
之后,蜜蜂的生命周期分为几代。每一代老蜜蜂死亡而新的蜜蜂孵化,这主要取决于它们细胞的邻居:
- 如果一只蜜蜂的邻居少于两个,它会因孤独而死亡。
- 如果一只蜜蜂有三个以上的邻居,则会因拥挤而死亡。
- 如果一个小区在相邻小区中有两只,三只或四只活蜂,那么下一代会在那里孵化出一只新蜜蜂。
垂死的蜜蜂直到世代末期才死亡,因此它们仍会影响可能会孵化下一代的周围细胞。
现在我们知道了这样一个殖民地的工作方式,我们可以通过任何数量的世代对其进行模拟。
输入项
输入是标准输入给定的单个数字N,以换行符终止。0≤ Ñ ≤150。这是代模拟的数量。
输出量
输出是单个数字,在标准输出上,并且可以选择跟在一个换行符之后,该换行符表示N 代后的活蜂数量。
标准错误的附加输出将被忽略。
样本输入
0
5
42
100
样本输出
6
44
1029
5296
获奖条件
最短的代码胜出,这是高尔夫界的惯例。如果出现平局,则以较早的解决方案为准。
测试用例
有两个测试脚本,包含相同的测试用例:
在这两种情况下都调用:<test script> <my program> [arguments]
例如./test ruby beehive.rb
或./test.ps1 ./beehive.exe
。
我知道只有22个测试,而不是151个(主要是因为解决方案通常很慢)。请避免嵌入确切的测试用例,而不是解决任务。这些脚本可以方便您测试更改是否仍导致程序正常运行。不是您可以使代码适应特定的测试用例。
另一个注意
该任务是2011-W24期间在我的大学举行的高尔夫比赛的一部分。参赛者的成绩和语言如下:
- 336 – C
- 363 – C
- 387 – C
- 389 –哈斯克尔
- 455 – C
我们自己的解决方案是
- 230 –红宝石