首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >沿线切割

沿线切割
EN

Code Golf用户
提问于 2022-09-28 15:08:47
回答 16查看 1.5K关注 0票数 21

在此挑战中,您将以二进制值的非空列表(可以是范围为0-1的布尔值或整数)作为输入,您应该输出将列表划分为非空部分的所有方法,这样在初始列表中没有两个相邻的相等值被分隔成不同的部分。

例如,如果输入是[1,1,0,0,1],那么[1,1],[0,0,1]是一个有效的分区,但是[1,1,0],[0,1]不是,因为相邻的0s被分割。

这是密码-高尔夫,所以目标是最小化源代码的大小(以字节为单位)。

测试用例

代码语言:javascript
复制
[1,0] ->
  [ [[1,0]]
  , [[1],[0]]
  ]
[1,1,1,1] ->
  [ [[1,1,1,1]]
  ]
[1,1,0,0,1] ->
  [ [[1,1,0,0,1]]
  , [[1,1],[0,0,1]]
  , [[1,1,0,0],[1]]
  , [[1,1],[0,0],[1]]
  ]
EN

回答 16

Code Golf用户

发布于 2022-09-28 19:45:37

K (ngn/k),22字节

代码语言:javascript
复制
{(&'+1,!2-1_=':x)_\:x}

在网上试试!

相邻值对的1_=':x:它们相等吗?

2- 2减去那个。给出分段之间的线的2s和分段中的1s。

!里程计。返回一个矩阵,该矩阵的所有二进制模式都以向量为界。

+1,在1前面加上一个转置符,使二进制模式具有行中的1s前导。

&'为每行获取1s的索引。

(...)_\:x对于每一个整数向量,在这些索引处将输入除以。

票数 8
EN

Code Golf用户

发布于 2022-09-28 20:16:50

因子 + math.combinatorics math.unicode,81字节

代码语言:javascript
复制
[ dup 2 clump [ Σ 1 = ] arg-where 1 v+n all-subsets [ split-indices ] with map ]

在网上试试!

  • dup 2 clump [ Σ 1 = ] arg-where 1 v+n求取涨落边指数
  • all-subsets取了所有的子集
  • [ split-indices ] with map根据以下每一项拆分输入
票数 6
EN

Code Golf用户

发布于 2022-09-28 19:18:19

果冻,8 字节数

代码语言:javascript
复制
ITŒP‘œṖ€

一种一元链接,它接受1和0的列表,并生成有效分区的列表。

在网上试试!

怎么做?

代码语言:javascript
复制
ITŒP‘œṖ€ - Link: list, B  e.g. [0, 0, 1, 1, 0, 1]
I        - deltas (of B)       [  0, 1, 0,-1, 1]
 T       - truthy indices      [     2,    4, 5]
  ŒP     - powerset            [[],[2],[4],[5],[2,4],[2,5],[4,5],[2,4,5]]
    ‘    - increment           [[],[3],[5],[6],[3,5],[3,6],[5,6],[3,5,6]]
       € - for each:
     œṖ  -   partition (B) at  [[[0,0,1,1,0,1]],[[0,0],[1,1,0,1]],[[0,0,1,1],[0,1]],[[0,0,1,1,0],[1]],[[0,0],[1,1],[0,1]],[[0,0],[1,1,0],[1]],[[0,0,1,1],[0],[1]],[[0,0],[1,1],[0],[1]]]
票数 5
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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