编程拼图和代码高尔夫

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

10
主要因素伙伴
给定一个整数N > 1,输出素数分解与素数分解相同的所有其他数字N。 例如,如果为N = 117,则输出必须为[279, 939, 993, 3313, 3331],因为 117 = 3 × 3 × 13 因此,现有的数字是1,3,3和3我们有 279 = 3 × 3 × 31 939 = 3 × 313 993 = 3 × 331 3313 = 3313 3331 = 3331 这些是唯一可能的其他数字,因为这些数字的其他组合会产生非素数整数,而这不是素数分解的结果。 如果N是任意的117,279,939,993,3313或3331,然后输出将包含五个其他数字:他们是首要因素好友。 您不能使用前导零来获取素数,例如,对于N = 107,它的唯一伙伴是701(017不考虑)。 输入和输出 输入和输出伙伴必须以十进制为基础并返回。 N将始终严格大于1。 只要只包含伙伴和分隔符/列表语法元素,就可以相当自由地格式化输出。 …

20
塑形的艺术
塑形的艺术 给定一个二进制矩阵和一个字母字符串,用该字符串的字母从左到右替换矩阵中的所有1。一旦字母形成矩阵的形状,就打印矩阵,用空格替换0。仅举一两个例子可能会更容易。 案例:基本案例... 输入一: [0,0,1,0,0] [0,1,0,1,0] [1,0,0,0,1] [0,1,0,1,0] [0,0,1,0,0] "PPCGPPCG" 输出一: P P C G P P C G 情况:如果输入字符串长于一个字符串... 输入二: [1,0,0] [0,1,0] [1,0,1] lambda 输出二: l a m b 情况:如果输入字符串短于一个数字... 输入三: [1,1,1] [1,0,1] [1,1,1] PPCG 输出三: PPC G P PCG 可用假设 您可能会假设输入字符串永远不会为空。 您可能会假设矩阵永远不会为空。 您可能不会假定二进制矩阵永远不会全为零。 规则 如果字符串短于一个,则重复该字符串;否则,请重复该字符串。所有的都必须更换。 如果字符串长于一个,则仅使用所需的字符串。 您可以使用True / …

30
用给定的宽度绘制空心的#
我从Codingame那里获得了这一挑战,并且对比我的更好的解决方案感到好奇: 通过标准输入给定宽度,在给定的宽度和长度上绘制一个空心的#号正方形。 例: 5结果 ##### # # # # # # ##### 我用python解决了这个问题,所以我对其他python代码特别感兴趣。但是,请随时以所需的任何语言发布您的解决方案。
21 code-golf  string  ascii-art  number  code-golf  grid  code-golf  string  ascii-art  code-golf  alphabet  cipher  code-golf  math  number  code-golf  quine  code-golf  palindrome  polyglot  code-golf  number  array-manipulation  counting  logic  code-golf  string  primes  binary  decision-problem  code-golf  ascii-art  kolmogorov-complexity  popularity-contest  code-golf  probability-theory  code-golf  string  code-golf  python  polyglot  programming-puzzle  c++  code-golf  math  code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

22
简化连续分数
连续分数是迭代描述分数的表达式。它们可以用图形表示: 或者它们可以表示为值列表: [a0; a1, a2, a3, ... an] 挑战: 取一个基数:和一个分母值列表:并将连续分数简化为简化的有理分数:分别返回或打印分子和分母。a0[a1, a2, a3, ... an] 例子: √19 : [4;2,1,3,1,2]: 170/39 ℯ: [1;0,1,1,2,1,1]: 19/7 π: [3;7,15,1,292,1]: 104348/33215 ϕ: [1;1,1,1,1,1]: 13/8 示例实现:(python) def foo(base, sequence): numerator = 1 denominator = sequence[-1] for d in sequence[-2::-1]: temp = denominator denominator = d * denominator …

