Questions tagged «code-golf»

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

29
从字符串中剥离多余的空格
给您一个字符串。输出每个单词一个空格的字符串。 挑战 输入将是一个字符串(不null或空),用引号(包围")经由发送stdin。删除其中的前导和尾随空格。此外,如果两个单词(或符号或其他符号)之间有一个以上的空格,请将其修剪为一个空格。输出带引号的修改后的字符串。 规则 字符串的长度不能超过100个字符,并且只能包含(空格)到~(波浪号)(字符代码0x20到0x7E,包括两端)范围内的ASCII字符",即,该字符串将不包含引号(")和其他字符。上面指定的范围。请参阅ASCII表以获取参考。 您必须从stdin(或最接近的替代方法)获取输入。 输出必须包含quotes(")。 您可以编写一个完整的程序,也可以编写一个接受输入(来自stdin)并输出最终字符串的函数 测试用例 "this is a string " --> "this is a string" " blah blah blah " --> "blah blah blah" "abcdefg" --> "abcdefg" " " --> "" "12 34 ~5 6 (7, 8) - 9 - " --> "12 34 ~5 6 …
12 code-golf  string 

2
整理清单
您应该编写一个程序或函数,该程序或函数将非负整数k和排序后的整数列表L作为输入,并输出或返回平滑列表M。 ML通过在k保持列表排序的同时最多插入整数元素来从升序列表创建。插入的整数应该以最大前向差异M尽可能小的方式选择。我们将这个最小值称为“平滑度”。 该列表的正向差异-1 3 8 11 15是4 5 3 4与最大正向差别5。 通过2插入,2 10 15is 的平滑度4和可能的输出存在2 6 10 11 15正向差异4 4 1 4。 输入值 一个非负整数k。 L包含至少2个元素的升序整数列表。 输出量 升序整数列表M。 如果存在多个正确答案,则输出恰好其中一个(任何一个都足够)。 您的解决方案必须在一分钟之内在我的计算机上解决任何示例测试用例(我将仅测试关闭的用例。我的PC低于平均水平。)。 例子 输入(k,L)=>可能的输出以及括号中的最大前向差(不属于输出) 0, 10 20 => 10 20 (10) 2, 1 10 => 1 4 7 10 (3) 2, 2 10 15 …

3
计算pi的幂的截断数字总和
给定一个正整数Ñ输出的第一总和Ñ的小数部分的十进制数字π Ñ。 输入和输出示例: 1→1 2→14 3→6 4→13 5→24 50→211 500→2305 5000→22852 不允许使用内置函数计算π位数或评估幂级数或连续分数。有标准漏洞。输入/输出可以采用方便的格式(stdin,stdout,功能输入/输出等)。 以字节为单位的最短代码获胜。

7
线上的分形点
有时候,当我真的很无聊时,我喜欢画线段并在其上画点。 首先,我绘制一个特定大小的线段,对于某些N值,该线段为2 ^ N。该线将由一系列.字符表示。 ................ 然后,在左端绘制一个点。点将用X字符表示。 X............... 然后,我遵循一个模式。从最近绘制的点(我将其称为A)开始,前进到直线上的下一个绘制的点(B)(必要时环绕)。然后,我前进到线(C)上的下一个绘制点。然后,我在第三个点(C)和下一个已经绘制的点(D)之间绘制了一个新点。 每当绕线时,“中间”都是以绕线方式确定的。新绘制的点始终在C的右侧。 假设下一行是我的当前行。这是我如何绘制接下来的两点。在此示例中,我将用字母标记每个重要点。 X...A...X.X...X. ^ X...A...B.X...X. ^ X...A...B.C...X. ^ X...A...B.C...D. ^ X...X...X.X.A.X. ^ X...X...X.X.A.B. ^ C...X...X.X.A.B. ^ C...D...X.X.A.B. ^ X.A.X...X.X.X.X. ^ 返回上一个示例,下一点将绘制在该线的中间。 X.......X....... 这可能是一个特例:前进到下一个点只会使您离开起点。唯一有用的中点是“循环”中点(直线上的中点),与在其顶部绘制点相反。 以下是我从此处到末端在线上绘制的一系列点。 X.......X....... X.......X...X... X.......X.X.X... X...X...X.X.X... X...X...X.XXX... X.X.X...X.XXX... X.X.X...XXXXX... 不再有绘制下一个点的空间,因为它必须被楔入两个相邻点之间,因此对于给定的N = 4,我已经达到了最大深度。上面列表中的最后一行是“完成。” 挑战 目的是编写最短的程序/命名函数,以给定值N打印/返回完成的行。上面显示N = 4。 输入值 输入将是单个非负整数N。然后,生成的行的长度将为2 ^ N。 …
12 code-golf 

1
我是否正确进行代码搜寻?
我很好奇我是否正确打高尔夫。我为自己提出了一个挑战,那就是如何在Python中将小型哈希程序编写为单个语句。我首先开始: from itertools import permutations from string import ascii_lowercase from random import sample def test(): chars = sample(ascii_lowercase, 9) sums = list(map(h, permutations(chars))) if len(set(sums)) == len(sums): print("unique results for permutations of given string") else: print("duplicate entries present in test results") def h(s): r = 0 for i in range(len(s)): …
12 code-golf  tips  python 

14
无复杂性的Kolmogorov(-Smirnov)
在统计中,有时了解两个数据样本是否来自相同的基础分布很有用。一种实现方法是使用两个样本的Kolmogorov-Smirnov检验。 您的任务是编写一个程序,该程序读取两个未排序的非负整数数组,并计算测试中使用的主要统计量。 给定一个数组A和一个实数x,定义分布函数F为 F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A) 给定两个数组A1和A2,定义 D(x) = |F(A1, x) - F(A2, x)| 两次抽样的Kolmogorov-Smirnov统计量是D全部real 的最大值x。 例 A1 = [1, 2, 1, 4, 3, 6] A2 = [3, 4, 5, 4] 然后: D(1) = |2/6 - …

