(灵感来自Helka对我在聊天中随机配对“ chess”和“ Fibonacci”标签的反应)
斐波那契
所述斐波那契数是在数学上更公知的序列,其中每一个数字是通过将前两个数相加组成之一。以下是零索引序列的定义:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
这样就产生了序列0, 1, 1, 2, 3, 5, 8, 13, 21, ...
(OEIS链接)。在此挑战中,我们将仅关注严格的正值(so 1, 1, 2, 3, ...
),您可以选择零索引或单索引,但是请在提交时说明。
通过使用f(n)
大小连续的正方形并将其边缘对齐在一起,斐波那契数可以用于平铺瓷砖。通过将正方形以当前正方形的“右-上-左-下”样式放置正方形,以逆时针方式进行平铺。的部分平铺示例f(8)=21
,其起始正方形用蓝色突出显示如下:
您可以看到f(1)=1
作为开始的正方形(以蓝色突出显示),f(2)=1
位于其右边的f(3)=2
正方形,从此处开始的f(4)=3
正方形,位于左边的正方形,依此类推。下一个正方形将被f(9)=21+13=34
放置在底部。这是我们将在此挑战中使用的部分切片方法。
皇后
在国际象棋游戏中,最强大的棋子是皇后,因为它可以水平,垂直或对角线移动任意数量的空间。在下面的电路图中,带有黑色圆圈的正方形表示女王可以移动的位置:
我们将术语“ 覆盖率”定义为
给定女王/王后在空白板上的特定位置,并包括女王/王后自己的起始位置,女王/王后可以移动到的平方百分比与正方形总数的乘积。
对于上面的示例,女王的覆盖范围是28/64 = 43.75%
。如果女王在右上角h8
,则覆盖范围为22/64 = 34.375%
。如果女王进来e7
,范围将会是24/64 = 37.5%
。
挑战
我们将使用上面演示的斐波那契平铺作为此挑战的棋盘。您将获得两个正整数作为输入,n
和x
:
- 该
n
代表平铺多大。上面的示例图块21
的左侧为正方形,是n = 8
自以来的大小f(8) = 21
(当索引为零时)。 - 的
x
表示斐波那契数平方用于大号(或多个)的位置,用于计算覆盖范围。将皇后一次放置在该特定斐波那契广场砖上的每个广场上一次,并且总覆盖率是各个(唯一)覆盖率的总和。
例如,这是n = 8
(与上面相同的平铺)和x = 4
(对应于f(4) = 3
正方形,阴影为蓝色)的图像。通过一次将女王放置在这九个蓝色方块中的每个方块中,女王可以(合并)覆盖每个阴影为橙色的方块。因此,本例中的总覆盖范围是309/714 = 43.28%
。
很显然,在任何时候n = x
,覆盖范围都将是100%
(例如,使用n=8
和x=8
,您可以看到整个板上的每个正方形至少要覆盖一次)。相反,具有适当大的n
和x=1
或x=2
,覆盖将要接近(但从来没有达到)0%
(例如,与n=8
和x=1
,覆盖面微不足道88/714 = 12.32%
)。
给定两个这样的输入数字,您必须输出覆盖率百分比,精确到两位小数。请指定您的代码如何处理舍入。
规则
- 输入和输出可以任何方便的格式给出,但必须精确到两位小数。请指定您的代码如何处理舍入。
- 假设板上没有其他物件,否则会干扰移动。
- 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
- 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码!
- 禁止出现标准漏洞。
- 这是代码高尔夫球,因此所有常见的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。
例子
n = 8, x = 4
43.28
n = 8, x = 8
100 or 100.00
n = 8, x = 1
12.32
n = 4, x = 1
66.67
n = 4, x = 2
60 or 60.00
n = 5, x = 3
75 or 75.00
n = 5, x = 1
47.5 or 47.50