首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按深度乘以数

按深度乘以数
EN

Code Golf用户
提问于 2022-07-24 00:02:43
回答 13查看 2.2K关注 0票数 19

给定一个衣衫褴褛的列表,我们可以将元素的深度定义为其上方数组的数量或嵌套的数量。

例如,对于列表[[1, 2], [3, [4, 5]]]2的深度为2,因为它嵌套在两个列表中:基本列表和列表[1, 2]4的深度为3,因为它嵌套在三个列表中。

你面临的挑战是,给出一个粗糙的正整数列表,把它们乘以深度。

例如,给定列表[[1, 2], [3, [4, 5]], 6]

  • 1的深度是2,所以双倍的-> 2
  • 2的深度也是2,所以双倍的-> 4
  • 3的深度是2,所以双倍的-> 6
  • 4的深度是3,所以是-> 12的三倍
  • 5的深度是3,所以是-> 15的三倍
  • 6的深度是1,所以不要使用-> 6

因此,结果是[[2, 4], [6, [12, 15]], 6]

另一种看待它的方法:

代码语言:javascript
复制
[[1, 2], [3, [4, 5 ]], 6]  - Original list
[[2, 2], [2, [3, 3 ]], 1]  - Depth map
[[2, 4], [6, [12,15]], 6]  - Vectorising product

您可以假设列表不包含空列表。

这是密码-高尔夫,最短的胜利!

测试案例

代码语言:javascript
复制
[[1, 2], [3, [4, 5]], 6] => [[2, 4], [6, [12, 15]], 6]
[[3, [2, 4]]] => [[6, [6, 12]]]
[[9, [[39], [4, [59]]]], 20] => [[18, [[156], [16, [295]]]], 20]
[2, [29]] => [2, [58]]
[[[[[[[[9]]]]]]]] => [[[[[[[[72]]]]]]]]
EN

回答 13

Code Golf用户

发布于 2022-07-24 00:12:51

维沙尔,4字节

代码语言:javascript
复制
⁽L€*

在网上试试!

代码语言:javascript
复制
⁽L€*
⁽ €  # At each value in the input, all the way down, run the following on the multi-dimensional index of the current value:
 L   # Length. This gets the current depth
   * # Vectorizically (is that a word?) multiply by the input
票数 17
EN

Code Golf用户

发布于 2022-07-24 01:28:47

Wolfram语言(数学),12字节

代码语言:javascript
复制
#0/@#-#&@-#&

在网上试试!

代码语言:javascript
复制
         -# negate
#0/@#  &@   at each level:
     -#       subtract original value(s)
            (atoms: #0/@#-# = #-# = 0)
票数 10
EN

Code Golf用户

发布于 2022-07-30 02:48:13

K (ngn/k),17字节

代码语言:javascript
复制
{$[x~*x;0;x+o'x]}

在网上试试!

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

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

复制
相关文章

相似问题

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