代码:高尔夫预告牌2022事件的一部分。有关详细信息,请参阅链接的元帖子。
芬是个魔术师精灵。他可以在一组数字上施法术,以产生另一个数字或数列。
他的发明之一是威克咒语。他喜欢使用这个咒语,因为“一旦这个咒语被应用,一种prefix sum咒语和change number魔法变得神奇的更便宜”。
执行芬的威克法术。
A的正整数n数组,i处的每个项替换为最后一个j元素之和,其中j == 2 ** (trailing zeros of i in binary)。例如,如果给定的数组是A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1],
Wick(A) = [
1, # 1
3, # 1+2
3, # 3
10, # 1+2+3+4
5, # 5
11, # 5+6
7, # 7
36, # 1+2+3+4+5+6+7+8
9, # 9
10, # 9+1
]适用标准的密码-高尔夫规则。以字节为单位的最短代码获胜。
[] -> []
[999] -> [999]
[3,1,4] -> [3,4,4]
[3,1,4,1,5,9,2,6] -> [3,4,4,9,5,14,2,31]发布于 2022-12-07 00:37:29
lambda l,i=0:[sum(l[i&(i:=i+1):i])for _ in l]一个索引位置i的和的开始索引是i&i-1,它是通过将最右边的1位设置为0从i的二进制表示形式得到的。
发布于 2022-12-07 11:04:47
def f(a):b=a[1::2];b+=a[:-1:2];b@b>0!=f(b)def f(a):a[1::2]+=a[:-1:2];a@a>0!=f(a[1::2])获取一个NumPy数组并就地修改它.
简单递归最好用示例来解释:
a1
a2
a3
a4
a5
a6
a7
a8
a9
==>
a1
a1+a2
a3
a3+a4
a5
a5+a6
a7
a7+a8
a9
==>
a1
a1+a2
a3
a1+a2+a3+a4
a5
a5+a6
a7
a5+a6+a7+a8
a9
==>
a1
a1+a2
a3
a1+a2+a3+a4
a5
a5+a6
a7
a1+a2+a3+a4+a5+a6+a7+a8
a9https://codegolf.stackexchange.com/questions/255274
复制相似问题