首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >制造业的原始性检验

制造业的原始性检验
EN

Code Golf用户
提问于 2014-08-09 00:17:58
回答 1查看 555关注 0票数 13

背景

制造商是一个关于编程的游戏。播放器必须使用一种二维编程语言的形式来完成任务.如果你从来没有听说过它,最简单的学习方法就是尝试游戏的前几个层次。

挑战

你的挑战是创建一个程序来测试一个数字的原始性。

输入将是队列中的一系列N个蓝色标记。如果N是素数,那么你的程序应该接受它(移动机器人到完成)。如果N是复合的,那么您的程序应该拒绝它(把它放在某个地方)。

提交选项

由于这是一个比典型的制造商挑战更复杂的挑战,我决定允许更多的方式提交您的答案。

香草兰(

Vanilla

)

我已经创建了一个13x13自定义级别来构建和测试提交。自定义测试级别如下所示。

13x13自定义级别

游戏只允许自定义级别上的8个测试用例,但理论上您的创建应该能够处理任何自然数N,仅受可用内存的限制。为了提供信息,在自定义级别中提供的测试用例如下:

代码语言:javascript
复制
1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject

扩展网格

一些用户可能需要比13x13网格更多的空间。下面是一个指向游戏中15x15自定义级别的链接,它是通过更改URL中的一个数字创建的:

15x15自定义级别

遗憾的是,更大的自定义级别无法工作,因为额外的单元格是不可访问的。

,Esolang

制造商

制造商已经将其改编为一种基于ASCII的语言.如果你想要一种不同的方法来设计/测试你的创作,或者如果你无法将你的最终解决方案安装到游戏板上,你可以使用这个esolang。您可以在这里找到有关这一“esolang”的信息:

山毛菜

在这个游戏和实际游戏之间有一些差异。例如,运输道口的处理方式不同。尽量避免利用这些差异。

--测试

的更快方法

当涉及到需要数千步才能完成的程序时,游戏是非常慢的。我的概念证明解决方案采取了28042步来拒绝15,即使在游戏中加速50倍时,这也是太长了。

我发现这个非常有用的网站。只需复制粘贴链接到您的答案,您就可以测试您的答案与特定的输入。这个28042步的过程用了不到一秒钟。

有一点要注意的是,即使你的机器正常工作,它也会说一些“不正确的接受”的话。这是因为网页只知道测试用例。例如,它会说我的解决方案“错误地接受”了数字3,尽管我的机器实际上是正确的。

如何赢得

评分标准是部分(占单元格)的数量。这是代码高尔夫,所以提交最少的部分获胜。

对于那些感兴趣的人,我的基准解决方案有96个部分,适合13x13网格。找到一个更好的算法可能会带来巨大的改进,因为我知道我使用了一个次优算法。

EN

回答 1

Code Golf用户

回答已采纳

发布于 2014-08-17 23:10:37

53部件- 11x11网格

我两天前才学会玩制造商,所以它可能不是很适合打高尔夫,但至少它解决了这个问题。当然,它通过重复减法来实现审判分割。检查从2到N-1的所有除数。我相信时间复杂度应该是O(N^3)。

解链

我非常失望不得不使用传送带:)

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

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

复制
相关文章

相似问题

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