Questions tagged «code-golf»

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

15
同等关系
给定3个正整数a,,b和n(其最大值是您的语言中可表示的最大整数值),如果输出a ≡ b (mod n),则为true,否则为false。对于那些不熟悉一致性关系的人,a ≡ b (mod n)如果iff a mod n = b mod n(或等价于(a - b) mod n = 0),则为真。 限制条件 禁止内置一致性测试方法 内置的模运算是禁止的(这包括诸如Python divmod函数之类的操作,该函数既返回商又返回余数,以及除数函数,残差系统函数等) 测试用例 (1, 2, 3) -> False (2, 4, 2) -> True (3, 9, 10) -> False (25, 45, 20) -> True (4, 5, 1) …

8
吃巧克力吧
我有一条巧克力棒,需要帮助我才能食用,因此您将编写一个程序来实现该目的。 说明 第一行是输入。示例用空行分隔。 7 ____ __|__| |__|__| |__|__| |__|__| 6 _______ |__|__| |__|__| |__|__| 5 ____ __|__| |__|__| |__|__| 0 1 ____ |__| 规格 希望这些示例清楚地说明了这一挑战,但是为了避免任何可能的混淆,这是一个规范: 您可以有一个可选的尾随/前导空格 的输入为0空输出。 如果输入为偶数,则最上面的行如下所示: _______ |__|__| 如果很奇怪,第一行是: ____ |__| 如果它是奇数且大于1,则最上面的行是: ____ __|__| 以下行是: |__|__| 直到的实例数|__|与输入相同

9
相互填补空白
给定两个字符串的输入,下划线表示相应的单词,输出带有“空白”的句子。 描述此挑战的最佳方法是举例。这是一个示例输入: programming _____________ and code golf programming puzzles ______ code ____ 这是对应的输出: programming ___puzzles___ and code golf programming puzzles _and__ code golf 出于此挑战的目的,“单词”定义为一个或多个小写字母的序列,“空白”定义为一个或多个下划线(输入将始终仅包含小写字母,空格和下划线) 。输入字符串中的单词和空格由单个空格分隔,并且句子中单词和空格的总和将始终相等。 挑战的目的是用正确的 词填充所有空白,即当用空格分隔时,在其他字符串中占据相同索引的词。 如上例中的单词“ puzzles”所示,该单词必须居中于空白处—两侧均保留相同数量的下划线。 如果该单词不能精确居中,则多余的下划线可能在左侧或右侧(例如,上例中的单词“ and”)。 总是有足够的下划线使该单词适合,但可能与该单词的长度一样多(例如,上例中的单词“ golf”)。 两个字符串中相同位置永远不会有空格。 输入/输出可以是以下任意一种(输入/输出不一定必须通过相同的方法): 单个字符串,由任何非字母,空格或下划线的字符分隔(例如,换行符或逗号分隔的字符串) 数组/列表/等。两个弦 两个功能/命令行参数(仅输入) 由于这是code-golf,因此以字节为单位的最短代码将获胜。 上面的示例可以用作测试用例。这是一个较大的测试用例(由于居中行为不同,输出中的第二个字符串可能会略有不同): lorem _____ dolor _____ amet _______________ adipiscing elit mauris dapibus …
11 code-golf  string 

1
像ABC解算器一样容易
Easy As ABC,也称为“ End View”,是一个难题,您将得到一个带有字母的空白网格;您必须部分填写表格,以便每个字母和每行中的每个字母正好位于其中;此外,行(或列)末尾的字母必须是从该方向在该行(或列)中可见的第一个字母。您在此代码高尔夫球中的目标将是解决“简单作为ABC”难题。 例如,这是今年MIT Mystery Hunt的Easy As ABC拼图,使用字母MIC: 解决方案是: (很抱歉,C上的工件;我试图从其余的难题中删除不相关的信息。) 输入输出 输入将是字符串数组或可能带有定界符的字符串。它将从左上角开始,然后顺时针旋转。例如,上面的难题可以这样输入: ".CMM.M|....IM|.....I|C.ICI." 输出应为有边界或无边界的已求解网格。它可以是字符数组,字符串数组或任何其他方便的格式。必须接受相同的“空白”字符作为输入并显示为输出,但是该空白字符可以是任何东西。如果它们是单个字符串,则输入和输出都必须具有相同的分隔符(输入的两边之间以及输出的行之间)或根本没有分隔符。 对于无法解决的难题,您必须输出解决方案无法理解的内容。您可能会认为没有一个难题有多个解决方案。 您必须允许任何数量的字母和任何大小的网格;所有用过的字母将出现在网格的边框中。 这是代码高尔夫:通常,最短的代码胜出! 测试用例 "T.AA..|.T.TSS|..TST.|A...SS" "R.RU..|B.B..B|.UR.UB|UR..B." "N...NK|E.NK.K|..KK..|....EK" "CA..DBD|.B..CC.|.D.DEB.|DB.A..A" "...DDEBE|DC..EBBD|BA..ABF.|E..FECDE"