25
每日#2随机高尔夫:来自正态分布的数字
关于系列 首先,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它,而无需担心系列赛。但是,在所有挑战中都有排行榜。您可以在第一篇文章中找到排行榜以及有关该系列的更多信息。 尽管我对该系列有很多想法,但是未来的挑战还没有定下来。如果您有任何建议,请在相关的沙箱帖子上让我知道。 漏洞2:来自正态分布的数字 我不敢相信这还没有完成!您将根据正态分布生成随机数。一些规则(大多数提交可能会自动覆盖其中的大多数规则,但其中一些规则已经到位,以确保多种语言之间的结果一致): 您应该将两个非负整数用作输入:种子S和N要返回的数字量。输出应该是N从均值0和方差1的正态分布中得出的浮点数列表。只要您提交的文件具有相同的种子,S它就会产生相同的编号。特别地,如果它被称为一次与次,用中,第一两个输出中的条目应该是相同的。另外,至少2 16个不同的值应产生不同的序列。(S, N1)(S, N2)min(N1, N2)S 您可以使用任何记录在案的内置随机数生成器,从(近似)均匀分布中提取数字,前提是您可以S继续使用它,并且它支持至少2 16种不同的种子。如果这样做,RNG应该能够为您从中请求的任何给定数字返回至少2 20个不同的值。 如果您的可用统一的RNG有一个较小的范围内,是不是seedable,或支持太少种子,您必须先建立一个统一的RNG具有足够大的范围上的顶部内置一个或您必须实现自己的合适的RNG使用种子。此页面可能对此有所帮助。 如果您没有实现生成正态分布的既定算法,请提供正确性证明。无论哪种情况,您选择的算法都必须产生理论上精确的正态分布(除非存在基础PRNG或有限精度数据类型的限制)。 您的实现应使用并返回浮点数(至少32位宽)或定点数(至少24位宽),并且所有算术运算都应使用所选类型的全部宽度。 您不得使用任何与正态分布或高斯积分直接相关的内置函数,例如误差函数或其反函数。 您可以编写完整的程序或函数,并通过STDIN,命令行参数,函数参数或提示接受输入,并通过返回值或通过打印到STDOUT(或最接近的替代方法)产生输出。 S并且N将是非负整数,每个整数均小于2 20。输出可以采用任何方便,明确的列表或字符串格式。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。当然,每位用户最短的提交时间也将进入该系列的整体排行榜。 排行榜 该系列的第一篇文章将产生一个排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头每个答案: # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes (目前未显示该语言,但是该代码段确实需要并对其进行解析,并且将来我可能会添加一个语言排行榜。)

