Pyth,15个字节
Ls*V+KyMb1+t_K1
这定义了一个功能y
。在线尝试:演示
说明:
我们y[n]
是n
个Motzkin的号码。我y[n]
用公式计算
y[n] = dot product of (y[0], ..., y[n-1], 1) and (y[n-2], ..., y[0], 1)
请注意,第一个向量大于第二个向量(计算时除外y[0]
)。在这种情况下,Pyth会在第一个向量的末尾自动忽略1,以使两个向量的长度相等。
Ls*V+KyMb1+t_K1
L define a function y(b), which returns:
yMb compute the list [y[0], y[1], ..., y[b-1]]
K assign it to K
*V vectorized multiplication of
+K 1 * K with a 1 at the end
+t_K1 * reverse(K), remove the first element, and append 1
s return the sum (dot product)
此公式是OEIS上列出的公式之一的变体。这可能有点愚蠢。由于第一个向量的末尾为1(这使长度不相等),因此我实际上不必为递归提供基本情况。我希望两个人+...1
可以打高尔夫球。原来我做不到。
您可以使用等长向量的点积来定义类似的递归,y[0] = 1
并使用相同的字节数来定义基本情况。