5
ASCII框渲染
任务 您的任务是编写一个程序,该程序将在输入指定的位置输出ASCII框。 输入值 您将得到一个数字列表。这里的格式有点灵活,你可以使用任何你想要的deliminator(例如1,2,3,4,1 2 3 4,[1,2,3,4])。该列表以4组为一组,并指定xywh每个框的。每个框的宽度和高度至少为2,x并且width从左到右。y并且height是顶部至底部。 输出量 可以将渲染视为从右到左,首先绘制右侧的框,然后再绘制每个框。允许使用尾随空格以及尾随换行符。 如何处理重叠的盒子 输入左侧的框是顶部的框,没有东西会重叠。之后的每个框仅在尚未包含在框内的空间中渲染,并且不会替换已渲染框的边框。 样式 盒子的样式是相当标准的,+用于拐角,-用于水平线和|用于垂直线。 例子: (>>>表示输入) >>>0 0 11 4 7 2 8 4 3 5 8 3 +---------+ | | | |---+ +---------+ | | | +---+------+ | | +------+ >>>0 3 11 4 7 5 8 4 3 8 …

6
修剪并计算小数
在此挑战中,您将编写一个程序来输出输入字符串中的小数位数,并在需要时修剪输入。 例子 -12.32 2 32 0 3231.432 3 -34.0 0 -34 023 0 23 00324.230 2 324.23 10 0 00.3 1 0.3 0 0 -04.8330 3 -4.833 规则 输入将是一个字符串,可以通过STDIN,函数参数或最接近的等效项来获取 输出可以通过函数返回,STDOUT或最接近的等效项进行。 除了您的语言的最大字符串长度外,输入整数的大小没有限制。 如果输入中有任何不必要的零(前导或尾随零): 你应该把它们拿出来 输出新数字的小数位数 输出由分隔符分隔的新数字(例如,空格,换行符,逗号) 输入将始终与此RegEx:匹配-?\d+(\.\d+)?,或者如果您不讲RegEx: 有可能是-在开始暗示负数。然后至少会有一位数字。然后可能会有... .和更多数字。 要检查输入是否有效,请在此处检查 没有正则表达式 这是代码高尔夫球,因此以字节为单位的最短代码获胜

1
计算数字,除数版
在数学上受到这个问题的启发。 让一个数的因式分解,Ñ,被表示为P(N)= 2 一个 ×3 b ×5 Ç X ...。 (使用X作为乘法符号。) 接着的约数的数目Ñ可以表示为d(N)=(A + 1)×(B + 1)×(C + 1)...。 因此,我们可以很容易地说2n的除数为D(2n)=(a + 2)x(b + 1)x(c + 1)...,3n 的除数为D(3n )=(a + 1)x(b + 2)x(c + 1)..., 依此类推。 挑战: 给定某些除数输入,编写一个使用这些属性来计算n的程序或函数。 输入: 一组整数,我们将其称为w,x,y,z,并具有以下所有定义: 所有输入都大于1- w, x, y, z > 1 x和z不同-x<>z x和z为质数- P(x)=x,D(x)=2和P(z)=z,D(z)=2 w是xn的除数-D(xn)=w y是zn的除数-D(zn)=y …

8
团结的原始根源
设z一个复数。如果对于某个正整数和任何正整数,z是第n个本原的根。n k < n 挑战 编写一个完整的程序或函数,给定一个正整数n作为输入,该程序或函数将输出所有n个原始单位根。您可以将它们输出为极性形式(e^θi或e^iθ,参数应为至少两个小数位的小数)或矩形形式(a + bi或类似形式,实部和虚部也应为小数),并且它们可能会在您的语言列表中输出/ array格式或字符串,数字用空格或换行符分隔。不允许使用用于计算第n个统一根或第n个基本统一根的内置函数。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 样本输入和输出 6 -> e^1.05i, e^-1.05i # polar form 3 -> e^2.094395i, e^-2.094395i # any number of decimal places is OK as long as there are more than 2 8 -> 0.707 + 0.707i, 0.707 - 0.707i, -0.707 + 0.707i, -0.707 …