9
配对高尔夫双素数和Collat​​z序列
这是受到恢复变异的源代码问题启发的一种新挑战。 您应该用相同的语言编写两个程序或函数。第一个应解决任务1,第二个应解决任务2。 您的分数将是较长程序与两个程序源代码之间的Levenshtein距离的总和。分数越低越好,因此您应尝试使两个解决方案相似,同时保持程序长度短。 任务1 您将得到一个正整数N,你应该输出在Collat​​z序列的N用空格或换行分隔。允许使用尾随分隔符。 Collat​​z序列的第一个元素是N。其余元素基于其后继:一个i − 1一个一世-1个a_{i-1} 一个一世= { 一i − 123 个i − 1+ 1 如果 一个i − 1 甚至 如果 一个i − 1 很奇怪一个一世={一个一世-1个2 如果 一个一世-1个 甚至3一个一世-1个+1个 如果 一个一世-1个 很奇怪 a_i = \begin{cases} \frac{a_{i-1}}{2} & \text{ if } a_{i-1} \text{ is even} \\ 3a_{i-1} + 1 & …

2
逻辑点形状
游戏 最近,我的大部分时间都花在了手机上的一个令人上瘾的游戏中,名为Logic Dots,这激发了我编写这一挑战的灵感。如果我向您展示游戏画面,则更容易解释这些规则,因此以下是未解决且已解决的难题的屏幕截图: 现在,这里要注意三件事。 游戏板(中心的4x4正方形网格) 所需的形状(从顶部开始,在第二个栏中的链接点,在乐谱和菜单下等)均为全线,或者a由1个矩形组成 行和列上的数字,表示解决方案中列中需要多少个点 游戏的目的是使所需的形状适合网格。您可以旋转形状,但不能斜入。 在解决方案中,请注意,所有形状仅创建一次(因为它们仅在所需的形状中创建一次),在这种情况下,它们都是水平的,但也可以是垂直的。正方形中的粉红色表示未使用的正方形。 这是一个更大,稍微更复杂的网格: 请注意,在未解决的难题中,已经有一些正方形填满。灰色的正方形表示您不能在其上放置点的被遮盖的正方形。带有尾巴的点告诉您该点处有一个点,并且它在尾巴的方向上链接了至少一个点,但在任何其他方向(包括相反的方向)上都没有链接。 符号 对于本文的其余部分,我将使用以下符号来指代董事会: <,>,^,v-表示一个预先放置的点,其尾部沿点的方向延伸 *-表示一个点。如果在未解决的网格(输入)上给出,则它是单个形状。如果是输出,则将其连接到其周围的点。 #-表示被遮挡的网格正方形(您不能在其中放置点) -,| (连字符和横线)-分别表示一个带有左右尾巴的点和一个带有上下尾巴的点 **(空格字符)-**表示空白 使用这些符号,后一种示例情况(未解决)可以表示为: < # ^ # 解决方案可以表示为: *< * * * * * * * *#* ^ # * 请注意,没有两个形状可以水平,垂直或对角线接触,因此以下情况无效: *** ** ** 挑战 您面临的挑战是解决从4x4到9x9的所有逻辑点难题。您将收到四行输入,然后是游戏板。这些行将如下所示: 第一行,形状-要查找的形状,每个形状均以表格形式给出sizexquantity(例如,3x2对于长度为三的两个形状),并以空格分隔。示例行:3x1 2x1 1x1 第二行,列-每列所需的点数的空格分隔列表。示例行:1 1 2 2 …

5
有多少种方法将N写入M个整数?
给定一个整数N,计算将其表示为M个整数> 1 的乘积的多少种方式。 输入只是N和M,输出是不同整数组的总数。意味着您可以多次使用整数,但是每个组必须是不同的(3 x 2 x 2如果2 x 2 x 3存在,则不计算在内)。 约束条件 1 < N <2 31 1 < M <30 例子 输入可以30 2给出输出3,因为它可以用三种方式表示: 2 x 15 3 x 10 5 x 6 Input 16 3提供output 1,因为只有一个不同的组: 2 x 2 x 4 输入2310 4给出输出10: 5 x 6 x 7 …

4
H树目录
程序员经常沉迷于绘制分形。我认为我们需要一种新的基于计算机的介质。 的ħ树是一个相当简单的类型的分形制成的水平线和垂直线。这是第十次迭代(由Wikipedia提供): 现在,假设图像中的每一行都是标准计算机文件系统中的目录(文件夹)。除最小的线外,所有线都相交于比自己小的两条线。这两条较小的线是较大线的子目录。因此,中间的大水平线是两条最大的垂直线的父目录,这两个垂直线又是图像中其余线的父级,祖父母等。 挑战 编写一个程序,该程序通过stdin或命令行(或最接近的替代方案)接收一个正整数N,并创建一个目录树,该目录树反映了H树形的第N次迭代。 第一次迭代(N = 1)是一条水平线。在每个后续迭代中,将一组新的垂直线或水平线添加到当前线的末端。因此,对于N = 2,添加两条垂直线(形成H形),对于N = 3,添加四条水平线,依此类推。 根目录的名称必须始终为tree。子目录的名称必须是它们相对于它们的父行,使用方向一致right,left,up和down。 由于根目录始终是一条水平线,因此它将始终具有right和left子目录。但是,这两个会up和down子目录,以及那些将right和left再次,等等。 迭代限制末尾的目录应该为空。 例 对于N = 3,目录树应如下所示: tree right up down left up down 附加信息 理想情况下,该tree目录将弹出源代码所在的文件夹,但是如果转到某个工作目录也可以。 您可能会假设tree您将在其中创建目录的地方没有预先存在的目录。 您可能会假设您的程序将始终在相同的常见现代操作系统(Mac / Windows / Linux)上运行。基本上不必担心使用并非在所有操作系统上都起作用的文件分隔符。 计分 这是代码高尔夫球,因此以字节为单位的最短代码获胜。

1
编写代码滑动拼图!
最可识别的滑动拼图是十五个拼图。它具有4 x 4网格,15个图块和一个空白网格空间。磁贴只能移动到空白区域,并且必须始终与网格对齐。 让我们定义一个广义的滑动拼图,它是一个二维的W宽度,高为H个高网格(W,H均为正整数),其中包含一些相同的未标记图块(在0到W × H之间),对齐到网格,排列为任何方式(不重叠),用空的网格空间填充其余区域。 例如,如果W和H为3,并且图块为T,并且空白处E为许多可能的侧板拼图布置之一,则 TTT TET EET 对于这些难题,有4种可能的举动:将所有事物推高,将所有事物推低,将所有事物推向左侧或将所有事物推向正确。沿某个方向“平移”会使所有图块尽可能沿该方向移动,直到它们碰到另一个图块或网格边界为止。有时推不会改变网格的布局, 如果将示例网格向右推,则结果为 TTT ETT EET 向左推的结果是 TTT TTE TEE 推倒结果是 EET TET TTT (请注意,最左边T的都已移动) 在这种情况下,推挤不会改变网格布局。 请注意,由于图块是无法区分的,因此这些难题没有“已解决”状态。还要注意,难题可能始于一旦做出推就不可能回到的布局(例如,在3 x 3网格中间的一个图块)。 挑战 仅使用可打印的ASCII编写两个矩形代码块,宽度均为M个字符,高度为N个字符(对于任何正整数M,N)。一个代码块将代表一个滑动拼图块,另一个代码块将代表一个空的网格空间。 将这两个代码块排列成W by H网格将创建一个代码表示的滑动拼图,该拼图可以保存为文本文件并作为常规程序运行。在运行时,此类程序应通过stdin提示用户输入1到4之间的数字;1表示向上,2表示向下,3表示左侧,4表示右侧。当用户键入他们的编号并按回车键时,程序将计算如何向该方向推其源代码图块,并将新的拼图布局保存到文件(新文件或同一文件)中,然后终止。 每次推后生成的新的滑动拼图代码文件都可以无限期地重复此过程。 例 假设我的图块代码块看起来像这样 // my // tile 我的空网格空间代码块看起来像这样 //empty //space (M = 7,N = 2,这当然不是实际代码) 这两个模块的任何有效的滑动拼图布置都应该以我使用的语言创建一个程序,该程序可以运行以使用户朝某个方向推。 示例网格的代码表示为: …

1
打高尔夫球用不同的语言的一些奎尼条纹
您将选择m种语言,并用每种语言编写n个程序,每个程序的长度为n * m。第k个程序应按程序号输出每个程序的第k个字符。 例如,在此提交中(仅用于演示;它们可以是任何字符,包括换行符和制表符): ABC DEF GHI 计划ABC应输出ADG,以及程序DEF和GHI应该输出BEH和CFI分别。 列表中的所有程序都不能是普通的quine。因此ABC,ADG必须有所不同。其他两个程序也一样。注意,n * m必须至少为2才能使之成为可能。 您不必按特定顺序使用语言。因此,您可以用语言A写两个程序,然后用语言B写三个程序,然后再用语言A写另一个程序。但是所有语言必须使用完全相同的次数。 程序和输出中的前导/尾随换行符无关紧要。 最低n(m + 10)/ m 3的答案获胜。但是,如果大多数语言使用了至少3种语言,我还将奖励至少+100悬赏。赏金截止日期:一周没有改善或2015年3月1日,如果没有答案满足标准。 语言规则 您可以使用任何具有不同名称的语言或通常被认为足够不同的不同版本(例如Python 2/3,ECMAScript 5/6)。但是您的程序不得以您使用的任何其他语言输出完全相同的东西。

3
最近的分区号
整数的分区数是将整数表示为正整数之和的方式的数目。 例如: 5 4 + 1 3 + 2 3 + 1 + 1 2 + 2 + 1 2 + 1 + 1 + 1 1 + 1 + 1 + 1 + 1 有7种方式表示数字5,因此7是与数字5对应的分区号。 分区编号:OEIS:#A000041 方向 编写一个程序,以正整数作为输入,并输出生成两个最接近输入数字的分区号的两个数字。 输入必须为1个正整数。 如果输入不是分区号,则输出必须是2个不同的正整数,它们生成与输入号最接近的两个分区号。(如果两个分区号是其中一个输出号的相等候选者,那么选择哪个分区都没关系。) 如果输入是分区号,则输出必须是1个生成输入号的正整数。 输入和输出可以采用任何合理的格式。 您可以假设输入将不大于1亿(例如,输出将永远不大于95)。 内置函数来计算分区号不容许,与其他一起标准的漏洞。 这是code-golf,因此最少要赢得字节数。 分区编号:OEIS:#A000041 例子 Input: 66 …

22
生成斯托尔序列
我正在学习Ruby,并编写了我的第一个平凡的代码来解决这个问题。 面临的挑战是,以产生第一Ñ所述的元件斯托尔序列,小号,其被定义如下: S [0] = 1 S [n]是无法表示为序列中两个不同的先前元素之和的最小数字。 因此,该序列以1、2、4、7和10开头。下一个元素为13,因为11(= 1 + 10)和12(= 2 + 10)是先前元素的总和,但13不是。 我正在寻找最短的代码。我自己使用Ruby,长度为108个字符,但是也许我会等着看别人提出什么之后再发布它?

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.