首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数我的优点

数我的优点
EN

Code Golf用户
提问于 2021-06-24 10:33:49
回答 6查看 1.5K关注 0票数 18

你的任务是,数一数我有多少优点。

什么优点?

  • 不加:0分
代码语言:javascript
运行
复制
-
  • 天真加:1点
代码语言:javascript
运行
复制
+
  • 双加:2分
代码语言:javascript
运行
复制
 +
+++
 +
  • 超级双加:3分
代码语言:javascript
运行
复制
    +
   +++
    +
 +  +  +
+++++++++
 +  +  +
    +
   +++
    +

高于3阶的脉冲数必须忽略。

规则

  • 输入将只包含两个字符-和+,并且始终是矩形的。
  • 输入可以是字符串、数组或二进制矩阵(然后+为1和- is 0)。
  • 输出必须是所有检测到的加号的总和(允许尾随换行符/空格)。
  • 脉冲可以重叠(见下面的示例)
  • 适用默认I/O规则
  • 默认环孔应用

示例

代码语言:javascript
运行
复制
-+-
+-+
+--

出局:4

代码语言:javascript
运行
复制
-+-
+++
+++

出局:9(7个天真的加法和1个双加)

代码语言:javascript
运行
复制
++++++
++++++
++++++
++++++

出局: 40人(24个天真的加8倍)

代码语言:javascript
运行
复制
----+-----
+--+++----
----++----
-+--+--++-
+++++++++-
-+--+--++-
----+-+---
---+++----
+---++++++

出局: 49人(36个天真的加,5倍加,1倍加)

代码语言:javascript
运行
复制
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++

出局: 208 (90个天真的加法,56个双加和2个超倍加)

EN

回答 6

Code Golf用户

发布于 2021-06-24 12:13:45

果冻,33字节

代码语言:javascript
运行
复制
×3\€ḊṖ
ZÇZaÇḤ
ÇJ%3ZƙƲ⁺€Ç€€a3,,ÇFS

在网上试试!

:/

我想说这是一个很好的例子,但是整个方法可能不是理想的。现在同意Luis Mendo的MATL解决方案关于我编造的一个测试用例,而代价仅为一个字节,所以我想这很酷

代码语言:javascript
运行
复制
×3\€ḊṖ    Helper link 1: detect centers of +++
   €      For each row,
 3\       reduce over overlapping windows of length 3:
×         multiply.
    ḊṖ    Remove the first and last rows.

ZÇZaÇḤ    Helper link 2: detect double plus centers
   aÇ     Keep the horizontal (centers of) +++es which align with
ZÇZ       the vertical (centers of) +++es,
     Ḥ    and double.

ÇJ%3ZƙƲ⁺€Ç€€a3,,ÇFS    Main link: sum each tier of plus
Ç                      Get the matrix of double plus centers.
     ƙƲ                Group rows by
 J%3                   their indices mod 3
    Z                  and transpose each group;
       ⁺€              do it again to each group.
          €€           For each group in each group,
         Ç             detect the double plus pattern,
            a3         and replace the 16s with 3s.
              ,        Pair the result with the input,
               ,Ç      pair that pair with the double pluses,
                 FS    then flatten that all and return the sum.
票数 8
EN

Code Golf用户

发布于 2021-06-24 12:43:52

R,141个字节

代码语言:javascript
运行
复制
function(m)sum(m,a<-f(m,n<-nrow(m))*2,f(a,n,3)*3,na.rm=T)
f=function(m,n,k=1)sapply(n*k+seq(!m),function(i)all(i%%n>1,m[i+k*c(0,1,-1,n,-n)]))

在网上试试!

这可能会有很大的改善。

辅助函数f扫描矩阵。对于每个单元,它对每个单元数1当且仅当单元和距离为k的单元在四个方向上的值均为1,对于k=1,这对应于检查4个邻域,并创建了编码双加号中心的a。然后,我们在f上运行ak=3,以找到三重加法。边缘附近的条目以NA结尾;由于na.rm=T,它们被忽略。

票数 8
EN

Code Golf用户

发布于 2021-06-24 19:19:06

木炭,71字节

代码语言:javascript
运行
复制
WS⊞υιυFLυFLθ«Jκι¿⁼⁷LΦ⪫KVKKΣλ3»FLυFLθ«Jκι¿∧⁼3KK⬤urdl‹1⊟KD⁴✳λ6»≔Σ⪫KAωθ⎚Iθ

在网上试试!链接是详细的代码版本。将输入作为换行符结束字符串的二进制矩阵。解释:

代码语言:javascript
运行
复制
WS⊞υιυ

阅读矩阵并将其打印到画布上。

代码语言:javascript
运行
复制
FLυFLθ«Jκι

在所有细胞上循环。

代码语言:javascript
运行
复制
¿⁼⁷LΦ⪫KVKKΣλ3»

如果这个细胞和它的所有邻居都是1,S或者3s,那么把这个细胞改成3

代码语言:javascript
运行
复制
FLυFLθ«Jκι

再循环一遍所有的细胞。

代码语言:javascript
运行
复制
¿∧⁼3KK⬤urdl‹1⊟KD⁴✳λ6»

如果这个单元是一个3,并且在所有四个正交方向上的所有单元都大于1,那么将这个单元更改为一个6

代码语言:javascript
运行
复制
≔Σ⪫KAωθ⎚Iθ

取网格之和,清除画布,并以十进制形式输出和。

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

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

复制
相关文章

相似问题

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