编程拼图和代码高尔夫

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

18
上还是下Wythoff?
首先,让我们谈谈Beatty序列。给定一个无理数正数r,我们可以通过将正整数乘以r并乘以每个结果计算的底数来构造无限序列。例如, 如果r > 1,则有特殊条件。我们可以形成另一个无理数s,即s = r /(r -1)。然后,这可以生成自己的Beatty序列B s。巧妙的技巧是B r和B s是互补的,这意味着每个正整数都恰好在两个序列之一中。 如果我们将黄金比例设置为r = then,则得到s = r + 1和两个特殊序列。该低Wythoff序列为[R : 1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 22, 24, 25, 27, 29, ... 和上部Wythoff序列为小号: 2, 5, 7, 10, 13, 15, 18, 20, 23, 26, 28, …

13
让我来点咖喱
有一个函数f带有参数x 1,x 2,…,x n –即 f:X 1 ×X 2 ×…×X n →Y – currying将f重新定义为带有单个参数a 1的函数,该参数映射到另一个函数。这项技术对于部分应用很有用,例如具有pow我们可以编写的curried 函数exp = pow(e)。 例 假设我们有以下函数f接受三个参数(f:X 1 ×X 2 ×X 3 →Y): def f(a,b,c): return a + b * c 调用此函数将使我们留下f_curry:X 1 →(X 2 →(X 3 →Y)),如果我们现在两次调用该函数,f_curry(1)(2)我们将得到一个h等于以下返回值的函数(): def h(c): return 1 + 2 * c curried函数f可以这样编写(Python …

30
计算范围
挑战: 计算1范围内所有数字的二进制表示形式中的1的数量。 输入: 两个非十进制正整数 输出: 1两个数字之间范围内的所有s 的总和。 范例: 4 , 7 ---> 8 4 = 100 (adds one) = 1 5 = 101 (adds two) = 3 6 = 110 (adds two) = 5 7 = 111 (adds three) = 8 10 , 20 ---> 27 100 , 200 ---> …

11
你能用这些骰子拼写这个单词吗?
字母骰子在文字游戏中很常见。例如,尝试用骰子拼写有趣的单词可能会很有趣。如果您抓一把骰子,则可能无法拼写某些单词。这个挑战是对这一想法的概括。 挑战 给定一个骰子列表,每个骰子至少具有一张面孔和一个单词,您的任务是确定是否可以使用给定的骰子对该单词进行拼写(在这种情况下,它应该返回真实的结果)。每个骰子只能使用一个字母,每个骰子只能使用一次。您不需要使用所有给定的骰子。 例子 在一个简单的示例中,使用骰子[[A],[C],[T]]和字符串CAT,结果为true。BAT当然会返回false,因为上面没有骰子 如果给定[[A,E,I,O,U],[A,B,C,T],[N,P,R]]作为骰子集合,则对于ART,TON和CUR将返回true ,但对于CAT,EAT和PAN则为false,因为这些字符串需要重用骰子。还应该很明显,因为没有足够的骰子,所以不能用这些骰子拼写CRAB。 如果给定[[A,B,C],[A,E,I],[E,O,U],[L,N,R,S,T]]作为骰子集合,则可以拼写CAT,BEE,BEAN,TEA,BEET和BAN,但您将无法拼写LONE,CAB,BAIL,TAIL,BAA或TON 同一骰子可能有多个。如果给定[[A,B,C],[A,B,C],[A,B,C]],您将可以拼写CAB,BAA,AAA等...但是显然没有A的话, B,或C在其中。 规则 没有利用标准漏洞 这是代码高尔夫,因此最短的代码获胜。 您可能会假设单词和骰子都只能由大写字母组成。 您可能会假设该单词的长度始终至少为1个字母,并且始终会有至少1个骰子。 您可能会认为骰子永远不会有多个相同的字母。 输入和输出可以采用任何方便的格式。

8
几乎是哥伦布集
您的任务是在Columbo情节标题中找到两个丢失的角色。 输入值 69个哥伦布剧集标题之一(如下所列),正好两个字符替换为*。 范例: "Ran*om for a *ead Man" 输出量 您可以返回完整的情节标题,也可以仅以任何合理的格式返回两个缺失的字符,前提是字符的顺序是明确的。 一些有效的输出: "Ransom for a Dead Man" "sD" ["s", "D"] 集数 请点击此链接以获取未格式化的列表。 Prescription: Murder Swan Song Murder, Smoke and Shadows Ransom for a Dead Man A Friend in Deed Sex and the Married Detective Murder by the Book An Exercise …

30
以36为基数递增字符串
这是我之前在堆栈上问过的类似问题的代码高尔夫版本,但认为这将是一个有趣的难题。 给定一个长度为10的字符串,该字符串表示一个基数为36的数字,将其加1并返回结果字符串。 这意味着字符串将只包含数字0到9和来信a至z。 Base 36的工作原理如下: 最右边的数字递增,首先使用0于9 0000000000> 9次迭代> 0000000009 然后使用ato z: 000000000a> 25次迭代> 000000000z 如果z需要增加,它将循环回到零,并且左边的数字将增加: 000000010 进一步的规则: 您可以使用大写或小写字母。 您不得丢掉前导零。输入和输出均为长度为10的字符串。 您不需要处理zzzzzzzzzz作为输入。 测试用例: "0000000000" -> "0000000001" "0000000009" -> "000000000a" "000000000z" -> "0000000010" "123456zzzz" -> "1234570000" "00codegolf" -> "00codegolg"

15
功能剪贴板:粘贴
作为2018年5月每月语言活动的一部分,此挑战与MATL语言的某些功能有关。 相关挑战: 功能剪贴板:复制。 介绍 MATL的功能剪贴板将输入(存储到“副本”)存储到最近四个对常规输入函数的调用中。普通函数是MATL中最常见的函数类型。输入接受是指该功能至少接受一个输入。可以将存储的剪贴板内容推入堆栈(“粘贴”)。 此挑战将剪贴板内容作为输入。将假定所有产生剪贴板状态的函数都将一个或多个正整数作为输入。因此剪贴板状态可以用数字列表来表示。(有关如何实际填充剪贴板的更多信息,请参见相关挑战;但这对于当前挑战不是必需的)。 解释剪贴板内容 例子1 第一个内部列表引用最近的函数调用,依此类推,因此剪贴板状态 [[11, 28], [12, 16], [4], [5, 6]] 表示最后的函数调用了两个输入,即11,28; 倒数第二个电话花了投入12,16; 等等(此剪贴板状态由相关挑战的第一个示例中的代码产生)。 例子2 如果没有足够的函数调用,剪贴板中的某些尾部内部列表将为空: [[7, 5], [], [], []] (这是由一个简单地添加7和的程序产生的5)。 例子3 函数调用可以具有任意数量的input,但至少可以是所有输入1(不接受任何输入的函数不会更改剪贴板状态)。因此,以下也是可能的。 [[3], [2, 40, 34], [7, 8, 15], []] 访问剪贴板内容 使用MATL的功能M(顺便说一句,它不是普通功能,而是剪贴板功能)将功能剪贴板的内容压入堆栈。此函数将一个正整数作为输入,并将某些剪贴板内容压入堆栈,如下所示。参考示例1中的剪贴板状态: [[11, 28], [12, 16], [4], [5, 6]] 1M将所有输入返回到最近的函数调用。因此,对于所讨论的例子,它给11,28。 同样,2M,3M和4M所有输入返回到第二,第三和第四最近的函数调用。所以2M给人12,16; 3M给4; 并4M给出了5,6。 …

20
艾菲尔铁塔:从“ A”中创建一个大的“ A”
创建该给多条线路的功能n,使一个bigA。 的水平条bigA必须在中间行,如果n是偶数,则水平条必须在中间的下一行 假设要输出等宽字体 输出应该是一个字符串(或类似的字符数组,例如),具有清晰的换行符以分隔行,并为左填充使用正确的空格(您可以假定\ t为4个空格)。右边可以有任何空格。 例子 n = 1 A n = 2 A AAA n = 3 A AAA A A n = 4 A A A AAAAA A A n = 5 A A A AAAAA A A A A 这是受较小的“ H”创建“ H”的启发

21
数火柴
这里的大多数人都熟悉七段式显示器,它们也用于火柴拼图。下面是数字0通9和信件a通过z,除k,m,t,v,w,写在这个格式。 _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| _ _ _ _ _ _ _ _ _ |_| |_ | _| |_ |_ | |_ | | | …

1
重建我的娃娃娃
背景 一个俄罗斯套娃(或俄语嵌套娃娃)是一组相互匹配的内部娃娃。我不小心弄混了我的俄罗斯套娃娃娃的收藏,我不记得里面有哪个。 目的 给定唯一字符串的列表,将它们分类到嵌套的俄罗斯套娃中。每个字符串是一个单独的玩偶,而俄罗斯套娃则是一个字符串列表。 规则 设min(a,b)字符串a和的字典最小化b。让其a ⊂ b表示a为的子字符串b。然后, 娃的清单必须按字典顺序排序 字符串a可以适合字符串,b如果a ⊂ b 如果a ⊂ b和a ⊂ c,a则将进入内部min(b,c) 如果a ⊂ c和b ⊂ c,但a ⊄ b b ⊄ a,则只有min(a,b)会进入c 如果既a ⊂ c和b ⊂ c,且也a ⊂ b,则只会b进入内部c。即,超级字符串先于子字符串,这样娃就不会过早终止。 例子 In: hahaha, hah, lol, lololol, bahaha, bah, haha, ah Out: bahaha, bah, ah hahaha, haha, …
20 code-golf  string 

9
在保留形状的同时反转列
介绍 假设您有一个整数列表的列表(或者实际上是任何对象,但是为了简单起见,我们坚持使用整数)。列表的长度可能不同,其中一些可能为空。让我们以表格格式编写列表: [[ 1, 2, 3, 4, 5], [ 6, 7], [ 8, 9, 10, 11], [], [12, 13, 14], [15, 16, 17, 18]] 这个表有5个垂直的列中,包含数字1, 6, 8, 12, 15,2, 7, 9, 13, 16,3, 10, 14, 17,4, 11, 18,和5。如果我们反向每一列中,我们得到的名单15, 12, 8, 6, 1,16, 13, 9, 7, 2,17, 14, 10, 3,18, 11, …

7
本地字符串时间段
当地时期 接受一个非空字符串s。所述本地周期的小号在索引我是最小的正整数Ñ,对于每个这样的0≤ķ<N ,我们有S [I + K] = S [I-N + K]每当两侧限定。可替代地,它是一个非空字符串的最小长度瓦特使得如果级联WW被放在旁边小号使得的第二拷贝瓦特开始于索引我的小号,那么这两个字符串同意任何地方重叠。 例如,让我们计算(基于0的)索引2 的s =“ abaabbab”的本地周期。 尝试n = 1:然后s [2 + 0]≠s [2-1 + 0],因此此选择不正确。 尝试n = 2:然后s [2 + 0] = s [2-2 + 0]但s [2 + 1]≠s [2-2 + 1],所以这也不正确。 尝试n = 3:然后未定义s [2 + 0-3],s [2 + 1] …
20 code-golf  string 

30
下一个颜色
挑战 将彩虹视为七种颜色,以字符串表示Red Orange Yellow Green Blue Indigo Violet。 您的任务是创建一个程序,以接收这些颜色之一作为输入,然后依次输出彩虹色。这包括重叠Violet -> Red 输入值 包含一种彩虹色的字符串。 输出量 接下来是彩虹的颜色。 规则 颜色名称区分大小写。它们必须匹配此帖子中包含的大小写。 输入将始终有效。对于无效输入,允许任何行为。 这是代码高尔夫球,因此最短的字节数将获胜! 输入和输出示例 Input -> Output Red -> Orange Orange -> Yellow Yellow -> Green Green -> Blue Blue -> Indigo Indigo -> Violet Violet -> Red

14
这是一个截断的三角形数字吗?
相关OEIS序列:A008867 截断三角数 三角数的一个共同属性是它们可以排列成三角形。例如,取21并排列成os 的三角形: Ø OO oo oo oo oo 让我们定义一个“截断:”从每个角切割相同大小的三角形。截断21的一种方法如下: 。 。。 oo oo 。oo。 。。哦。。 (的三角形.是从原始三角形切出的)。 o剩下12 秒,因此12是一个截断的三角形数字。 任务 您的工作是编写一个程序或函数(或等效函数),该程序或函数采用整数并返回(或使用任何标准输出方法)数字是否为截断的三角形数字。 规则 没有标准漏洞。 输入是非负整数。 切口的边长不能超过原始三角形的一半(即,切口不能重叠) 切口的边长可以为零。 测试用例 真相: 0 1 3 6 7 10 12 15 18 19 虚假: 2 4 5 8 9 11 13 14 16 17 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

21
如何以最少的字节数打印以下格式?
这个挑战的灵感来自这个现已删除的问题。 以一个正整数N作为输入,并输出遵循以下模式的数字为1 .. N 2的矩阵: 在第一行中用1 .. N填充,然后在最后一行(行号N)中用(N + 1).. 2N填充,然后在第二行中用(2N + 1).. 3N填充,并继续直到您填充所有行。 输出格式灵活,因此可以接受列表列表等。 N = 1 1 N = 2 1 2 3 4 N = 3 1 2 3 7 8 9 4 5 6 N = 4 1 2 3 4 9 10 11 12 13 …

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.