编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

30
范围,反向,求和!
给定一个正整数n作为输入,输出n的反向范围和。 反向范围总和的产生方式是:使包含n的范围包括n(从1开始并包括n),将内部的每个数字取反,然后求和。 例: 这是输入10会发生的情况: 范围: [1,2,3,4,5,6,7,8,9,10] 反转:(反转的[1,2,3,4,5,6,7,8,9,01]1个字符本身就是数字,反转的10个数字是01或1) 和: 46 具有3位以上数字的数字与具有2位数字的数字相反。例如,1234变为4321。 测试用例: Input -> Output 10 -> 46 5 -> 15 21 -> 519 58 -> 2350 75 -> 3147 999 -> 454545 可以在这里找到输入999的完整文本案例,这非常感谢@ fireflame241。

20
尚未使用的对
让我们定义一个正整数序列。我们将偶数上的顺序定义为上一项的两倍。序列的奇数索引将是序列中尚未出现的最小正整数。 这是前几个术语。 1,2,3,6,4,8,5,10,7,14,9,18,11,22,12,24,13,26,15,30 您也可以将其视为级联对(n,2n)的列表,其中n是到目前为止最少未使用的正整数。 任务 给定数字n作为输入,请按此顺序计算第n个项。 这是代码高尔夫球,因此您应该以最小化以字节为单位的源代码大小为目标。 OEIS A036552

