首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGAC2022第7天:挫败邪恶分子

CGAC2022第7天:挫败邪恶分子
EN

Code Golf用户
提问于 2022-12-07 00:24:19
回答 19查看 1.3K关注 0票数 20

代码:高尔夫预告牌2022事件的一部分。有关详细信息,请参阅链接的元帖子。

芬是个魔术师精灵。他可以在一组数字上施法术,以产生另一个数字或数列。

他的发明之一是威克咒语。他喜欢使用这个咒语,因为“一旦这个咒语被应用,一种prefix sum咒语和change number魔法变得神奇的更便宜”。

任务

执行芬的威克法术。

  • 给定长度为A的正整数n数组,
  • 将基于1的索引i处的每个项替换为最后一个j元素之和,其中j == 2 ** (trailing zeros of i in binary)

例如,如果给定的数组是A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1]

代码语言:javascript
复制
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
]

适用标准的密码-高尔夫规则。以字节为单位的最短代码获胜。

测试用例

代码语言:javascript
复制
[] -> []
[999] -> [999]
[3,1,4] -> [3,4,4]
[3,1,4,1,5,9,2,6] -> [3,4,4,9,5,14,2,31]
EN

回答 19

Code Golf用户

发布于 2022-12-07 00:37:29

Python 3.8,45字节

代码语言:javascript
复制
lambda l,i=0:[sum(l[i&(i:=i+1):i])for _ in l]

在网上试试!

一个索引位置i的和的开始索引是i&i-1,它是通过将最右边的1位设置为0从i的二进制表示形式得到的。

票数 11
EN

Code Golf用户

发布于 2022-12-07 11:04:47

Python NumPy,42字节

代码语言:javascript
复制
def f(a):b=a[1::2];b+=a[:-1:2];b@b>0!=f(b)

在网上试试!

Python NumPy,44字节

代码语言:javascript
复制
def f(a):a[1::2]+=a[:-1:2];a@a>0!=f(a[1::2])

在网上试试!

获取一个NumPy数组并就地修改它.

怎么做?

简单递归最好用示例来解释:

代码语言:javascript
复制
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
                        a9
票数 6
EN

Code Golf用户

发布于 2022-12-07 07:09:13

生锈,64字节

代码语言:javascript
复制
|x:&[_]|(0..x.len()).map(|i|x[i&i+1..=i].iter().sum()).collect()

在网上试试!

用XNOR的诡计。还使用代码之外的类型注释的公然滥用。

票数 5
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/255274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档