Questions tagged «code-golf»

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

30
寻找“亚回文”。
查找字符串的所有唯一 “子回文” 的最短代码,即:任何长度大于1的子字符串都是回文。 例如1 input: "12131331" output: "33", "121", "131", "313", "1331" 例如2 input: "3333" output: "33", "333", "3333"

30
模拟7段显示
任务 任务是显示7段显示器的128种可能状态中的任何一种 。 你的程序应该接受7个字符(“位”)是一个字符串0或1。输入的第一位对应下图的A段,第二位对应B,依此类推(忽略dp): 显示的方式取决于您-单个Unicode或ASCII符号, ASCII艺术作品,粗体或其他任何形式。但是,每个输入必须具有自己的不同输出。如果您提出了一些幻想,我相信您可以通过展示一些例子来收获赞誉。 显示屏的全部128种可能状态为: 规则 高尔夫 就像我说的,任何类型的输出都是允许的,但是如果您指定它会很好。 输入可以是stdin或命令行参数。 例子 输入项 1101101 输出量 作为ASCII / Unicode: 2 不同种类的ASCII艺术(我不太擅长此事) _ ╺┓ ╒╗ --- _| ┏┛ ╔╝ | |_ ┗╸ ╚╛ --- | ---
24 code-golf 

8
撞球撞
给定一对撞球在撞击前的二维位置和速度,计算出完全弹性碰撞后的速度。假定这些球是具有相同半径,相同质量,均匀密度且无摩擦的理想球体(或等效地:圆形)。 输入由8个数字:p0x,p0y,v0x,v0y,p1x,p1y,v1x,v1y其中p0x,p0y是所述第一球,中心v0x,v0y其速度,并且类似地p1x,p1y,v1x,v1y,第二球。可以接受以任何顺序输入,并且在任何方便的方式结构化,例如,作为一个2x2x2的阵列,或者一个2×2阵列p和两个长度为2的数组为v0和v1。也可以使用复数(如果您的语言支持)而不是xy对。但是,您不应在非直角坐标系的坐标系中进行输入,即不允许使用极坐标。 请注意,撞球的半径是p0x,p0y和之间的距离的一半p1x,p1y,因此并未将其作为输入的明确部分给出。 编写一个程序或函数,以任何方便的笛卡尔表示形式输出或返回4个数字:的碰撞后值v0x,v0y,v1x,v1y。 可能的算法是: 找到穿过两个中心的法线 找到穿过两个中心之间的中点并垂直于法线的切线 改变坐标系和分解v0x,v0y,并v1x,v1y纳入其切线和正常组件v0t,v0n和v1t,v1n 交换的正常组成部分v0和v1,维护他们的切向分量 改回原始坐标系 测试(结果四舍五入到小数点后五位): p0x p0y v0x v0y p1x p1y v1x v1y -> v0x' v0y' v1x' v1y' [-34.5,-81.8, 34.7,-76.1, 96.2,-25.2, 59.2,-93.3] [ 49.05873, -69.88191, 44.84127, -99.51809] [ 36.9, 77.7,-13.6,-80.8, -7.4, 34.4, 15.1,-71.8] [ 5.57641, -62.05647, -4.07641, -90.54353] [-51.0, 17.6, 46.1,-80.1, 68.6, 54.0,-35.1,-73.9] [ …

18
计算超自由基
什么是超自由基 的ultraradical,或把基团,一个实数的被定义为五次方程的唯一实根。aaax5+x+a=0x5+x+a=0x^5+x+a=0 在这里,我们使用表示超自由基功能。例如,因为。UR(⋅)UR(⋅)UR(\cdot)UR(−100010)=10UR(−100010)=10UR(-100010)=10105+10−100010=0105+10−100010=010^5+10-100010=0 挑战 编写一个完整的程序或函数,将一个实数作为输入,然后返回或输出其超基数。 要求 不允许有任何标准漏洞。下面的测试用例的结果必须精确到至少6位有效数字,但通常程序应为任何有效的实数输入计算相应的值。 测试用例 提供9个小数点后四舍五入以供参考。添加了一些测试用例的说明。 a | UR(a) ---------------------------+--------------------- 0 | 0.000 000 000 # 0 1 | -0.754 877 (666) # UR(a) < 0 when a > 0 -1 | 0.754 877 (666) # UR(a) > 0 when a < 0 1.414 213 562 | …

20
1,2,4,8,16,…33?
挑战 编写一个函数/程序,以众所周知的数字顺序输出n第一个n元素或第一个元素: 1, 2, 4, 8, 16 ... 哦,等等...我忘记了前几个数字: 1, 1, 1, 1, 2, 4, 8, 16 ... 哎呀,我会增加一些其他措施: 1, 1, 1, 1, 2, 4, 8, 16, 33, 69, 146, 312, 673, 1463, 3202, 7050, 15605, 34705 ... 这些数字是由(零索引)公式给出的广义加泰罗尼亚语数字: a (n + 1 )= a (n )+ ∑k = 2n …

15
房间编号定位器
房间编号定位器 同事开会时给我错误的房间号时,我遇到了一种有趣的问题解决技术。时不时地,在开会的过程中,我们团队中的一个成员会给我发送错误的房间号,通常是因为他们急于在办公桌前用笨拙的手指输入错误的密钥。 有趣的是,到达错误的房间后,我通常可以通过想象一个数字键盘来猜测它们真正意味着的房间: 并猜测他们要按的相邻数字。 挑战 假设您的同事只输错了一位数字,那么您面临的挑战就是编写一个函数,该函数需要一个办公楼号码(000-999)并输出可能的错字解决方案。 下表显示了数字键盘上哪些数字彼此相邻: 0 -> 1,2 1 -> 0,2,4 2 -> 0,1,3,5 3 -> 2,6 4 -> 1,5,7 5 -> 2,4,6,8 6 -> 3,5,9 7 -> 4,8 8 -> 5,7,9 9 -> 6,8 输入项 3位数字:000-999。假设正好输入3位数字。如果数字小于100或小于10,则会为您提供前导零。(即004和028)。 输出量 可能的房间列表。只要房间号之间有分隔符,它就可以采用您想要的任何形式。(即空格,逗号,换行符等。)如果数字小于100或小于10,则可以或不可以将前导零作为输出,这取决于您。(即004可以是004 04 4028可以028 28) 测试用例(前导零是可选的): 008 -> 108, 208, 018, …
24 code-golf 

6
到坐标的距离
二维平面上有n个人。利用它们之间的距离,我们将找到它们的位置。要获得唯一答案,您必须做出四个假设: 至少有3个人。 第一人称位在(0,0)。 第二人称位置(x,0)对于x> 0。 第三个人处于(x,y)位置,且y> 0。 因此,您面临的挑战是编写一个程序或函数,该程序或函数将给出二维距离数组(其中D[i][j]给出人i与之间的距离),并j返回其坐标列表。您的答案必须准确到至少6位有效数字。以字节为单位的最短解决方案获胜。 例子 [[0.0, 3.0, 5.0], [3.0, 0.0, 4.0], [5.0, 4.0, 0.0]] => [[0.0, 0.0], [3.0, 0.0], [3.0, 4.0]] [[0.0, 0.0513, 1.05809686, 0.53741028, 0.87113533], [0.0513, 0.0, 1.0780606, 0.58863967, 0.91899559], [1.05809686, 1.0780606, 0.0, 0.96529704, 1.37140397], [0.53741028, 0.58863967, 0.96529704, 0.0, 0.44501955], [0.87113533, 0.91899559, 1.37140397, 0.44501955, 0.0]] …

4
三分球!那是什么
来自http://en.wikipedia.org/wiki/Triangle: 编写一个程序,该程序采用三个2d坐标元组(笛卡尔),并对这三个点描述的形状进行分类。 在几乎所有情况下,这些点都将描述不同类型的三角形。在某些退化的情况下,这些点将描述一个奇异点或一条直线。程序将确定以下哪个标签适用于所描述的形状: 点(3点同时发生) 直线(直线上3点-可以同时发生的点不超过2点) 等边的(3个边相等,3个角度相等) 等腰(2边相等,2个角度相等) 斜角(0边相等,0角度相等) 右(1个正好为π/ 2(或90°)的角度) 倾斜(0个角度正好为π/ 2(或90°)) 钝角(1个角度>π/ 2(或90°)) 急性(3个角度<π/ 2(或90°)) 请注意,对于某些上述形状,将应用上述标签中的多个。例如,任何直角也将是等腰或斜角。 输入项 该程序可以从STDIN,命令行,环境变量或任何适合您选择的语言的方法中读取3个输入坐标。 输入坐标可以格式化,但是对于您选择的语言来说很方便。可以假设所有输入数字相对于最终使用的数据类型都是正确的格式。 不能假设输入坐标的顺序。 输出量 程序将输出到STDOUT,对话框或任何适合您选择语言的显示方法。 输出将显示适用于由输入坐标描述的形状的所有标签。 标签可以以任何顺序输出。 其他规定 允许使用您语言的三角函数库/ API,但禁止任何专门计算三角形类型的API。 在确定角度或边长相等时,您可能最终会比较浮点值。如果一个值在另一个值的1%以内,则将两个这样的值视为“相等”。 标准的“漏洞”不再有趣 这是代码高尔夫球,因此最短的答案以字节为单位。 例子 Input Output (1,2) (1,2) (1,2) Point (1,2) (3,4) (5,6) Line (0,0) (1,1) (2,0) Isosceles Right (0,0) (2,1) (10,1) …

10
费马多边形数定理
Fermat的多边形数定理指出,每个正整数都可以表示为最多nnn 多边形的和。这意味着每个正整数都可以表示为最多三个三角形,四个正方形,五个五角形等的总和。您的任务是取一个正整数和一个整数,并输出相加为角整数。nnnxxxs≥3s≥3s \ge 3sssxxx 第个角整数,其中和可以用两种方法定义。非数学-Y方式是个 -gonal数可以构造为正多边形与两侧,各有长度的。例如,对于(三角数):nnnsssn≥1n≥1n \ge 1s≥3s≥3s \ge 3nnnssssssnnns=3s=3s = 3 请参阅此处以获取具有更大示例。sss math-y定义是通过使用的公式,它得出第个角数:P(n,s)P(n,s)P(n, s)nnnsss P(n,s)=n2(s−2)−n(s−4)2P(n,s)=n2(s−2)−n(s−4)2P(n, s) = \frac{n^2(s-2) - n(s-4)}{2} 这是在维基百科页面给出这里。 输入项 两个正整数和,条件为。您可以用您的语言以最自然的表示形式输入这些整数(十进制,一进制,教堂数字,整数值浮点数等)。sssxxxs≥3s≥3s \ge 3 输出量 整数列表,最大长度为,其中L的总和等于x,L中的所有整数都是s-角整数。同样,整数可以用您的语言以自然表示形式输出,并带有任何不同的,一致的分隔符(因此,十进制输出使用非小数字符,一进制输出使用不同的字符等)。LLLsssLLLxxxLLLsss 规则 输入或输出将永远不会超出您语言的整数限制 LLL不必订购 如果有多个可能的输出,则任何一个或全部都可以接受 这是代码高尔夫球,因此以字节为单位的最短代码获胜 测试用例 x, s => L 1, s => 1 2, s => 1, 1 5, 6 => …

23
用字母汤装满碗
我们似乎从来没有得到疲倦的字母相关的挑战... 食谱 给定 一串字母S,和 两个正整数M,N, 产生的字母表汤中的字母S占据的随机位置在矩形碗尺寸的M× N,框架由一个非字母,非空格字符来表示碗的边缘。 字母未使用的位置应显示为空格。请参阅下面的示例。 附加规则 尺寸M× N指的是内部的碗。包括轮辋在内的尺寸为M+2× N+2。 每个字符S应在碗中一次出现在不同的位置;也就是说,一个字符不能覆盖另一个字符。 S 可能包含重复项。例如,如果S是字符串'abcc',汤必须包含一个a,一个b,两个c(都在不同的位置)。 输入将满足限制 M >= 1,N >= 1,1 <= length(S) <= M*N。 碗的边缘可以是任何非字母,非空格字符,在程序运行和输入值之间保持一致。 碗中的字母位置是随机的,因此每次使用相同的输入运行程序时,结果可能会有所不同。 给定输入,每个可能的字母位置集应具有非零概率。由于无法从程序的一些实现中进行检查,因此请说明您的代码如何实现此目的。 允许在边框周围使用前导或尾随空格。 S将仅包含大写字母。如果愿意,您可以选择仅采用小写字母。 输入和输出像往常一样灵活。例如,输出可以是带有换行符的字符串,2D字符数组或行列表。 允许使用任何编程语言编写程序或功能。禁止出现标准漏洞。 以字节为单位的最短代码获胜。 例子 输入显示为S, [M N],其中M是行N数和列数。该字符#用于边框。 'O', [1 1]: ### #O# ### 'HEY', [1 3]: ##### #YHE# ##### 'HELLO', …

21
这个清单可以平衡吗?
要检查一列非负整数是否平衡,可以想象一下将各个权重放在板上,然后尝试将板平衡在枢轴上,以使枢轴左右的汇总相对权重相同。相对重量是通过将其重量乘以其到枢轴的距离得出的(请参见杠杆定律)。 (来源:维基百科) 该图像对应于一个列表[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]。该列表是平衡的,因为5到枢轴的距离为20,而到枢轴100的距离为1和5*20 = 100 = 100*1。 例子 3 1 5 7 ######### ^ 在这种情况下,枢轴位于的正下方5,3具有距离2和1且7具有距离1。因此,枢轴的左侧和右侧的两边总计为7(3*2 + 1*1在左侧和7*1右侧),因此列表[3, 1, 5, 7]是平衡的。 但是请注意,枢轴不必放在列表元素之一的下面,而也可以放在两个列表元素之间: 6 3 1 ####### ^ 在这种情况下,距离变为0.5, 1.5, 2.5, …

25
计算宽限期的编辑次数
当您在SE上编辑帖子时,在5分钟宽限期内的所有进一步编辑都会合并到其中。给定您编辑帖子的次数列表,请在宽限期内不算编辑次数。 假设您在几分钟内进行编辑[0,3,4,7,9,10,11,12]。有时会导致3次修改,[0,7,12]其余的会在其宽限期内发生。 0: [3,4] 7: [9,10,11] 12: [] 第一次编辑是在第0分钟。第3和第4分钟的编辑在其5分钟宽限期内,因此不计算在内。 第二个编辑在第7分钟进行。第9、10、11分钟的编辑处于其宽限期内。 第12分钟的第三个编辑正好从第7分钟开始经过5分钟宽限期的边缘。 因此,输出为3。 以分钟为单位的时间列表将是一个递增的整数列表。对于首次发布,第一个数字将始终为0,我们将其视为编辑。 测试用例: [0] [0,3,5,7] [0,3,4,7,9,10,11,12] [0,30,120] [0,4,8,12,16] [0,4,8,12,16,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] [0,5,10,15,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] [0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30] 输出: 1 2 3 3 3 3 4 5 5 6 为了便于复制,以下是输入,输出和输入/输出对: [[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, …

14
你知道你的“ KVZ”吗?
概念 您可以通过哪些方式加扰英文字母,以便仍可以在不破坏音调的情况下将其演唱到Twinkle Twinkle Little Star音乐中? 规则 交换 让我们假设默认情况下可以自由交换以下每个集合中包含的字母而不会破坏音调: {A,J,K} {B,C,D,E,G,P,T,V,Z} {I,Y} {Q,U} {S,X,F} {M,N} 因此,H,L,O,R和W锁定在适当的位置 输出量 程序需要以任何顺序输出包含完整英文字母的单个RANDOM字符串(或字符列表),前提是该顺序满足上述条件。您应该没有办法预测程序将输出哪个字符串(如果忽略种子),这意味着您不能仅仅对其进行硬编码。 您的程序必须有一定的概率(不一定是统一的)生成9!⋅3!⋅3!⋅2!⋅2!⋅2!=1045094409!⋅3!⋅3!⋅2!⋅2!⋅2!=104509440 9! \cdot 3! \cdot 3! \cdot 2! \cdot 2! \cdot 2! = 104509440 输出。 关于间距,定界符或大小写没有特定的格式限制,只是保持一致。 目标 最小字节获胜! 例子: KCDBPSVHIAJLMNOZQRXGUEWFYT A,G,Z,V,P,X,C,H,Y,K,J,L,N,M,O,T,U,R,S,D,Q,B,W,F,I, Ë KVTDCFBHIJALNMOPURSZQGWXYE jcdebxthikalnmogursvq pwfyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 非示例: HLWROABCDEFZXYGIJKMNPQTSVU 概念验证:(Python3,529字节) import random g1 = …

22
反转配电板上的某些开关
受此挑战启发。 目标: 给定一个预先配置的总机和一个索引列表,将给定索引处的交换机反转。 配电盘由包裹在中的一定数量的开关(v或^)组成,-并排列成不同长度的行。这是总机示例: -v-^-v- -^-v- -v-^-v- 反转/翻转开关装置从它改变v到^,或从^到v。 开关从左到右,从上到下索引。例如,在上面的示例v中,第一行中的最后一个将位于位置3,^中间行中的将位于4(使用1索引)。 输入: 代表配电盘的字符串(或字符串列表)。保证匹配正则表达式((-[v^])+-)(\n(-[v^])+-)*。 可能为空的表示索引的数字列表,可能是0或1(或者,如果需要,可以是任意数字)被索引。这些是需要翻转的开关。 输出: 与输入形状相同的配电盘,其中指定的开关反转。任何未指定的开关应保持其初始状态。 规则: 输入将始终正确格式化,并且任何给定的索引都不会超出范围。 索引列表将被排序,并且没有重复项。 在您的答案中说明您使用的索引是0、1或任意索引。 只要输出看起来像输入,尾随空格就可以了。 这是代码高尔夫球,因此最短的代码获胜。 例子: #Using 1-indexing input: #Empty Case [], -v-^-v- output: -v-^-v- input: #Single switch [1], -v- output: -^- input: #Skip a line [3,5], -^-v-v- -v- -^-^- output: -^-v-^- -v- -v-^- input: …

23
查找最接近的三位数十六进制颜色
在CSS中,颜色可以由“十六进制三元组”指定-一个三字节(六位数)的十六进制数字,其中每个字节代表颜色的红色,绿色或蓝色分量。例如,#FF0000完全为红色,等效于rgb(255, 0, 0)。 颜色也可以由使用三个十六进制数字的速记符号表示。通过将每个数字重复,速记扩展为六位数字形式。例如,#ABC变为#AABBCC。 由于十六进制速记中的位数较少,因此可以表示较少的颜色。 挑战 编写一个采用六位数十六进制颜色代码并输出最接近的三位数颜色代码的程序或函数。 这是一个例子: 输入十六进制代码:#28a086 红色成分 0x28 = 40(十进制) 0x22 = 34 0x33 = 51 0x22更近,因此缩短的颜色代码的第一位是2 绿色成分 0xa0 = 160 0x99 = 153 0xaa = 170 0x99更近,所以第二个数字是9 蓝色成分 0x86 = 134 0x77 = 119 0x88 = 136 0x88更近,所以第三位是8 缩短的颜色代码为#298(扩展为#229988) 您的程序或函数必须接受以开头的六位十六进制颜色代码作为输入,#并输出以前面的三位数颜色代码作为输入#。 例子 #FF0000→#F00 #00FF00→#0F0 #D913C4→#D1C #C0DD39→#BD3 #28A086→#298 …

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.