Questions tagged «code-golf»

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

12
圆交集区
说明: 给定x和y两个圆的位置radii,输出两个圆的相交面积。 输入: 您将获得以下输入: array 1 = x and y positions of circle a array 2 = x and y positions of circle b radius = radii of the two congruent circles 输入法 : ([12 , 20] , [20 , 18] , 12) ---> two array and number ([12 , …

15
我的指数潜力是多少?
我们将正整数M的N指数势定义为M N的前缀,即完美N幂。 的整数的前缀是所有与第一个,在基座10例如解释为数字开始数字的连续子序列,的前缀2744是2,27,274和2744。 如果存在整数K使得K N = P,则前缀P是完美的N次方。例如,81是理想的4幂,因为3 4 = 81。 给定两个严格的正整数中号和Ñ,计算Ñ的-exponential电位中号根据上述定义。 例如,2的-exponential电位13是3,因为13 2是169,和1,16和169都是完美的正方形。 测试用例 自然地,输出几乎总是很小的,因为幂是...很好...指数增长的函数并具有多个完善的幂前缀是很少见的。 M, N -> Output 8499, 2 -> 1 4, 10 -> 2 5, 9 -> 2 6, 9 -> 2 13, 2 -> 3
14 code-golf  math  number 

11
帮我弹小号
该喇叭是有阀管乐器仪器,一般在投B♭。当演奏者振动嘴唇以置换乐器内部的空气时,将发出声音。这种振动是通过以一种特定的方式张口而获得的,这种方式被称为“囊袋”。嘴唇更紧或更松的不同囊袋会产生不同的音高。 此外,小号中的每个气门也会改变乐器的音高。按下时,阀门会关闭乐器管内的路径,使空气流经更长的路径,从而降低原始声音的音调。为了应对这一挑战,我们将考虑标准B♭喇叭,其中第一个阀门将螺距降低整步,第二个阀门将螺距降低半步,第三个阀门将螺距降低一个和一个。半步。 挑战 您面临的挑战是创建一个程序或函数,给定两个输入embouchure和valves,确定要弹奏的音符的音高。 出于此挑战的目的,注释将遵循以下顺序: B♭, B, C, C♯, D, E♭, E, F, F♯, G, G♯, A. 规则 可以通过任何合理的方法进行输入/输出。 标准漏洞。 您可以使用b和#代替♭和♯,如果你想。 的输入valves可以作为低压阀列表(1, 3)或布尔值列表(1, 0, 1)的形式。 这是代码高尔夫球,因此每种语言中最短的代码将获胜。 测试用例: Valves 在这些测试用例中以布尔值列表的形式给出,其中0表示被压低,1表示被压低。 Embouchure: Valves: Output: B♭ 0 0 0 B♭ B♭ 0 1 0 A B♭ 1 0 1 F C♯ 0 0 …
14 code-golf  music 

1
正则表达式为9的倍数
描述一个可以识别9的倍数的有限状态机很容易:跟踪数字总和(mod 9)并添加下一个接受的数字。这样的FSM只有9个状态,非常简单!通过FSM可识别性和常规语言之间的等效性,存在一个9的倍数的正则表达式。但是,任何此类正则表达式都可能……非常……长。与之类似,可能约为千兆字节。 在https://www.quaxio.com/triple/上有一个有效的示例,可用于3的倍数。在页面底部,作者提供了一种“手动优化”的解决方案,该解决方案比原始转换要短一些。 FSM到正则表达式。 挑战: 您必须制作一个正则表达式来检测9的倍数。由于这种正则表达式预计会很长,因此我要求您提供一个可以打印正则表达式的程序。(如果您真的想提供一个完整的正则表达式,也许将其放在其他位置并在此处链接!) 您必须能够告诉我们您程序输出的准确字符数-因此,只有在程序运行得足够快的情况下,才可以尝试尝试一定长度的所有正则表达式,直到找到有效的正则表达式,这是不可接受的运行它完成并给我们最终的正则表达式长度! 当然,点是用于具有最短的输出正则表达式,而不是基于程序长度。由于正则表达式是我要的“程序”,并且在这里方便地传输太长了,因此我仍在标记此代码高尔夫球。 规则: 输入将仅包含匹配的字符[0-9]*。 您的正则表达式应匹配 9的倍数,但不能匹配其他任何东西。并非完全由数字0-9组成且为无效输入的案例可以根据需要匹配或失败。 考虑到DFA易于识别的动机,所得的正则表达式实际上必须是更具理论性的术语中的正则表达式,也就是说,仅是封闭正则语言的运算符。确切地说,唯一允许的事情是: 文字,字符范围([ab],[a-f],[^k]),Kleene星(*),锚(^和$),通过括号分组,在交替(|),可选术语(?),一个或更多的术语(+),向前看符号((?=)),负向前看符号((?!)), lookbehinds( (?<=)),负lookbehinds( (?<!)),条件(如在https://www.regular-expressions.info/conditional.html - (?(?=test)then|else)),和有界长度的反向引用(见下文)。 那些东西例子不是不允许的: 任意长度的后向引用,前向引用,递归,子例程,循环结构,可执行代码,任何'eval'变体或用于将字符串转换为算术值的内置结构。 可以显示具有有限长度绑定字符串的反向引用是可以接受的,因为它们可以以有限状态存储并且不会改变语言的规则性。例如,正则表达式(..2.[3-5])4\1.\1是可以接受的,因为捕获组上有绑定长度\1。这是常规建筑。之类的构造(2*)0\1是不可接受的,因为捕获的组无法以有限状态存储。 您的正则表达式可以随意接受或拒绝带有多余前导零的整数。但是,"0"必须接受该字符串。

18
查找相关的数字分组
最近,我的声誉是25,121。我注意到每个数字分组(即用逗号分隔的数字)都是一个完美的正方形。 您的挑战是,给定一个非负整数Ñ和一元布尔黑匣子功能 ˚F:ž * → 乙,如果每个值产生truthy值˚F施加到的数字分组Ñ是truthy,和falsey否则。 您可以通过从右侧开始将数字分成3组来找到数字分组。最左边的组可以有1位,2位或3位数字。一些例子: 12398123 -> 12,398,123 (3 digit groupings) 10 -> 10 (1 digit grouping) 23045 -> 23,045 (2 digit groupings) 100000001 -> 100,000,001 (3 digit groupings) 1337 -> 1,337 (2 digit groupings) 0 -> 0 (1 digit grouping) 附加规则 此函数可以映射到布尔值(例如true和false),1s和0s或任何true / falsey值。请指定您的答案支持的格式。 您可以采用整数作为输入,也可以采用整数字符串(即由数字组成的字符串)。 您可以编写程序或函数。 将数字组传递给函数f时,应修剪所有不必要的前导零。例如,当f应用于N …

9
验证循环差异集
循环差集是一组具有唯一属性的正整数: 令其n为集合中的最大整数。 让r是(在该组不是必需的)的任何整数大于0但小于或等于n/2。 让k是解决方案的数量来(b - a) % n = r这里a和b是一组的任何成员。每个解决方案都是有序对(a,b)。(还要注意n,与许多语言的实现不同,此版本的模通过加负数使负数为正。) 最后,当且仅当这是一个循环差集时,的值k才取决于您对的选择r。就是说,所有的值都r为上述一致性提供相同数量的解。 可以通过以下示例进行说明: Cyclic difference set: {4,5,6,8,9,11} 0 < r <= 11/2, so r = 1,2,3,4,5 r=1: (4,5) (5,6) (8,9) r=2: (4,6) (6,8) (9,11) r=3: (5,8) (6,9) (8,11) r=4: (4,8) (5,9) (11,4) since (4-11)%11=(-7)%11=4 r=5: (4,9) (6,11) (11,5) 的每个值都r具有相同数量的解,在这种情况下为3,因此这是一个循环差集。 输入值 输入将是一个正整数列表。由于这是一个set属性,因此假设输入未排序。您可以假定n至少为2,尽管k可能为零。 …

12
从回文子串中缝合回文
给定一个字符串l,找到所有回文子p的l(包括重复和单一字符串)。接下来,将所有子字符串重新排列p为有效回文(可能有多个正确答案)。如果不可能重新排列p为单个回文,则您的程序可能具有不确定的行为(错误,堆栈溢出,退出,John Dvorak的挂起/过早杀害等)。 例子 有效的测试用例 l = anaa p = ['a', 'n', 'a', 'a', 'aa', 'ana'] result = anaaaaana or aanaaanaa or aaananaaa l = 1213235 p = ['1', '2', '1', '3', '2', '3', '5', '121', '323'] result = 1213235323121 l = racecar p = ['r', 'a', 'c', 'e', 'c', 'a', …

9
查找本地最大和最小值
定义 给定函数的最大值和最小值是在给定范围内或在函数的整个域内的函数的最大值和最小值。 挑战 面临的挑战是使用任何您喜欢的方法来找到给定多项式函数的局部最大值和最小值。不用担心,我会尽力解释这一挑战,并使其尽可能简单。 输入将按幂的降序或升序(由您决定)包含单个变量多项式的所有系数。例如, [3,-7,1] 将代表 3x2 - 7x + 1 = 0 [4,0,0,-3] 将代表 4x3-3=0. 如何解决(使用导数)? 现在,假设我们的输入是[1,-12,45,8],但仅是函数。x3 - 12x2 + 45x + 8 第一项任务是找到该函数的导数。由于它是多项式函数,因此确实是一项简单的任务。 的导数是。存在的任何常数项都将简单地相乘。同样,如果有添加/减去的项,则它们的导数也要分别添加或减去。请记住,任何恒定数值的导数均为零。这里有一些例子:xnn*xn-1xn x3 -> 3x2 9x4 -> 9*4*x3 = 36x3 -5x2 -> -5*2*x = - 10x 2x3 - 3x2 + 7x -> 6x2 - 6x …

14
生成给定大小的所有平方子矩阵
您将得到一个整数M和另一个正整数n的方阵,严格小于M的大小。您的任务是生成大小为M的所有平方子矩阵 n。 出于此挑战的目的,正方形子矩阵是M中包含的一组相邻行和列。 输入/输出格式 您可以自由选择任何其他合理的格式,这些只是一些示例。 输入值 本机矩阵类型的矩阵(如果您的语言有一种) 2D数组(1D数组的数组,每个数组对应于一行/一列) 一维数组(因为矩阵始终为正方形) 字符串(您选择了空格,但请勿以任何方式滥用此字符串),等等。 输出量 矩阵矩阵。 4D数组,其中每个元素(3D列表)代表行/列上的子矩阵。 3D数组,其中每个元素(2D列表)代表一个子矩阵。 所得子矩阵的字符串表示形式,等等。 眼镜 您可以选择采取大小的中号输入了。保证至少为2。 输出的方向是任意的:您可以选择将子矩阵输出为列列表或行列表,但是选择必须一致。 您可以使用任何编程语言进行竞争,并且可以通过任何标准方法接受输入并提供输出,同时请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此每种语言的最短提交(以字节为单位)将获胜。 例 给定n = 3和M: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 可能的3x3子矩阵为: + ------- + + -------- + 1 2 3 …

4
沙漏的底部
挑战: 输入:三个整数:底边长度;沙粒的起始量;指数 输出:根据给定的底边长度和沙粒量,以给定的索引输出沙漏底部的状态。 挑战规则: 我们用数字1-9模拟沙粒 我们将当前剩余的沙粒数量放在中间的顶部,然后在您选择的单个字符之后(不包括数字,空格和换行符;即-),将其放在下面的行中 沙漏填充时,我们每行填充一次,一次填充一位 当沙子可以向左或向右移动时,我们总是向右移动(对于平衡沙漏上方沙粒的剩余量也是如此) 当我们到达9点时,它已经装满了,我们再也无法在沙漏中的那个特定位置放沙子了 剩下的沙粒数量也总是正确对齐 一旦沙漏的下半部分完全填满,或者剩下的沙粒数量达到0,我们就无法进行进一步操作,这将是此点之后所有索引的输出 允许使用0索引或1索引,请指定您在答案中使用的内容。 尾随和前导空格以及一条尾随或前导新行是可选的 如果您选择显示沙漏,则可以使用其他任何字符(而不是零)来填充沙漏底部的空白区域(不包括数字,换行符或用作颈部的字符)。 底边长度将始终为奇数 底边长度将为>= 3; 和沙粒的数量>= 0 如果需要,还可以打印所有状态,直到并包括给定索引 您可以假设(0索引)索引永远不会大于沙粒的总量(因此,当有100粒沙粒时,索引100是最大的有效索引输入)。 第一个索引(0表示0索引; 1表示1索引)将输出一个空的沙漏,上面带有一些沙粒。 示例:图片(或ascii-art)说了一千多个单词,所以这里有一个示例: 输入底边长度:5 输入沙粒数量:100 在这里显示所有步骤,而不是当前索引: 输出具有底边长度5和沙粒量的所有可能指标100: 100 - 0 000 00000 99 - 0 000 00100 98 - 0 000 00110 97 - 0 000 01110 96 - …

14
比较两个列表的最大值
给定两个不同的非负整数列表,返回最大值最大的列表(例如[4, 2], [3, 3, 1] -> [4, 2])。 如果它们都具有相同的最大值,则返回包含此最大值更多实例的列表(例如[4, 2, 4], [4, 3, 3, 3, 1, 3] -> [4, 2, 4])。 在这些比较之后,如果它们相等,则进行相同的比较,但使用下一个最高的项目(例如[2, 3, 4, 4], [4, 4, 3, 3, 1] -> [4, 4, 3, 3, 1])。 在所有这些比较之后,如果仍然认为它们相等,则输出较长的列表(例如[4, 3, 2, 1, 0], [1, 2, 3, 4] -> [4, 3, 2, 1, …

16
Mod 2多项式系数
quintopia在这里发布了计算多项式系数的挑战(此处的某些文本是从此处复制的)。有一个有趣的算法可以计算系数2的多项式。 给定数字列表k 1,k 2,...,k m,输出多项式系数的余数: 降低模2.下列算法并此有效地:对于每个ķ 我,计算的二进制展开ķ 我,即,找到一个IJ,使得每个一个IJ是1或0和 如果存在j使r≠s 的rj = a sj = 1,则相关的mod 2多项式系数为0,否则mod 2多项式系数为1。 任务 编写一个程序或函数,该程序或函数采用m个数字k 1,k 2,...,k m,并输出或返回相应的多项式系数。如果需要,您的程序可以选择将m作为附加参数。 这些数字可以按喜欢的任何格式输入,例如分组到列表中或以一元编码或其他方式输入,只要多项式系数的实际计算是由您的代码执行的,而不是由编码过程执行的。 如果多项式系数为奇数,则输出可以为任何真值,如果多项式系数为偶数,则输出可以为任何假值。 不允许设计用于计算多项式系数的内置函数。 有标准漏洞。 计分 这就是代码高尔夫:以字节为单位的最短解决方案获胜。 例子: 为了找到7、16和1000的多项式系数,我们对它们分别进行二进制扩展: 由于没有列具有不超过1的列,因此多项式系数是奇数,因此我们应该输出真实值。 为了找到7、16和76的多项式系数,我们对它们分别进行二进制扩展: 由于76和7的二进制扩展均为4,因此多项式系数为偶数,因此我们输出了falsey值。 测试用例: Input: [2, 0, 1] Output: Truthy Input: [5,4,3,2,1] Output: Falsey Input: [1,2,4,8,16] Output: Truthy Input: [7,16,76] …

15
生成合计为目标值的组合
挑战 假设您有一个数字列表和一个目标值。查找所有数字组合的集合,这些组合的总和等于目标值,并将它们作为列表索引返回。 输入输出 输入将采用数字列表(不一定是唯一的)和目标求和数字。输出将是一组非空列表,每个列表包含对应于原始输入列表中值位置的整数值。 例子 Input: values = [1, 2, 1, 5], target = 8 Output: [ [0,1,3], [1,2,3] ] Input: values = [4.8, 9.5, 2.7, 11.12, 10], target = 14.8 Output: [ [0,4] ] Input: values = [7, 8, 9, -10, 20, 27], target = 17 Output: [ [1,2], …

7
他们可以是一周中的同一天吗?
挑战 给定一个非负整数,输出是否可以将两个日期(公历的日期)相差多少年以共享一周中的某一天。如果将年份除以4但不能除以100,或者将其除以400则认为是a年。 输出可能是: 虚假/真实(任一方向) 任何两个不同的值 一个独特的价值,另一个价值 通过程序返回码 通过成功/错误 通过任何其他合理的方式-请问您是否怀疑这可能会引起争议 但是,除了假/真实(因为这将允许不操作!)外,不是按两个不同的值集进行操作 详情 这是输入是否为OEIS序列A230995的成员。 成员: 0, 5, 6, 7, 11, 12, 17, 18, 22, 23, 28, 29, 33, 34, 35, 39, 40, 45, 46, 50, 51, 56, 57, 61, 62, 63, 67, 68, 73, 74, 78, 79, 84, 85, 89, 90, 91, …

6
搭配醒目的时钟
介绍: 在家里,我们有一个时钟,每小时都会敲定一个既定数量的时钟,但也每半小时敲一次。因此,从0:01到12:00(包括12:00)按以下顺序进行: 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12 挑战: 给定一个整数n,输出一个总罢工等于的时间范围列表n。此外,请务必在该时间范围之前至少1分钟开始,并在此时间范围之后至少1分钟(最多29分钟)结束。 例如,如果输入为n=8,则输出可能为: [00:59-03:01, 01:29-03:31, 02:59-04:01, 05:29-06:31, 06:29-07:01, 06:59-07:31, 07:59-08:01] 对于这些时间范围,它们的总和如下8: [1+1+2+1+3, 1+2+1+3+1, 3+1+4, 1+6+1, 1+7, 7+1, 8] 挑战规则: 输出灵活。您可以输出为时间(或日期/日期时间)对象,时间戳记,字符串(带或不带前导零),带.29/ .31/ .59/的小数.01(即0.29-3.01代替00:29-03:01)等。只要清楚,它就在时间范围的前后。 此外,您可以自己选择金额。在我的所有示例中,我使用1分钟,但您也可以选择5分钟,15分钟等。这也意味着您可以使用.4/ .6/ …

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.