7
我编程拼图,il代码高尔夫
背景 意大利定冠词(相当于英语的)有七个不同的形式:L”,IL,卤味,GLI,我,拉,乐。使用哪一个取决于三个变量: 性别:男性/女性。 数字:单数/复数。 后继单词的首字母:元音/ A型辅音/ B型辅音。 元音是以下任何一种:aeiou。 辅音类型B是任何这些情况中:S-后跟另一个辅音,Z-,GN- ,pn结,PS-,x轴,异接着元音(此我充当半元音)。 类型A的辅音不是类型B的辅音。 下表显示了上述三个变量的十二种组合中的每种将使用的商品形式。请注意,l'形式附加在后面的单词上,并带有单引号和空格。 挑战 输入一个单词和一个或两个表示性别和数字的字符串,数字或布尔值。(必须从输入的单词中获取首字母)。 输入的单词将是一个小写的ASCII字母序列。重音元音将被其非重音版本代替(例如,realtà将作为realta输入)。 性别和数字输入可以是单独的数字,布尔值或字符串,也可以是字符串的组合数(例如,男性单数为1,女性单数为2,等等)。 只要在答案中指定,任何合理的格式和分隔符都可以使用。 输出单词,并冠以相应的文章形式,并根据需要添加空格或单引号。输出也应该是小写。允许尾随空格或前导空格。 打高尔夫,最短的胜利。 测试用例 在我使用的输入字母下面m,f指定性别和s,p对数(这只是一个可能的输入格式)。 Input Output Comment macchina f s la macchina Initial letter is cons. A zio m s lo zio Initial letter is cons. B libri m p i libri Initial …

2
重叠圆的边界
给定一个平面上几个点的坐标,以及围绕每个点的圆的半径,绘制代表圆和圆相交的边的多边形。直边将始终沿圆-圆相交线落下,但可能不会遵循这些线的全长。 根据mbomb007的建议,想象一下2D肥皂泡的行为。这在技术上是错误的,因为肥皂泡总是会以120°的角度相遇以最大程度地减少能量,而这些圆圈可能会以任何角度相遇。 这是一个Voronoi图,减去定义的平面。谢谢Andreas。这实际上是称为功率图的Voronoi图的一般化。 例子 例如,给定两个点和两个半径,输出可能如下所示: 添加另一个点和半径,输出可能如下所示: 输入项 您可以根据需要构造输入。请通过以下输入发布结果。 测试1 x:10,y:10,r:10 x:25,y:12,r:8 测试2 x:8,y:10,r:6 x:20,y:8,r:4 x:18,y:20,r:12 输出量 输出应为图形,并应包含多边形边界,但不需要其他任何内容。点和交点不需要像示例中那样表示。 约束条件 另一个圆的半径内将不存在任何点。 标准的代码高尔夫规则。 没有漏洞的答案将不被接受,但请随时尝试。

18
解压一些数字
您的任务是创建一个程序或函数,该程序或函数生成长度为10行的拉链。拉链的每一行用两个破折号表示--: -- -- -- -- -- -- -- -- -- -- 程序/功能将以一个百分比(可被10整除)作为输入,并且输出将是从顶部按百分比解压缩的拉链(破折号)(破折号),显示1索引的最低水平重复2次,并所有先前的级别重复4、6、8 ...等。次,同时保持拉链的底部居中。 例子 >>10% -11- -- -- -- -- -- -- -- -- -- >>50% -1111111111- -22222222- -333333- -4444- -55- -- -- -- -- -- >>100% -11111111111111111111- -222222222222222222- -3333333333333333- -44444444444444- -555555555555- -6666666666- -77777777- -888888- -9999- -10- 输入(百分比)可以根据自己的喜好进行格式化(50%、. 5、50、5 [隐含零]等),并且始终在0到100的范围内,并可以被10整除。示例必须保留在输出中。

