Questions tagged «code-golf»

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

30
这是n说话吗?
受到启发吗?,我提出了更艰巨的挑战。给定一个字符串,对于任何,确定该字符串是否为n-speak。n≥2ñ≥2n\geq 2 通过重复每个字母次来定义语音。当,字符串转换为。您的目标是弄清楚该输入对于任何n语音转换是否有效。nñnn=4ñ=4n = 4HelloHHHHeeeelllllllloooo 应当注意,对于,任何有效的n口语句子也是有效的k口语。因此,要解决的困难部分将是奇数值。n=2kñ=2ķn = 2knñn 输入值 至少包含2个字符的字符串。输入也可以是字符列表。输入区分大小写。 输出量 Truthy如果字符串是n说话,则为falsey否。 例子 真实情况 HHeelllloo,, wwoorrlldd!! TTTrrriiipppllleee ssspppeeeaaakkk QQQQuuuuaaaaddddrrrruuuupppplllleeee ssssppppeeeeaaaakkkk 7777777-------ssssssspppppppeeeeeeeaaaaaaakkkkkkk 999999999 aaaabb aaaaaaaabbbbcc aaaaabbbbb @@@ 如果要生成其他真实情况,可以使用此MathGolf脚本。将字符串放在引号内,并将的值作为输入。nñn 虚假案件 Hello, world! TTTrrriiipppllleee speak aaaaaaaaaaaaaaaab Ddoouubbllee ssppeeaakk aabbab aaaabbb a (does not need to be handled) (empty string, does not need to …

9
分形烟雾序列
介绍 A229037有一个非常吸引人的情节(至少在前几个条款中): 有一个猜想,它可能确实具有某种分形性质。 如何构造此序列? a(1) = 1, a(2) = 1然后为每个n>2变量定义一个最小的正整数,a(n)这样对于每个算术3项n,n+k,n+2k索引序列,该序列的对应值a(n),a(n+k),a(n+2k)就不会算术序列。 挑战 给定一个正整数n作为输入,输出第一n项a(1), ... , a(n)此序列。(采用任何合理的格式。可能的前导/培训字符/字符串无关。) 有一些片段可用于生成此序列,但我认为其他方法可能更适合/更适合某些语言。 请让我们知道您的程序如何工作。如果您遇到一个特别有效的算法,您可能也想提一下,因为它可以在更短的时间内绘制出更多的序列项。 前几个测试用例: 1, 1, 2, 1, 1, 2, 2, 4, 4, 1, 1, 2, 1, 1, 2, 2, 4, 4, 2, 4, 4, 5, 5, 8, 5, 5, 9, 1, 1, 2, 1, 1, …

1
语音识别:“是”或“否”?
任务 根据源代码或二进制代码的最小字节来实现一个程序,该程序可以基于训练样本以最大的准确性对语音样本进行语音识别(我说的是“是”,“是”或“否”,无论是声音还是低语,明快地或快速地) 。 该计划应阅读train/yes0.wav,train/no0.wav,train/yes1.wav等(有400个yeses和训练数据集400个不一),然后开始阅读inputs/0.wav,inputs/1.wav直到它未能找到该文件,对其进行分析并输出“是”或“否”(或其他字中间答案)。 如果需要,您可以对程序进行预训练而不是阅读train/,但是结果数据表会计入分数(并注意对训练样本的过度拟合-它们不会与考试样本重叠)。在这种情况下,最好包含用于生成数据表的程序作为附录。 所有示例文件都是小的Endian 16位立体声WAV文件,仅来自笔记本电脑的麦克风,没有滤波/降噪功能。 限度 禁止功能: 使用网络; 试图到达答案文件inputs/key; 颠覆runner计算精度的程序; 使用现有的识别库。不允许链接到FFT实现:仅允许采用恒定信息量(如sin或atan2)的外部数学函数;如果需要FFT,只需将其实现添加到程序源代码中即可(如果需要,它可以是多语言的)。 资源限制: 在我的i5笔记本电脑上,该程序占用的CPU时间不应超过30分钟。如果花费更多,则仅对前30分钟产生的输出进行计数,其余的则视为半匹配; 内存限制:1GB(包括任何临时文件); 工具类 该tools/runner程序将自动运行您的解决方案并计算准确性。 $ tools/runner solutions/example train train/key Accuracy: 548 ‰ 它可以使用培训数据或实际考试数据来检查程序。我将尝试在检查数据集上提交答案并发布结果(准确性百分比),直到将数据集公开为止。 计分 根据精度,有5种解决方案: 所有样本均正确猜出:0级; 精度950-999:1级; 精度835-950:2级; 精度720-834:3级; 精度615-719:4级; 在每个类中,分数是解决方案占用的字​​节数。 公认的答案:最佳非空类中最小的解决方案。 链接 Github项目与工具:https : //github.com/vi/codegolf-jein 训练数据集:http : //vi-server.org/pub/codegolf-jein-train.tar.xz 到目前为止,考试数据集是保密的,在Github存储库中有可用的校验和(HMAC)。 所有示例都应视为CC-0(公共领域),脚本和程序应视为MIT。 解决方案示例 它提供的识别质量很差,仅显示如何读取文件和输出答案 #define _BSD_SOURCE #include …

12
J打高尔夫的秘诀
GolfScript经常走自己的路,我觉得J里打高尔夫球的便捷提示集可能会有助于对抗邪恶帝国。您有什么技巧来使这种已经很简洁的语言更短? 对于那些想学习J的人来说,显而易见的起点是jsoftware站点,尤其是词汇表,Learning J指南和J for C程序员指南。
33 code-golf  tips  j 

8
切割金链
旅行者需要在城外的一家酒店住宿n天。他没有现金了,他的信用卡已过期。但是他有一个带有n个链接的金链。 这家酒店的规定是居民应每天早晨支付租金。旅行者与经理达成协议,每天支付金链的一个链接。但是经理还要求旅行者在每天付款时,对链条的损坏应尽可能少。换句话说,他必须提出一种解决方案,以减少尽可能少的链接。 剪切链接将创建三个子链:一个仅包含剪切链接的子链,而在每一侧各包含一个。例如,剪切长度为8的链的第三个链接将创建长度为[2,1,5]的子链。经理很高兴进行更改,因此旅行者可以在第一天使用长度为1的链条进行支付,然后在第二天使用长度为2的链条进行支付,从而收回第一条链条。 您的代码应输入长度n,并输出链接列表以切出最小长度。 规则: n是大于0的整数。 您可以对链接使用基于0或基于1的索引。 对于某些数字,解决方案不是唯一的。例如,如果n = 15两个[3, 8]和[4, 8]是有效的输出。 您可以返回列表,也可以使用任何合理的分隔符进行打印。 这是code-golf,因此以字节为单位的最短代码获胜。 测试用例: Input Output (1-indexed) 1 [] 3 [1] 7 [3] 15 [3, 8] 149 [6, 17, 38, 79] 详细的例子 对于n = 15,剪切链接3和8会得到length的子链[2, 1, 4, 1, 7]。这是一个有效的解决方案,因为: 1 = 1 2 = 2 3 = 1+2 4 …

11
谁将会赢得选举?
这是一个挑战,其中有两个人1和2正在竞选办公室。人们在1和2的世界中以确定的方式进行投票,这可以使候选人在选举前弄清楚结果。 注意:这并不表示任何外部选举或其他政治事件。 两个人正在竞选办公室。我们将这些人称为1和2。因为他们俩都想知道他们是否会赢得选举,所以他们决定使用他们对人的知识以及一些代码来确定结果。由于要尽量减少政府支出,因此代码必须尽可能短。 您的任务:根据一连串的投票方式,输出赢得选举的人。 在1和2的有趣和令人兴奋的世界中,共有五类人: A:肯定会投1票的人。 B:肯定会投赞成票2的人。 X:将投票支持的人,无论左边的人投票支持谁。如果他们的左边没有人,则他们投票给右边的人投票的人。如果不清楚其右边的人在为谁投票,则他们不会投票。 Y:人们会投票反对他们左边的那个人。如果他们的左边没有人,那么他们将投票反对右边的人。如果不清楚其右边的人在为谁投票,则他们不会投票。 N:不投票的人。 这是从左到右评估的。 例: 为了清楚起见,任何被“评估”的人都是小写字母。 Input: `XXAYAN` xX Votes for whoever their friend is voting for. Their friend has not decided yet, so it is unclear, so they do not vote. Xx Person to left is voting "none" so votes "none." a …

12
宜人的
甲混成词是两个词的组合拍摄每一个单词的一部分,使它们变成单一的新词。例如,狮子 + 老虎 => liger。 让我们编写一个从一对输入单词生成portmanteaus的程序。电脑不是英语水平最好的,所以我们需要建立一些规则以确保输出的portmanteaus令人耳目一新。 (为清楚起见li|ger,此处的示例在前缀和后缀之间显示了分隔符:。但是,程序的实际输出不应包含分隔符:liger。) 每个portmanteau将由第一个单词的非空前缀与第二个单词的非空后缀组成:yes到li|ger,no to |iger。 如果前缀以元音结尾,则后缀必须以辅音开头,反之亦然:是lio|ger或l|er,否是lio|iger或l|ger。您可以决定算作y元音还是辅音。但是,您的解决方案必须选择一个选项并坚持使用。 产生的字词不得完整包含两个原始字词:是lio|ger,lion|iger或li|tiger。 即使所讨论的部分是由两个单词的一部分组成的,该规则仍然成立:输入为two+时words,输出tw|ords仍然是非法的,因为它包含子字符串words。(此对的唯一有效输出是t|ords。) 您的程序或函数必须使用两个单词,并输出/返回可以由这些单词按该顺序形成的所有令人愉悦的portmanteaus列表。 细节 标准输入和输出方法适用。禁止出现标准漏洞。 单词将仅包含小写字母(或者,如果您愿意,也仅包含大写字母)。 您可以将两个输入单词作为列表,元组,两个单独的输入,带有非字母定界符的单个字符串等。 输出格式同样具有灵活性;如果您返回或输出一个字符串,则应将其定界,以使一个portmanteau单词的末尾清晰而下一个开始。 在portmanteau单词内不应有任何定界符。 如果您的输出列表中包含重复的结果,也可以;也可以删除重复项。 测试用例 > lion, tiger < liger, ler, liger, lir, lioger, lior > tiger, lion < tion, ton, tin, tigion, tigon, tigen > spoon, fork < sork, spork, spork, spok, …

11
固定和的随机数
您的任务是编写一个程序或函数,以固定的总和从间隔[0,1] 中输出 n随机数s。 输入值 n, n≥1,要生成的随机数 s, s>=0, s<=n,要生成的数字总和 输出量 n浮点数的随机元组,所有元素的间隔都为[0,1],且所有元素的总和等于s,以任何方便的明确方式输出。n在浮点数的限制内,所有有效元组必须具有同等的可能性。 这等于从- n维单位立方和n-1穿过(s/n, s/n, …, s/n)并垂直于矢量的- 维超平面内的点的交点进行均匀采样(1, 1, …, 1)(请参见图1中的红色区域以获取三个示例)。 图1:n = 3且总和为0.75、1.75和2.75的有效输出平面 例子 n=1, s=0.8 → [0.8] n=3, s=3.0 → [1.0, 1.0, 1.0] n=2, s=0.0 → [0.0, 0.0] n=4, s=2.0 → [0.2509075946818119, 0.14887693388076845, 0.9449661625992032, 0.6552493088382167] n=10, s=9.999999999999 → [0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999] …
32 code-golf  random 

6
1、2、3、14…还是15?
爱尔兰摇滚乐队U2的一首著名歌曲开始,歌手Bono用西班牙语说“ 1、2、3、14 ” (“ uno,dos,tres,catorce ”)。 关于这些数字的含义,有各种 理论。显然官方的解释是“ 那天晚上我们喝太多了 ”。但是有一个更有趣的假设:Bono指的是OEIS中的一些整数序列,例如 A107083: k这样的整数10^k + 31就是素数。 1,2,3,14,18,44,54,... 在一次采访中,当被问到不可避免的问题“为什么14”时,博诺承认他对这个数字有些厌倦。记者改用“ 15”,在那天晚上的音乐会上,歌词的确改为了“ 1、2、3、15”。(故事可以在这里用西班牙语阅读)。记者很有可能从 A221860: 指数k这样prime(k) - k的幂2,其中prime(k)是k个素数。 1,2,3,15,39,2119,4189897,... 挑战 用相同的语言编写两个程序。第一个应该输入n并输出A107083的n-th项,即第一项。同样,第二个应输出A221860的-th项,即第一个项。nnn 的得分是总和的长度的两个节目的,以字节为单位,加上正方形的的Levenshtein距离的两个节目的字节表示之间。 如果使用字符编码,每个字符对应一个字节,则可以使用此脚本测量Levenshtein距离。 例如,如果两个程序均为abcdefgh和bcdEEfg,则得分为8 + 7 + 4^2 = 31。 最低分获胜。 附加规则 对于每个序列,输出可以1基于-或- 0基于(因此,如果其中一个程序1基于-,而另一个程序基于-,则允许输出0)。 每个程序可以一致但彼此独立地输出n-th项或first n项。 程序或功能被允许,独立于每个序列。 输入和输出方式和格式照常灵活。禁止出现标准漏洞。

21
关于N的注解!
JE Maxfield证明了以下定理(请参见DOI:10.2307 / 2688966): 如果AAA是任何正整数具有mmm数字,存在一个正整数NNN使得第一mmm的数字N!N!N!构成整数AAA。 挑战 你的挑战是给一些A⩾1A⩾1A \geqslant 1找到相应。N⩾1N⩾1N \geqslant 1 细节 N!N!N!代表阶乘N!=1⋅2⋅3⋅…⋅NN!=1⋅2⋅3⋅…⋅NN! = 1\cdot 2 \cdot 3\cdot \ldots \cdot N的NNN。 在我们的情况下,AAA的数字应理解为以101010为底。 您提交的内容应适用于任意A⩾1A⩾1A\geqslant 1给予足够的时间和内存。仅使用例如32位类型来表示整数是不够的。 你不一定需要输出至少可能NNN。 例子 A N 1 1 2 2 3 9 4 8 5 7 6 3 7 6 9 96 12 5 16 89 17 69 …

5
左手与右手-打字员挑战
您的任务是使键盘的每一侧相互靠拢,并以相同的语言构建两个程序,一个程序仅使用输出的标准键盘左侧的键,另一个程序使用输出Pollinium milk; plump pumpkin; lollipop?的右侧键盘的键。Weatherheaded sweetheart haberdasheress!。 规则 左侧程序所允许的确切键为: 123456!@#$%^QWERTYqwertyasdfghASDFGH`zxcvb~ZXCVB 对于右侧程序: 7890-=&*()_+uiop[]UIOP{}jkl;'\JKL:"|nm,./NM<>? 有四个可用的键Esc(\x1b),Tab(\x09),Space(\x20)和Enter(\x0a和/或\x0d),它们都不能用于两种解决方案,也可以两种都不能使用。 您的分数将是两个程序的总字节数。虽然我使用了术语program,但是您的提交可以是完整程序,也可以是正常功能,并且两者可以是不同的类型(例如,一个完整程序和一个功能)。 您的结果必须包含所需的文本,只要在其中包含确切的文本,任何大小的前导和尾随空格都是可以的。 禁止出现标准漏洞。 每种语言中最短的解决方案将获胜。

9
月的对称性
介绍 有些月份是完全对称的,这意味着它们具有中心对称性和反射对称性,例如February of 2010: February 2010 ┌──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ ├──┼──┼──┼──┼──┼──┼──┤ │ │ │ │ │ │ │ │ ├──┼──┼──┼──┼──┼──┼──┤ │ │ │ │ │ │ │ │ ├──┼──┼──┼──┼──┼──┼──┤ │ │ │ │ │ │ │ │ └──┴──┴──┴──┴──┴──┴──┘ 某些月份只有中央对称,例如February of 1996或当前月份April of 2018: February 1996 …
32 code-golf  date 

23
蛮力配电盘
前几天,我们的团队去了一个逃生室。难题之一是由六个机械开关组成的板,您必须找到打开和关闭的正确组合才能解锁盒子,如下所示: -v-v-v- -v-v-v- 作为开发人员,我们认为尝试2 ^ 6 = 64个组合中的每个组合要比实际解决难题更有效。因此,我们分配了一个可怜的家伙进行一些二进制计数: -v-v-v- -v-v-v- -v-v-v- -v-v-^- -v-v-v- -v-^-v- -v-v-v- -v-^-^- 等等。 挑战 编写一个程序,给定所有开关都按上述格式设置为关闭的字符串,从而以任意顺序生成打开和关闭的所有组合。 您可以编写完整的程序或函数。因此,您的程序可以通过stdin,文件或单个字符串参数接收输入,然后返回或打印输出。如果返回,则输出可能在列表/数组/等中。而不是单个字符串。如果输出为单个字符串,则板子之间应使用换行符分隔(允许使用尾随换行符)。 输入字符串将与正则表达式匹配,r'((-v)+-)(\n(-v)+-)*'并代表一块板,所有开关均关闭。这意味着无零情况,并且开关左对齐。每行可能没有相同数量的开关。 每个输出板应具有与输入完全相同的格式,除了v可以根据需要用^代替。输出板可以用任意数量的换行符分隔。 由于运行时间自然是开关数量的O(2 ^ n),因此您的代码将不会在任何排列的10个以上的开关上进行测试。 这是代码高尔夫球,因此以字节数为单位的最短代码获胜。 样本输入和输出 输入: -v- 可能的输出: -v- -^- 输入: -v- -v- 可能的输出: -^- -^- -^- -v- -v- -^- -v- -v- 由于要为更大数量的开关检查答案非常繁琐,因此这里有一个Python脚本作为健全性检查工具。(不幸的是,我提供了一个当前注释掉的代码段,以在给定的输入文件中生成预期的输出,以备您需要更多的测试用例。)将输入字符串放在名为“ input”的文件中,并将换行符分隔的输出(对不起,没有列表格式)放在同一目录中的名为“ output”的文件中,然后运行python3 sanitycheck.py。


30
字母完成率
介绍 给定的字符串使用多少英文字母?前一句使用77%。它有20个独特的字母(howmucftenglisapbdvr)和20/26≃0.77。 挑战 对于输入字符串,返回存在于字符串中的英文字母的百分比。 答案可以是百分比或十进制形式。 输入字符串可以具有大写和小写以及标点符号。但是,您可以假定它们没有变音符号或重音符号。 测试用例 输入值 "Did you put your name in the Goblet of Fire, Harry?" he asked calmly. 一些有效的输出 77%, 76.9, 0.7692 输入: The quick brown fox jumps over the lazy dog 所有有效输出: 100%, 100, 1 预期输出"@#$%^&*?!"和""为0。
32 code-golf 

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.