Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

16
加号和时代,一个人和一个人
将该递归关系实现为输入和输出非负整数的函数或程序: F(0)= 0 F(N)=大于F(N-1)的最小整数,以使其基数10的总和和/或乘积为N N是程序的输入,而F(N)是程序的输出。 要清楚的是,像913这样的数字中的数字总和为9 + 1 + 3 = 13。乘积为9×1×3 = 27。对于一位数字,总和与乘积是相同的数字。包含0的数字当然具有乘积0。 通过F(70)得出的结果是: N F(N) 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 19 11 29 12 34 13 49 14 59 15 69 16 …

19
打印缺少的素数
任务 编写一个程序或函数,当传递数值输入时x,该函数将打印或返回x1的平方根以下不属于的素数x。 例子 假设f(x)该函数为: >>> f(4) [] >>> f(5) [2] >>> f(20) [3] >>> f(60) [7] >>> f(100) [3, 7] >>> f(10000) [3, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 奖金规则 您可以使用您的语言提供的任何内置函数。 您的程序必须支持x与您的语言定义的上限一样高的输入。 1将平方根用作仅平方根下方的素数实际上可以包含的因素x。如果没有这个限制,较大的数字将有很多多余的印刷数字。

3
救命!我还有更多作业!
我的老师对我的火星家庭作业感到不满。我遵守了所有规则,但是她说我的输出是胡言乱语的……当她第一次看时,她非常可疑。“所有语言都应遵循齐普夫定律等等……”我什至不知道齐普夫定律是什么! 事实证明,齐普夫定律指出,如果在y轴上绘制每个单词的频率的对数,在x轴上绘制每个单词的“位置”的对数(最常见= 1,第二最常见= 2,第三最commmon = 3,依此类推),则该图将显示一条斜率约为-1的直线,给定或取约10%。 例如,这是Moby Dick的情节: x轴是第n个最常见的单词,y轴是第n个最常见的单词的出现次数。该线的斜率约为-1.07。 现在我们涵盖了Venutian。值得庆幸的是,Venutians使用拉丁字母。规则如下: 每个单词必须至少包含一个元音(a,e,i,o,u) 每个单词中最多可以连续三个元音,但连续最多两个辅音(辅音是不是元音的任何字母)。 单词长度不超过15个字母 可选:将单词分为3-30个单词的句子,以句点分隔 因为老师觉得我在火星作业上作弊,所以我被分配去写一篇至少30,000字长的文章(以Venutian语言写)。她将使用Zipf定律来检查我的工作,因此,当拟合一条直线时(如上所述),斜率必须最多为-0.9,但不小于-1.1,并且她希望词汇量至少为200个单词。同一单词连续不得重复超过5次。 这是CodeGolf,因此以字节为单位的最短代码获胜。请将输出粘贴到Pastebin或其他我可以将其下载为文本文件的工具中。
18 code-golf 

7
Eyjafjallajökull的喷发?
2010年,冰岛Vulcano(简写为 Eyjafjallajökull火山 喷发,导致我原计划的航班被取消。 万一这种情况再次发生,我真的想提前知道,所以请帮助我建立一个简单的视觉警报系统! 输入值 前往冰岛气象局火山活动警报代码作为输入(字符串): 绿色 -火山处于正常非喷发状态。 黄色 -火山的动荡迹象超过已知的背景水平。 橙色 -火山的骚动加剧,爆发的可能性增加。 红色 -预计即将爆发,可能有大量灰烬排放到大气中。 输出量 图形(ASCII艺术)警报,显示Eyjafjallajökull的状态。 绿色(Eyjafjallajökull正在休息) al la j j jaf öku y l E l ------------------- 黄色(会冒烟!) ~ ~ ~ al la j j jaf öku y l E l ------------------- 橙色(多烟!) ~ ~ ~ ~ ~ ~ …

1
最少的磁盘写入可对多个文件进行碎片整理
介绍 磁盘是一个线性容器,其块0通过索引size-1。 文件是该文件使用的块索引的命名列表。 示例文件系统表示如下: 15 ALPHA=3,5 BETA=11,10,7 “磁盘有15个块,文件ALPHA的第一个块是索引3处的磁盘块。” 磁盘映射可以这样绘制: Block Index 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 Contents | | | |A0 | |A1 | |B2 | | |B1 |B0 | | | | 当磁盘中的所有文件连续存储时,该磁盘将被视为已碎片整理。 你的目标: 发出最短的合法移动序列,以对给定的磁盘进行碎片整理。 法律行动 移动包含三部分信息:文件名,要移动的文件中的块的索引以及要移动到的磁盘块的索引。 例如 ALPHA:1>4 …

9
元多语奎因
在使用PPCG时,我注意到奎因问题和多语种问题非常流行。同样,问题的元解决方案,即生成解决问题的程序的脚本,往往会得到社区的很多积极反馈。因此,我创造了这个挑战,实现了这三个想法。 然后,作为读者和代码高尔夫球爱好者,您的任务是创建一个尽可能短的脚本,该脚本可以在两种语言A和B中运行以为A和B生成奎因。当您的程序以语言A运行时,它应该生成一个程序使用语言B 而不是语言A的程序,反之亦然。语言A和B可以是同一语言的不同版本,但要记住,生成的Quines仅应在其中一种版本中起作用。 请记住,应该将标准漏洞视为封闭的,并且仅允许使用适当的奎因。 祝你好运,最少的角色获胜!

16
给定事件的所有组合的概率
给定一系列概率在0.0到1.0之间的事件,请生成并推导每种组合发生的概率。您可能会假设以您选择的语言提供的任何构造形式提供了数字序列。 这是一个例子。您可能假定序列组合的长度适合内存: { 0.55, 0.67, 0.13 } 程序应打印每个组合以及该序列出现的相关概率。1表示输入序列的索引中的事件已发生,0表示该事件未发生。所需的输出如下(我不在乎打印工作,这只是出于算法目的的目的): [0,0,0] = (1 - 0.55) * (1-0.67) * (1-0.13) = 0.129195 [0,0,1] = (1 - 0.55) * (1-0.67) * (0.13) = 0.019305 [0,1,0] = (1 - 0.55) * (0.67) * (1-0.13) = 0.262305 [0,1,1] = (1 - 0.55) * (0.67) * (0.13) …

24
二进制倒数长度
灵感来自无限计数 给定一个非负整数N,输出达到0所需的以下步骤的重复次数: 转换N为二进制(4812390 -> 10010010110111001100110) 翻转每一位(10010010110111001100110 -> 01101101001000110011001) 修剪前导零(01101101001000110011001 -> 1101101001000110011001) 转换回十进制(1101101001000110011001 -> 3576217) 规则 输入和输出可以采用任何明确,一致的格式 输入将在您的语言的本机可表示整数范围内(如果您的语言支持任意大的整数,则没有限制) 测试用例 0 -> 0 1 -> 1 42 -> 6 97 -> 3 170 -> 8 255 -> 1 682 -> 10 8675309 -> 11 4812390 -> 14 178956970 -> 28 2863311530 -> …

16
找到波浪的话!
(注意:这是我之前的挑战“ 找到无限的单词!”的一个简单衍生品,这是我之前的其他挑战“ 找到旋转的单词!”的一个衍生产品:)) 波浪字的定义: 如果您用曲线连接字母(AZ)上的波浪字的所有字符,您将获得不断向右或向左而不改变方向的波浪路径,如下图所示。 一个波浪字可以是: 提高每个连续字符是否在前一个字符的右侧(字母上)。 减少每个连续字符是否在前一个字符的左侧(字母上)。 所有偶数连接必须断开,所有奇数连接必须断开。 您可以忽略大写/小写或全部考虑/转换为大写或全部转换为小写。 输入的单词仅是AZ字母范围内的字符,没有空格,标点符号或符号。 如果单词包含双精度字符,例如“ SPOON”,则必须将双精度折叠为一个字符:“ SPOON”>“ SPON”(因为从O到O的距离为零距离)。 该波浪词将含有至少3个不同的字符(双打塌陷甚至之后)。 这里有一些例子: 任务: 编写一个完整的程序或函数,该函数将从标准输入中提取一个单词,如果不是波浪形单词,则将输出,如果是波浪形单词,则将其输出;如果是上升或下降,则将输出。输出可以是True/False/Null,2/1/0,1/Null/0,-1/0/1,NO/WR/WD,等你决定如何来代表它。 测试用例: WAVY WORDS: ADEPT, BEGIN, BILL, BOSS, BOOST, CHIMP, KNOW, SPONGE, SPOON, TROLL, WOLF ADEPT > YES > RAISING BEGIN > YES > RAISING BILL > YES > RAISING BOSS > …
18 code-golf  string 

13
戈德巴赫分区
哥德巴赫猜想指出,每个大于2的偶数都可以表示为两个素数之和。例如, 4 = 2 + 2 6 = 3 + 3 8 = 5 + 3 但是,一旦达到10,就会发生一些有趣的事情。不仅可以写成10 5 + 5 但也可以写成 7 + 3 因为10可以表示为两个方法的两个素数之和,所以我们说10的“哥德巴赫分区”是2。或更笼统地说, 数字的戈德巴赫分区是不同的书写方式的总数,n = p + q其中p和q是素数,p >= q 您面临的挑战是编写一个找到数字的Goldbach分区的程序或函数。现在,从技术上讲,术语“戈德巴赫分区”仅用于表示偶数。然而,由于奇数整数P + 2可以也可以表示为两个素数的总和如果P> 2为素数,我们将这个扩展到所有正整数(A061358)。 您可以放心地假设您的输入将始终为正整数,并且可以使用我们默认的任何允许方法进行输入和输出,例如函数参数和返回值,STDIN和STDOUT,读取和写入文件等。 最多100个正整数的Goldbach分区为: 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, …

19
计算Mertens函数
给定正整数n,计算Mertens函数 M(n)的值,其中 和μ(ķ)是莫比乌斯函数,其中μ(ķ)= 1,如果ķ具有不同的素因子偶数,-1,如果ķ具有奇数个的不同的素因子,和0,如果首要因素是不明显。 这是代码高尔夫球,因此请为计算输入整数n > 0 的Mertens函数的函数或程序创建最短的代码。 这是OEIS序列A002321。 测试用例 n M(n) 1 1 2 0 3 -1 4 -1 5 -2 6 -1 7 -2 8 -2 9 -2 10 -1 117 -5 5525 5 7044 -25 8888 4 10000 -23

14
将数字对转换为吉他音符
吉他指板图如下所示: 0 1 2 3 4 5 6 7 8 9 10 11 12 <- Fret number (0 means it's open) |-E--F--F#-G--G#-A--A#-B--C--C#-D--D#-E |-B--C--C#-D--D#-E--F--F#-G--G#-A--A#-B |-G--G#-A--A#-B--C--C#-D--D#-E--F--F#-G |-D--D#-E--F--F#-G--G#-A--A#-B--C--C#-D |-A--A#-B--C--C#-D--D#-E--F--F#-G--G#-A |-E--F--F#-G--G#-A--A#-B--C--C#-D--D#-E 如您所见,(从顶部开始)打开的第一个字符串是E。第一个琴弦上的第一个品格是一个F。第三弦上的第四品格是B。请注意,第一个音符是零品格,而不是第一个。 可以在格式上用数字写string, fret。字符串从上到下从1到6编号。品格从左到右从0到12编号。E因此,第一个是1, 0。其他一些例子: 1, 0 --> E 1, 1 --> F 3, 5 --> C 5, 1 --> A# 6, 6 --> …

6
我的世界城堡分形
由PPCG同伴的YouTube视频所致... 您面临的挑战是使用ASCII艺术画出Andesite和Diorite的Minecraft城堡墙。墙的形状是Cantor Set。作为参考,通过重复以下N次来创建Cantor集: 当前步骤的三倍 用空格替换中间的一个 在其下方添加整行 这将为前四个步骤创建以下内容: * * * *** * * * * *** *** ********* * * * * * * * * *** *** *** *** ********* ********* *************************** 但是,您的挑战并不是那么简单。您会看到,在康托集变得非常大之后,反复查看相同的角色变得无聊。因此,我们将通过覆盖一系列交替的星号*和磅符号来更改此状态#。您应该水平每隔三个字符,垂直每行交替。(当然,空格保持不变)例如,第二个示例将变为: * * ### 第三个示例将变为: * * * * ### ### ***###*** 为了完整起见,下面是示例四和示例五: #4 * * * …

11
源代码GO!
让我们使用增强现实技术来狩猎隐藏在源代码中的小动物。编写一个quine程序,该程序输出自己的代码源,但5个连续的字符将被修改并显示PCG-mon除外:(^_^) 可以将5个连续的字符放置在源代码中的任何位置(从position 0到n-5,n即源代码的长度)。源代码的最小长度必须为5个字符。(^_^)长度大于等于2 的字符串或其任何子字符串不得出现在初始源代码中,而只能出现在输出中。 有效提交示例: 源代码my source code,输出my (^_^)e code 无效: 源代码(^_^) copy;,输出(^_^) (^_^) 获奖标准 以字节为单位的最短代码获胜。

2
你下一步要做什么?
面临的挑战是用您选择的语言编写一个minimax函数,在给定当前棋盘状态的情况下,在井字游戏的NxN游戏中输出下一个最佳动作。板输入可以接受为矩阵,2D集合或对您有意义但符合规则的任何其他内容。输出是下一个最好的举动了谁轮到它是目前,其中X被认为已经开始。 Minimax算法的快速背景 minimax算法的基本思想是将所有可能的结果作为DAG枚举,然后通过一系列动作对玩家的好处(通过第一个动作为关键)对它们进行加权。然后,所有可能的结果都会在第一步中“丢包”,并根据所有结果的总和进行评分(-1为损失,0为平局,1为胜利)。在需要多个玩家参与的实现中,您需要枚举玩家的所有可能举动以及对手的所有可能的响应。例如,在井字游戏中(第一个举动之后),您可以进行8个可能的第一个举动,而在仅分析下一弯时,它们似乎都相等。但是,通过对每组可能产生最终结果的动作进行遍历所有可能的结果并将它们加总, 有关tic-tac-toe的mini-max算法的更好,更深入和上下文的摘要,请在此处阅读更多信息:http : //neverstopbuilding.com/minimax XKCD(仅3x3解决方案) 规则 可以使用任何语言,但不允许使用外部minimax库。 输出可以是表示最佳下一移动的坐标(0-n,0-n)或数字(1-n * n)。 除此之外,您必须能够确定最佳情况是什么时候是失败或平局而不是获胜。 您表示损失或平局的方式再次取决于您。 输入必须使用传统的X和O,并且您必须假设X首先移动;空格可以用任何东西表示。 您可以假设进入程序的任何输入都具有n个O和n + 1个X,换句话说,您可以假设您得到的是格式良好的板。 开发板的当前状态必须是程序的唯一输入,如果使用递归,则必须使用辅助方法来满足输入要求。有关说明,请参见/codegolf//a/92851/59376。 必须支持10> = n> = 1的任何值。如果您的程序在n> 10时“超时”,我也认为这是可以接受的,因为某些语言的处理能力明显降低(尤其是使用面向Web的控制台)。 评判 这是代码高尔夫球,因此程序的最低字节数获胜,并且普遍禁止标准漏洞。 如果是平局,则支持最大n的程序将获胜。 输入示例 2x2 [[X,O] [-,-]] 输出: 2或[0,1](也可以说是3或[1,1]正确)(以某种形式表示位置,只要可以方便地解释所使用的格式即可) 3x3 [[X,O,X] [O,X,-] [-,-,-]] 输出: -1(损失) 再次允许使用您想要的任何输入格式,但必须使用X和O,所提供的示例并非旨在限制该格式,仅是为了启发。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.