2
如何为问题大小可变的挑战评分?
只要这些问题是特定且可回答的,元数据就可以将挑战性写作问题作为主要话题,在元数据上有相当大的支持。但是,我们还没有任何此类问题,因此我认为自己会进行测试。这个问题可能进入了良好的主观,错误的主观领域,但是我认为这可能是挑战写作问题。为了确保它们仍能生成高质量的内容,请不要在答案中仅张贴疯狂的投机想法。说明为什么他们避免以下提到的问题,或者理想情况下指出过去已经成功使用建议的技术的现有挑战。 对于某些优化挑战,设置挑战的一个自由参数是要优化问题的大小。“优化挑战”不是指我们最快的代码类型,通常要求答案是准确的/最佳的,并且挑战是根据固定的问题大小或可以处理的最大问题大小来评分的在固定的时间内。我的意思是明确地提出挑战,在这种情况下,甚至允许甚至根本不可能解决潜在问题,而且目标是尽可能做到最好。 为了确定起见,请考虑繁忙的海狸挑战,尽管原则上也适用于没有已知最佳解决方案的其他挑战类型(我在这里仅使用繁忙的海狸,因为它们加剧了下面提到的问题)。说,我想挑战如何找到最繁忙的Brainfuck海狸。繁忙的海狸问题中的free参数是代码的大小。如果不以某种方式引用代码大小,就无法应对挑战。从某种意义上说,问题大小参数的每个值N都会带来一个单独的挑战(难度越来越大)。我的主要问题是如何在不遇到平衡问题的情况下使这样的挑战起作用。 显而易见的解决方案是修复N:“找到一个终止的Brainfuck程序,N其中包含源代码字节,该程序输出尽可能多的字符/运行尽可能多的滴答声。” 这有巨大的平衡问题:如果我挑体型太小,有人可能会很快找到了最繁忙的海狸,挑战已经结束。如果我选择的尺寸太大,最佳解决方案将在终止之前打印出天文数字的字符,这意味着找到这样的程序可能很简单,并且挑战变得耐心/琐事—这也留给了可以通过编程方式找到繁忙的海狸,相反,人们将需要开始正式证明其结果,但很多人可能并不觉得这很有趣。当然,由于最佳解决方案的增长,此问题在繁忙的海狸挑战中比其他类型更为明显,但它仍然适用于其他挑战。 下一个选项将N不受限制,并通过某些功能使其成为评分的一部分。即使对于“正常”挑战,要想正确地实现总分的平衡也是非常困难的,但是在繁忙的海狸中,由于最佳解决方案的增长速度快N于任何可计算的功能,从根本上讲是根本不可能的。这意味着我总是可以通过选择足够大的N位置来击败现有的最佳答案,在这里我可以轻松找到运行时间如此之久的程序,这样我就可以在不付出太多努力的情况下获得更好的成绩。 我还考虑过设置一个固定值,N并允许人们也提交较大的海狸,N这些海狸将用作后续的决胜局。这有一个类似的问题,即某人可以“碰巧找到一个同样好的忙碌的海狸” N,从而创建一个平局,然后将几乎所有内容提交给下N一个容易找到大分数的人(即使找到该大比分也是如此)。最佳分数越来越难)。在这些情况下,您将如何使用同一解决方案与多个人打交道?禁止它在最佳情况下也会很奇怪。 也许可以通过合理地进行有根据的猜测,N然后要求在(例如)5个字节以内的所有大小的繁忙海狸中找到中间立场,N以便在两个方向上都有一些回旋余地(然后将〜10分相加一项或多项技术合并为一个)。这也不太令人满意,因为我最初的猜测N可能仍远远超出提出有趣挑战的范围。 TL; DR:在挑战是(不能最佳地解决和)优化大小可变的问题的情况下,如何将大小合并到挑战中?理想情况下,我希望人们能够以N接近于易处理尺寸范围上限的值工作。但是,以防万一,事实证明,最佳解决方案是可行的,N如果稍大一点的解决方案N开始占上风,那将是一个很好的选择,这样挑战就可以以更大的问题规模继续进行。

