首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪烁的灯塔-方正节升级

闪烁的灯塔-方正节升级
EN

Code Golf用户
提问于 2021-07-17 13:01:02
回答 1查看 391关注 0票数 6

为了庆祝这个岛的下一个创立者节,每个灯塔都安装了彩色过滤器(紫红色、紫红色和海蓝宝色*)。所有灯塔开始运作,他们的紫红色过滤器,他们都在同一个颜色周期: FCA,FCA,.每个灯塔在每次眨眼后,无论是长或短,都会更换其颜色滤镜。此外,每次代码开始时,每一次都会重新开始这个循环。

除了添加颜色外,灯塔的操作与原来的挑战闪烁的灯塔中的操作完全相同。

挑战:输入和最初的挑战是相同的:每个灯塔的代码都是以(仅)L和S的字符串的形式。

输出现在由四行组成,每色一行,再加上一条“总计”行。上线的总次数为0.n紫红色灯同时亮着,第二线为紫红色,第三线为海蓝宝。因此,在第二行中的第三个数字是总秒,正是两个字符灯同时亮着,而不管在这些秒内其他颜色是什么。第四行具有0.n个灯的总数,无论颜色如何(这一行与原始挑战的输出相同)。

不幸的是,灯塔操作主管Marie报告了过滤器测试过程中出现的故障。由于某种原因,如果所有灯塔在开始运作后(输出第3行的最后一项)同时同时闪烁海蓝宝黄5秒(输出第3行的最后一项),则电子滤色系统立即失效,所有灯塔都会在剩下的一小时内继续其闪烁白光的时间表。此故障不会影响最后一个“总计”输出行,但可能会影响前三行,每个行的总秒数仅限于筛选器工作的期间。

规则这些规则在其他方面与最初的挑战是相同的。以字节为单位的最短代码获胜。

为了澄清起见:最后一行的第一个数字是所有灯塔不分颜色关闭的总秒数。最后一行的总数应为3600秒,与最初的挑战相同,即1小时的灯塔操作。每一行1至3的和应匹配,无论它们是否共计3600。这三排在出故障后停止计数。

故障系统

测试用例

代码语言:javascript
复制
(Input -> Output)

['SLS', 'SLL', 'SSS', 'LSL'] ->
  
[1178, 360, 90, 40, 5]
[998, 470, 165, 40, 0]
[1178, 165, 270, 55, 5]
[1125, 890, 652, 590, 343]
    

['SLS', 'LLS', 'SSSL'] ->
    
[2121, 1158, 288, 33] 
[2155, 1219, 226, 0] 
[2957, 579, 64, 0] 
[1254, 1125, 577, 644] 

(The color schedules, in seconds, for the 3 lighthouses in test case #2 case are:

F-CCC-A-------  [repeat]
FFF-CCC-A------- [repeat]
F-CCC-A-FFF------- [repeat]

each lighthouse begins the FCA color cycle anew each time its code repeats.)


['SSSLLLSSS', 'LLSSSLLSSLS', 'LSLSLL', 'SSLLL', 'SLLSSSL'] ->

[1334, 1115, 548, 223, 57, 8] 
[1560, 1047, 463, 163, 44, 8] 
[1591, 950, 525, 184, 30, 5] 
[484, 653, 657, 553, 553, 700] 

*灯塔岛国旗的颜色,由在阿洛西乌斯酒馆和礼品店举行的公民投票选出。

**玛丽对此感到非常糟糕,并承诺在方正节前把事情做好。

EN

回答 1

Code Golf用户

发布于 2021-07-17 19:13:06

05AB1E,52字节

基于我的回答对以前的挑战。

代码语言:javascript
复制
ε€C9%Å10.ý˜7Å0«Dη_O3%>*60n∍}øÐ3QP.¥5‹Ï3LδQøs<dªεOZÝ¢

在网上试试!

代码语言:javascript
复制
ε€C9%Å10.ý˜7Å0«        60n∍}   # see my previous answer
               Dη              # push all prefixes of the signal
                 _O            # count the number of 0's (how often the signal was off)
                   3%>         # modulo 3, add 1
                      *        # multiply each value in the signal list (0 or 1) with this
                               # this replaces all 1's with the correct color: (1=F, 2=C, 3=A)

øÐ                             # tranpose the list (n × 3600 -> 3600 × n) and push the result three times
  3QP                          # on the first copy, check for each second if all lighthouses are aquamarine
     .¥                        # take the sums of prefixes of this list,
                               # this keeps track of how many times all lighthouses were aquamarine so far
       5‹                      # for each second: is this value less than 5?
         Ï                     # take the lighthouse for all seconds where this was true
          3L                   # push the range [1, 2, 3]
            δQø                # for each of those numbers (colors) compare the lighthouse colors to it
               s<dª            # append a boolean matrix of activations in any color (>0)
                   ε           # for each of those 4 boolean matrices:
                    O          # sum each row / second
                     ZÝ        # get the range [0 .. maximum]
                       ¢       # and count all these values

它的前半部分可用于可视化颜色图案:在网上试试!

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

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

复制
相关文章

相似问题

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