首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AoCG2021日24:公共汽车公司作弊吗?

AoCG2021日24:公共汽车公司作弊吗?
EN

Code Golf用户
提问于 2021-12-24 00:44:45
回答 6查看 942关注 0票数 8

Code 2021的出现事件的一部分。有关详细信息,请参阅链接的元帖子。

天2020第13天相关,第2部分。

为什么布布勒不发这个为什么Riker不发这个

从海港(你所在的地方)到机场(你需要去的地方)有班车服务。每辆巴士都有一个身份证号码,显示巴士往机场的班次,更准确地说,是该巴士连续两班离开机场之间的分钟数,每辆巴士在过去某一时间以零的时间在同一时间出发。

穿梭巴士公司正在举办一场竞赛:任何能找到最早时间戳的人都可以得到一枚金币,这样的话,第一辆巴士的ID就会在那个时候离开,随后的每一辆上市的巴士ID都会在随后的那一分钟离开。

总线ID列表如下所示:

代码语言:javascript
复制
7,13,x,x,59,x,31,19

x的意思是“不关心”。因此,这里的目标是找到时间戳t,其中:

  • 7号公共汽车在t发车。
  • 13号公共汽车在t+1发车。
  • 59路公共汽车在t+4发车。
  • 31路公共汽车在t+6发车。
  • 19路公共汽车在t+7发车。

这个列表的最早时间戳t是1068781。

然而,你怀疑公司不想发行任何金币,因为有时清单看起来是这样的:

代码语言:javascript
复制
7,7

这显然是不可能的--7路公共汽车不能在tt+1出发去任何t

给定公共汽车身份证的列表,确定你是否能赚到一枚金币。

输入:总线ID列表,可能有一些漏洞。公共汽车ID总是肯定的。一个洞可以用任何不是正整数的值来表示(例如,0,-1,"x");或者,您可以用1来表示洞,因为它们具有相同的效果( 1总是可以去任何地方)。保证列表是非空的。

输出:一个表示答案的值。你可以选择

  • 使用您的语言约定输出真实/错误(允许交换),或
  • 使用两个不同的固定值分别表示真(肯定)或假(负)。

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

测试用例

测试用例对列表中的漏洞使用0。

特鲁西:

代码语言:javascript
复制
[7, 13, 0, 0, 59, 0, 31, 19]
[1, 2, 3, 4, 5]
[0]
[999]
[1, 3, 5, 7, 9, 11, 13, 15]

法尔西:

代码语言:javascript
复制
[7, 7]
[3, 1, 4, 1, 5, 9, 2]
[4, 0, 4]
EN

回答 6

Code Golf用户

发布于 2021-12-24 01:24:21

帕里/GP,45字节

代码语言:javascript
复制
a->i=1;iferr(chinese([Mod(i--,b)|b<-a])',e,1)

在网上试试!

取洞为1。

尝试应用中国剩余定理内置。如果它抛出一个错误,公共汽车公司就是作弊。

票数 7
EN

Code Golf用户

发布于 2021-12-24 06:24:55

果冻,8字节

代码语言:javascript
复制
P+€TọµẠƇ

在网上试试!

输出虚假的空列表。

代码语言:javascript
复制
P        Product
 +€      Foreach, added to
   T     0...input length
    ọ    Number of times each divides each - 0 for falsy
     µẠƇ Filter by all truthy
票数 4
EN

Code Golf用户

发布于 2021-12-24 01:51:00

JavaScript (Node.js),56字节

代码语言:javascript
复制
a=>eval("for(i=1+a.join``;a.some(n=>++x%n,x=i--)*i;);i")

在网上试试!

0表示一个洞。对大多数测试病例来说太慢了。

简单的想法:

代码语言:javascript
复制
for t := (large enough number) domnto 0 do
    if (t is valid) then return true
return false

虽然\prod a_i会足够大。计算产品的时间比简单地将它们连接起来要长一些。

JavaScript,62字节

代码语言:javascript
复制
a=>a.some(o=(t,i)=>(g=j=>j&&(t%j?o:o[j]??=i%j)-i%j|g(j-1))(t))

用洞做洞。更快的版本。

JavaScript (Node.js),65字节

代码语言:javascript
复制
a=>a.some((x,i)=>a.some(g=(y,j,_,z=x)=>z%y?g(z%y,j,a,y):(i-j)%y))

在网上试试!

用洞做洞。多项式时间复杂度的快速版本。

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

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

复制
相关文章

相似问题

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