5
贝祖特的身份
Bézout身份简介 两个整数A,B的GCD是最大的正整数,该整数将两个整数除而无余数。现在由于欧几里得的性质,每个整数N可以除以另一个整数M,如下所示: 存在u,v对,我们可以这样写: 由于这些对的数量是无限的,因此我们想找到特殊的对。实际上恰好有两个这样的对满足(A,B不为零) 例如 挑战 这项挑战的目标是找到满足上述约束且u必须为正的一对(有序)系数(u,v)。这样会将输出范围缩小到唯一对。 输入值 我们可以假设输入为正,而且A总是大于B(A> B)。 输出量 我们程序/函数的输出必须是挑战中指定的(有序)对。 规则 不得使用内置的扩展欧几里德算法(例如,在Mathematica中允许使用,GCD但不允许ExtendedGCD- 否则将失败5,3)。 答案可能是完整的程序(通过STDIN或类似输入接受并通过STDOUT输出)或功能(返回对)。 除(u,v)对之外,不得有任何输出,不允许尾随换行符或空格。(括号或逗号都可以) 这是代码高尔夫,禁止所有标准漏洞,并且以字节数最少的程序为准。 例子 (A, B) -> (u, v) (42, 12) -> (1, -3) (4096, 84) -> (4, -195) (5, 3) -> (2, -3) (1155, 405) -> (20, -57) (37377, 5204) -> (4365, -31351) (7792, …

3
阅读表
任务 给定一组坐标读取表的内容。 表格格式 表格将采用以下基本格式: |[name]|[name]| --------------------- [name]| [val]|[val] | [name]| [val]|[val] | 列名在列中始终是唯一的。行名也是唯一的行内。这包括除空格以外的相同名称。值,列名和行名将永远不会包含|-在其中。名称和值中绝对不能有空格,但可以有前导或尾随空格。列宽可根据标题/内容进行调整。列宽从上到下始终是一致的。 输入值 一个表和一个用空格分隔的[name]s 列表。 例 [table] row col 如果要编写函数,则它们可以是单独的字符串,否则,row col将始终是输入中的最后一行。row col在格式上具有一定的灵活性,可以用多种方式表示。(例如(row, col),r, c...)。唯一的硬性要求是它必须是一行,并且必须按顺序出现col row。 输出量 输入所指定的单元格内容,单元格前无尾随空格。 例子 In: |a|z |_*| ------------ atb|1|85|22| b |5|6 |e$| /+*|8|we|th| atb a Out: 1 In: | x| b | ---------- ab|l |mmm| …
11 code-golf  string 

12
Eeny,meeny,miny,moe
介绍 童年时代的歌曲Eeny,meeny,miny,moe经常被用来在演奏标签时选择谁是“ it”。每个人都会围成一个圈,指向一个随机选择的人。他们会唱歌: Eeny,meeny,miny,moe, 用脚趾抓住老虎。 如果他 嘶哑,那就放开他,Eeny,meeny,miny,moe。 当他们唱出每个单词时,他们指向圈子中的下一个人。当最后的“萌”被演唱时被指向的人就是“它”。孩子们会立即站起来散落。 目标 实现最短的程序(以字节为单位),该程序接受输入,子代数并列出指向它们时唱出的单词。 获胜者将在一周内被选中。 输入值 来自STDIN的单个正整数子级数。这可能比歌曲中的单词数还多。 输出量 将一个列表写入STDOUT,其中每行代表一个孩子,并包含指向该单词时唱的单词。如果孩子过多,则可以省略空行。 要求 始终从第一个孩子开始。 显示的单词不带标点。 最后的“萌”应该强调为“萌!”。包括标点符号。 例 输入值 3 输出量 Eeny moe tiger toe hollers go miny meeny Catch by If let Eeny MOE! miny a the he him meeny 输入值 7 输出量 Eeny by him meeny …

1
词间吸引力
牛顿的引力理论说,两点质量之间的引力是 F =(Gm 1 m 2)/ r 2 哪里 G为重力常数:6.674×10 -11 N·(m / kg)2 m 1是第一个物体的质量 m 2是第二个物体的质量 r是它们的质心之间的距离 挑战 您需要模拟两个单词之间的拉动。每个小写字母的质量取决于其在字母表中的位置。大写字母的质量是小写字母的两倍!您将得到一个字符串,其中包含两个单词,这些单词由几个空格分隔,以及正整数秒数s。在s秒后输出字符串的外观。 信息 因为单词是抽象的,所以它们具有一组不同的单位和常量 质量:WMU(字质量单位)-等于字母“ a”的质量。 距离:em,一个字符的长度。 力: N W(牛顿(Word Newton))= WMU·em / s 2 重力常数:G = 1 N w ·(em / WMU)2 第一个字符对应于x轴上的位置0。 所有计算都应尽可能精确地进行,直到最后才舍入到最接近的em。 您不需要使用微积分,只需要每秒重新计算F,自动将新的加速度应用于速度,然后一秒钟将速度应用于位置(请参见示例)。 一旦两个单词相互碰撞(如 catdog ),它们就不会再移动了。 质量中心 的质心的单词的可与式中找到: …

4
内存分配器
您正在设计一种新的深奥编程语言,并且决定添加的一个功能是动态内存分配器。您的语言为用户的程序空间指定了特殊的专用虚拟地址空间。这与内存分配器用于任何内部状态的地址空间是分开的。 为了帮助减少分发实现的成本,代码的大小必须尽可能小。 接口 您必须提供三个功能:初始化,分配和取消分配。 初始化 此函数采用单个正整数参数N。这意味着用户程序N的地址空间中有N-1字节,可以从中分配字节。该地址0保留为“ null”。 确保在任何分配/取消分配调用之前,该函数将被精确地调用一次。 请注意,此功能不需要为用户程序的虚拟地址空间分配任何物理内存。您基本上是在创建空心内存分配器的“外观”。 分配 分配功能必须请求分配的内存字节数。输入保证为正。 您的函数必须将一个整数地址返回到分配的块的开头,或者0表示没有所请求大小的连续块可用。如果在地址空间中的任何地方都有可用大小的连续块,则必须分配! 您必须确保没有两个分配的块重叠。 解除分配 解除分配功能必须采用已分配块的开始地址,并且可以选择采用给定块的大小。 已释放的内存可再次用于分配。假定输入地址是有效地址。 示例Python实现 请注意,您可以选择任何方法来跟踪内部状态。在此示例中,类实例对其进行跟踪。 class myallocator: def __init__(self, N): # address 0 is special, it's always reserved for null # address N is technically outside the address space, so use that as a # marker self.addrs …
11 code-golf 

3
启动一个原始世界
受编程原始世界的启发。也与此挑战息息相关。 让我们将原始质数定义为一个本身就是质数的数字,但是如果您删除N个以10为基数的连续子串,则将不再是质数0 < N < digits in number。 例如,409是原始质数,因为409本身是质数,但是除去1位数字的子串后得到的所有数字都不是质数: 40 49 09 = 9 并且由于删除长度为2的子字符串而产生的所有数字都不是质数: 4 9 另一方面,质数439不是原始的。删除不同的子字符串将导致: 43 49 39 4 9 虽然49、39、4和9都不是素数,但43 是素数;因此,439不是原始的。 2、3、5和7非常原始,因为它们不能删除任何子字符串。 挑战 您的挑战是创建一个程序或函数,该程序或函数需要一个正整数N并输出第N个原始质数。该代码应在任何现代PC上在不到1分钟的时间内完成,最多输入50次。 以字节为单位的最短代码获胜。 作为参考,以下是前20个原始质数: N Pristine prime 1 2 2 3 3 5 4 7 5 11 6 19 7 41 8 61 9 …

6
可以使用异常取消来简化分数吗?
异常取消(来自Wolfram Alpha): 异常抵消是分数a / b的分子和分母中a和b的数字“取消”,导致分数等于原始数。请注意,如果分子和分母中一个或多个数字存在多个但不同的计数,则对于要取消的数字有歧义,因此最简单的方法是将此类情况排除在考虑范围之外。 链接 用简单的话说,你有一个分数a / b。如果您可以抵消分数中的数字以创建另一个c / d等于原始分数(a / b = c / d)的分数,则可以使用异常抵消来简化分数。 您的挑战是制作一个程序或函数,该程序或函数以形式输入分数字符串a/b并输出或返回真实值(如果可以使用反常消除来简化分数),否则返回伪造的值。a并且b将始终为非零的正整数。a并且b将始终具有两个或多个数字。此外,所有的无论从数字a还是b不会被取消了(你不会得到输入12/21),至少一个数字从a和b每次(你不会获得输入将被取消43/21),而最终的结果将永远不会0对任何a或b。您的程序必须取消a和之间的所有公用数字b(即1231/1234,您必须取消了1,一2,和3)。如果有多种取消的可能性,请首先选择最左边的数字(515/25变为15/2而不是51/2)。 例子: Input Output Why 1019/5095 true Remove the 0 and the 9 from both sides of the fraction to get 11/55, which is equivalent. 16/64 true Remove the 6 from both sides, …

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.