10
斐波那契分解
斐波那契数 斐波那契数字的开头为f(1) = 1和f(2) = 1(其中有些包括,f(0) = 0但这与挑战无关。然后,对于n > 2,f(n) = f(n-1) + f(n-2)。 挑战 您的任务是找到并输出n可以表示为斐波纳契数的乘积的第-个正数。您可以选择使其更适合0索引或1索引,但您必须在答案中指定它。 另外,您的答案必须在合理的时间内计算出第100个项。 测试用例 n result corresponding product (for reference) 1 1 1 2 2 2 3 3 3 4 4 2*2 5 5 5 6 6 2*3 7 8 2*2*2 or 8 8 9 3*3 …

30
输出“适合”数字
“适合人数” 山姆有一个“聪明”的压缩想法!你能帮我吗? 这是Sam压缩方案的简要说明。首先采用严格小于2 ^ 16的任何自然数的基数10表示形式,并将其写为没有任何前导零的二进制字符串。 1-> 1 9-> 1001 15-> 1111 13-> 1101 16-> 10000 17-> 10001 65535-> 111111111111111 现在,用一个零替换一个或多个零的任何组。这是因为这个数字越来越少了。您的二进制字符串现在将如下所示。 1-> 1-> 1 9-> 1001-> 101 15-> 1111-> 1111 13-> 1101-> 1101 16-> 10000-> 10 17-> 10001-> 101 65535-> 111111111111111-> 111111111111111 现在,您将二进制字符串转换回以10为基数的表示形式,并以任何可接受的格式输出。这是您的测试案例。第一个整数表示输入,最后一个整数表示输出。请注意,有些数字不会改变,因此可以称为“适合” 1-> 1-> 1-> 1 9-> 1001-> 101-> 5 …

6
确定挑战是否值得回答
我是一个非常随意的代码高尔夫球手,并且直到他们出现在StackOverflow上的“热网络问题”侧栏中之后,才经常看到他们。通常,我迟到了游戏,并且由于我所知道的唯一语言是Python,所以我的回答毫无意义,因为已经有多个Python答案。您的挑战是弄清楚一个问题是否值得我回答。 输入: 您的代码(函数或程序)将带有一个输入参数 i 输出: 问题ID的真值或假值i。如果问题的答案超过5个,问题分数大于3,并且在Python中回答一个或更少,则输出Truthy(版本之间没有区别)。 规则/说明: 输入格式可以是任何合理的格式(stdin,文件,命令行),但应在答案中指定。数据类型和前导/尾随空格无关紧要。 假设问题ID对有效codegolf.stackexchange.com。 忽略特定于语言的问题要求。(即,如果一个问题满足投票要求和答案,并且没有Python答案,因为它仅是Java,则仍然会产生Truthy)。 如果在帖子的第一条换行符之前的任何位置出现“ python”(区分大小写),则该回答为Python回答。 这是代码高尔夫,因此以字节为单位的最短代码获胜。 样品盒* id = 79082 => True id = 78591 => False (less than 5 answers, also hella hard) id = 78410 => True id = 76428 => False (greater than 1 Python answer) id = 78298 => …

3
随机化测试
我是老师,几天后我必须给学生考试。现在,我一直担心最可爱的学生在作弊时会受到最不可爱的学生的伤害,所以我想对考试进行随机化处理,以便没人能欺骗任何人。 现在,我的测试以这种格式保存: When was Java invented? Why does this matter? 1941 War was beginning None of the above What is the increment operator in Java? Stack Overflow>how 2 incrememnt Google>how 2 incrememnt increment ++ 也就是说,问题用单个空白行分隔,并且答案都以两个空格开头。这是我需要的输出: What is the increment operator in Java? ++ increment Google>how 2 incrememnt Stack Overflow>how 2 …
21 code-golf  random 

23
除数减少
数字n的除数是将n平均除的任何数字,包括1和n本身。除数d(n)是一个数有多少个除数。这是前两个n 的d(n): n divisors d(n) 1 1 1 2 1, 2 2 3 1, 3 2 4 1, 2, 4 3 5 1, 5 2 6 1, 2, 3, 6 4 我们可以从一个数字中反复减去除数的数量。例如: 16 = 16 16 - d(16) = 16 - 5 = 11 11 - d(11) = 11 - …

3
排列平方根
在数学上,阶数n的置换 σ是从整数1 ... n到其自身的双射函数。此清单: 2 1 4 3 表示置换σ,使得σ(1)= 2,σ(2)= 1,σ(3)= 4,σ(4)= 3。 置换σ的平方根是一个置换,当应用于自身时,得出σ。例如,2 1 4 3具有平方根τ = 3 4 2 1。 k 1 2 3 4 τ(k) 3 4 2 1 τ(τ(k)) 2 1 4 3 因为对于所有1≤k≤n,τ(τ(k))= σ(k)。 输入项 由n > 0个整数组成的列表,都在1到n之间(包括1和n),表示一个排列。排列将始终具有平方根。 只要输入和输出一致,就可以使用0 ... n-1列表。 输出量 排列的平方根,也作为数组。 限制条件 您的算法必须在n的多项式时间内运行。这意味着您不能只遍历所有n!n阶排列。 …

14
找出最大为1s的矩形
背景 我想购买一块土地并在上面建造房子。我的房子应该是矩形的,并且要尽可能大。但是,可用的地块上有很多我无法建立的岩石区域,因此在地块上安装潜在的房屋时遇到了麻烦。我希望您编写一个程序为我分析情节。 输入输出 您的输入是矩形2D数组,其大小至少为1×1,且采用任何合理的格式。数组代表一块土地;1s是可以建造房屋的“好”区域,s是无法建造房屋0的“多岩石”区域。 您的输出应为1输入数组中s 的实心矩形的最大面积。它代表了我可以在该地块上建造的最大房屋的面积。请注意,如果1输入中没有,则输出为0。 例 考虑输入 101 011 111 1s 的最大矩形是右下角的2×2矩形。这表示正确的输出是4。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 0 -> 0 1 -> 1 00 00 -> 0 01 10 -> 1 01 11 -> 2 111 010 111 -> 3 101 011 111 -> 4 0111 1110 1100 -> 4 1111111 …

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.