14
内翻弦
平衡字符串是一串括号,()因此每个括号都可以与另一个匹配。更严格地说,它们是该语法所涵盖的字符串: S → (S)S | ε 我们可以通过以下方式将字符串“由内而外”: 开关的所有事件(,并)互相 将字符从字符串的前面移到后面,直到再次平衡为止。 让我们举个例子。 我们从平衡的字符串开始: (()(())()) 然后我们切换括号 ))())(()(( 然后将字符从字符串的开头移到字符串的后面,直到字符串平衡为止。 ))())(()(( )())(()(() ())(()(()) ))(()(())( )(()(())() (()(())()) 那就是我们的结果! 请注意,有些字符串可以用多种方式内翻,例如字符串 (()()) 从里到外可以是: ()(()) 要么 (())() 但是,每个字符串至少都有一个解决方案。 任务 编写一个程序,以平衡的字符串作为输入并输出,该字符串由内而外。如果可能有多个有效输出,则只需要输出其中之一即可。您可以使用不同的支柱型(<>,[]或{}),如果你愿意的话。 这是一场代码高尔夫竞赛,因此您应力求最大程度地减少以字节为单位的源代码大小。 测试用例 (()()) -> ()(()), (())() (()(())()) -> (()(())()) ((())())() -> (()(()()))

30
帮我洗衣服
救命!我的全自动黑暗照明分离器V3001.01坏了!:( 指导方针 任务 编写一个程序,该程序将以任意数量的字符串(字母L或字母D(代表亮或暗))输入一个数组(或某些语言的列表),并输出包含两个数组的数组,一个与所有的L和一个与所有的D。 规则 这是代码高尔夫,所以最短的答案以字节为单位 输入只会包含大写字母 输出中的L必须与输入中的L数量相同,D的数量相同 输入只能有一个元素(甚至可能有零个元素) 如果一个或两个输出数组不包含任何元素,则输出一个空列表(在某些语言中,这可能意味着您需要输出一个字符串) 始终将第一个数组作为L的数组 输出示例: ["L","D","L","D","D"] -> [["L","L"],["D","D","D"]] ["L","L","L"] -> [["L","L","L"],[]] ["D","D"] -> [[],["D","D"]] [] -> [[],[]]

30
除数的乘积
挑战 给定一个正整数,返回其除数(包括自身)的乘积。 这是OEIS中的序列A007955。 测试用例 1:1 2:2 3:3 4:8 5:5 6:36 7:7 8:64 9:27 10:100 12:1728 14:196 24:331776 25:125 28:21952 30:810000 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜!

6
转置和对角线
对于这个挑战,您应该编写一个程序或函数来输出给定方阵的对角线。但是,如果对解决方案源代码的行和列进行转置,则它应该成为返回矩阵的对角线的程序或函数。继续阅读以了解详细信息... 规则 解决方案的源代码被视为2D字符网格,由您选择的标准换行符分隔(换行,回车或两者结合)。 源代码中的任何一行都不能长于上一行。以下是有效布局的一些示例: ### ### ### ######## ####### ### ### # 这是一个无效布局的示例(因为第三行比第二行长): ###### #### ##### ### 您的两个解决方案应该是彼此的换位,也就是说,您应该通过交换行和列来获得彼此的解决方案。这是两个有效对: abc def ghi adg beh cfi 和 print 10 (~^_^)~ foo bar ! p(fb! r~oa i^or n_ t^ ) 1~ 0 请注意,空格与其他任何字符一样。特别是,尾随空格很重要,因为它们在转置中可能不是尾随空格。 每个解决方案都应该是一个程序或函数,该程序或函数采用一个由一位整数组成的非空方阵作为输入。一种解决方案应输出矩阵所有对角线的列表,而另一种解决方案应输出所有反对角线的列表。您可以使用任何合理,明确的输入和输出格式,但是两种解决方案之间的格式必须相同(这也意味着它们要么必须既是函数,要么是两个程序)。 每个对角线从左上角到右下角,应该从上到下进行排序。 每个对角线从左下角到右上角,应该从上到下进行排序。 计分 为了鼓励解决方案尽可能“方形”,主要分数是解决方案的行数或列数,以较大者为准。越少越好。解决方案中的字符数打破了联系,不包括换行符。同样,少即是好。例: abcd efg h 它及其转置的主要得分为4(因为有4列),并且平局得分为8(因为有8个非换行符)。请在答案的标题中引用这两个值。 测试用例 …

12
代表大数的一般提示
有时,打高尔夫球时,需要在其代码中表示大量数字。照原样写入它们可以大大增加字节数。 您在代码中简洁地表示长数字时有哪些一般的1小技巧? 请为每个答案发布一个提示。 1随着一般,我的意思是可以适用于多单的语言技巧。有关特定于语言的提示,请在各自的主题中发布。
21 code-golf  number  tips 

6
修正我对矩阵列表的表示法,第1部分
有时,我的代码中包含常数矩阵列表: [ [[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]] ] 屏幕空间的使用非常糟糕。我宁愿将它们彼此相邻写: [ [[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]] ] 您会发现这仍然是一个语法上有效的嵌套列表,它不再是矩形,并且具有非常不同的结构(特别是,每当我添加大于1x1的矩阵时,它就会变得更深)。但是,仍然可以从这个新列表中重建矩阵的初始列表。 为了将来能够使用此语法,我需要您编写一些代码,以将以水平排列方式编写的数组转换为它们表示的矩阵列表。 为确保答案不对源代码中的布局执行2D模式匹配,输入将仅作为数组对象给出,或者如果您采用字符串表示形式,则输入将不包含任何空格以指示文字是用代码编写的。因此,您将获得如下输入: [[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, …

23
我的电话号码是de Polignac号码吗?
当且仅当它是奇数并且不能以p + 2 n的形式表示时,该数字才是de Polignac数,其中n是非负整数,p是质数。 任务 编写一些采用正整数并确定它是否为de Polignac数的代码。您可以输出两个不同的值,一个为true,一个为false。您应该努力减少字节数。 测试用例 对于积极的情况,这里是OEIS 1, 127, 149, 251, 331, 337, 373, 509, 599, 701, 757, 809, 877, 905, 907, 959, 977, 997, 1019, 1087, 1199, 1207, 1211, 1243, 1259, 1271, 1477, 1529, 1541, 1549, 1589, 1597, 1619, 1649, 1657, 1719, 1759, 1777, 1783, 1807, …

30
画一个大斜线X
给定一个非负整数,打印出X那么大的整数。X是input的输出0,您将在每个方向上添加等于输入的斜线以扩展X较大的输入。 测试用例 0 X 1个 \ / X / \ 2 \ / \ / X / \ / \ ... 10 \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / X / \ / \ / \ / …

7
后勤地图的奇特魅力
挑战的目的是大约绘制吸引所述的逻辑映射作为其参数的函数[R (也称为分支图),或它的一个子区。在Wikipedia的以下图像中可以看到该图形的外观: 背景 该逻辑映射是一个数学函数,其采用输入X ķ并将其映射到输出X K + 1定义为 x k + 1 = r x k(1− x k) 其中r是映射的参数,假定位于区间[0,4]中。 给定[0,4]中的r以及间隔[0,1]中的初始值x 0,有趣的是将函数重复应用大量N次迭代,从而产生最终值x N。请注意,x N也必将位于[0,1]中。 例如,假设r = 3.2,N =1000。初始值x 0 = 0.01得出x 1000 = 0.5130。对于x 0 = 0.02,结果为x 0 = 0.7995。对于任何其他初始值x 0,最终值x 1000都非常接近0.5130或0.7995。在图中将其视为水平位置r = 3.2 处的两条线的高度。 这并不意味着对- [R = 3.2的每个序列收敛于这两个值中的一个。实际上,对于上面考虑的两个初始值,序列为(请注意振荡行为): x 0 …

3
当生活给你柠檬时,做柠檬水
挑战 您将得到一个输入字符串,任何地方的话"Lemon"是发现它应转换到"Lemonade" ,但是在a,d和e在句子中必须借用了别的地方。 例 输入示例: 我小时候发现一个柠檬 示例输出: 我小时候就喝柠檬水 该柠檬水是由从原来的偷下标字母创建 我foun d柠檬水WH é ñ我是一个孩子 这只是一个可能的输出示例,“ e”,“ d”和“ a”可以从任何地方获取(当然单词除外lemon) 评论 •如果,或s 不足e,则必须输出给定字母可进行的操作。例如,输入将输出adbdblemonbblemond • lemon文本可能并不总是独立的(两边都有空格)。例如,您可能lemons在输入中的某处有单词,而输出应为lemonades •输入可以包含任意数量的lemons,甚至0 lemons(在这种情况下,输出将与输入相同) •您可以用大写和小写字母来制作您的柠檬水,例如leMon可以变成leMonade,而ade借用可以是任意大小写(因此也可以变成leMonADe)。您借用的信件的大小写必须保持与借用时相同。(示例输入->输出,he hAD lemOn-> h h lemOnADe) •不必是一个完整的程序,仅一个功能就可以。 •您可以假设输入仅是CP437字符集 高尔夫代码 这是代码高尔夫球,因此赢得最少的字节数! 伪测试案例 *注意:对于任何给定的输入,可能会有多个可能的输出,因此您的程序可能无法完全按照这些测试用例的方式输出,这仅仅是为了使人们可以理解逻辑: 输入:EpaD leMons 输出:p LeMonaDEs 输入:hello world 输出:hello world 输入:柠檬柠檬 输出:柠檬柠檬 *(本e,a,d字母不应该从另一个“柠檬”拍摄) 输入:HE HAD柠檬水 输出:HH …
21 code-golf  string  code-golf  parsing  internet  stack-exchange-api  code-challenge  kolmogorov-complexity  restricted-source  brain-flak  python  logic  pyth  code-golf  string  search  optimized-output  code-golf  tips  language-design  golfing-language  code-golf  tips  language-design  code-golf  number  sorting  pi  code-golf  math  number  code-golf  string  balanced-string  classification  brain-flak  code-golf  math  number-theory  decision-problem  code-golf  tips  code-golf  number  sequence  code-golf  balanced-string  brain-flak  code-golf  math  sequence  arithmetic  fibonacci  code-golf  math  parsing  code-golf  string  keyboard  code-golf  code-golf  string  source-layout  whitespace  code-golf  math  rational-numbers  code-golf  string  code-golf  string  code-golf  math  sequence  code-golf  number  floating-point  code-golf  string  decision-problem  subsequence  code-golf  string  kolmogorov-complexity  code-golf  string  permutations  balanced-string  brain-flak  code-golf  string  math  number  code-golf  string  primes  cipher  code-golf  string  ascii-art  chemistry  code-golf  ascii-art  grid  counting  code-golf  math  arithmetic  integer  code-golf  number  kolmogorov-complexity  code-golf  ascii-art  kolmogorov-complexity  sequence  metagolf  brain-flak  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  whitespace 

20
我的[sub]字符串隐藏了!
介绍 不久前,一个迷失的SO用户在这里发布了一个问题,现在将其删除了,但我认为这将是一个很好的挑战,所以就在这里... 挑战 编写一个包含两个字符串并检查第一个字符串的任何排列是否为第二个字符串的子字符串的完整程序或函数。 输入项 两个字符串,一个字符串和一个子字符串进行测试(您可以选择顺序)。 输出: 如果字符串包含子字符串的任何排列,则为真实值。 如果字符串不包含子字符串的任何排列,则为falsey值。 该测试区分大小写。 示例/测试用例 sub-string string input d!rl Hello World! output truthy input Pog Programming Puzzles & Code Golf output falsey input ghjuyt asdfhytgju1234 output truthy

2
有理分解a = xyz(x + y + z)
写功能x(a),y(a)并z(a)使得对任何理性a 所有函数返回有理数和x(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a。您可以假设≥0。 只要程序在数学上是合理的,就不需要在程序中使用有理类型或运算。例如,如果您在答案中使用平方根,则必须表明其自变量始终是有理数的平方。 如果您的语言繁琐或不存在函数,则可以编写三个命名函数x,y,z或编写三个程序。或者,您也可以编写一个返回三个数字x,y,z的程序/函数。最后,如果您愿意,可以输入/输出有理数作为一对分子/分母。您的得分是三个函数或三个程序的总大小(以字节为单位)。分数最低者获胜。 不允许强行强制。对于任何a = p / q,其中p,q≤1000,您的程序应在10秒内运行。 一个例子(这并不意味着您的分解必须给出这些数字): x = 9408/43615 y = 12675/37576 z = 1342/390 x*y*z*(x+y+z) = 1

18
产生一支足球队!
以尽可能少的字节数生成以下足球队ASCII艺术作品。 |.| |.| |.| |.| |.| |.| |.| |.| ]^[ ]^[ ]^[ ]^[ ]^[ ]^[ ]^[ ]^[ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ {<| 8 |>}{<| 6 |>}{<| 1 |>}{<| 3 |>}{<| 7 |>}{<| 5 |>}{<| 4 |>}{<| 2 |>} \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ …

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.