编程拼图和代码高尔夫

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

28
这些标识符是否等效?
在Nim语言中,用于区分标识符的规则比大多数其他语言稍微宽松一些。如果两个标识符遵循以下规则,则它们是等效的或寻址相同的变量: 两者的第一个字符相同 (区分大小写) 两个字符串相同(壳体在敏感)除去后的所有实例的字符-和_ 挑战 编写一个程序/函数,该程序/函数接受两个表示Nim标识符的字符串,并根据上述规则是否等效来输出真值或假值。 技术指标 适用标准I / O规则。 标准的漏洞被禁止。 字符串将仅包含ASCII可打印内容。你并不需要检查它是否是一个有效的标识符。 字符串可以作为两个单独的输入,字符串列表等(您知道练习) 空字符串无需处理。 真值和假值的输出必须一致。 挑战不是要找到所有语言中最短的方法,而是要找到每种语言中最短的方法。 除非另有说明,否则您的代码通常以UTF-8编码形式以字节计分。 允许执行此任务的内置函数,但鼓励使用不依赖内置函数的解决方案。 鼓励甚至对“实用”语言进行解释。 测试用例 Input Output count, Count falsey lookMaNoSeparator, answer falsey _test, test falsey test, tset falsey aVariableName, a_variable_name truthy numbers_are_cool123, numbersAreCool123 truthy symbolsAre_too>_>, symbols_areTOO>> truthy 未引用的参考实现 这是用Nim编写的。 import strutils, re proc sameIdentifier(a, …

30
我的价值在哪里?
我的老板现在要我实现一种机制,使他可以搜索数组中的项目,并为他提供该值所在的索引。 你的任务: 编写一个程序或函数,该程序或函数接收一个数组和一个值(字符串,整数,浮点数或布尔值),并返回出现该值的数组的索引(0或1索引,以您喜欢的为准)。如果该值不在数组中,则返回一个空数组。 输入: A中可能存在或不存在的数组A和值V。 输出: 包含V在A中出现的索引的数组,如果V在A中不出现,则为空数组。 测试用例: 请注意,测试用例基于0。 12, [12,14,14,2,"Hello World!",3,12,12] -> [0,6,7] "Hello World", ["Hi", "Hi World!", 12,2,3,True] -> [] "a", ["A",True,False,"aa","a"] -> [4] 12, [12,"12",12] -> [0,2] 得分: 这是代码高尔夫球,因此以字节为单位的最低分数获胜。

16
矩阵的行/列中是否有N个连续出现的数字?
以包含正整数和单个正整数N的矩阵A作为输入,并确定矩阵中的任何行或列中是否至少有N个连续的相同数字出现。 您只需要水平和垂直测试。 测试用例 N = 1 A = 1 Result: True ---------------- N = 3 A = 1 1 1 2 2 3 Result: True ---------------- N = 4 A = 1 1 1 2 2 3 Result: False ---------------- N = 3 A = 3 2 3 4 2 …

30
方形如何结束?
在BASE-10,所有的完全平方结束0,1,4,5,6,或9。 在基地-16,所有完全平方结束0,1,4,或9。 Nilknarf在这个答案中描述了这是为什么以及如何很好地解决这个问题,但是我还将在这里给出简短的描述: 当对以10为底的数字N进行平方运算时,“个”数字不受“十”个数字或“百”个数字等的影响。只有N中的“一位”数字会影响N 2中的“一位”数字,因此找到N 2的所有可能最后数字的一种简便(但可能不是最高尔夫)方法是为所有0 <= n找到n 2 mod 10 < 10。每个结果都是可能的最后一位数字。对于Base-m,您可以找到对于所有0 <= n < m n 2 mod m。 编写一个程序,当输入为N时,输出以Base-N为单位的理想平方的所有可能的最后一位数字(无重复)。您可能会假设N大于0,并且N足够小以至于N 2不会溢出(如果可以一直测试到N 2,我会给您有限的布朗尼点,但您知道布朗尼点对实际点的汇率是无穷大)。 测试: Input -> Output 1 -> 0 2 -> 0,1 10 -> 0,1,5,6,4,9 16 -> 0,1,4,9 31 -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28 120 -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105 这是代码高尔夫球,因此适用标准规则! (如果您觉得这太容易了,或者您希望在这个主题上有一个更深入的问题,请考虑以下问题:二次方残基测试的最小基数覆盖率)。

4
在公园种树-尽快!
这个挑战的灵感来自这个程序。测试用例是从该应用程序借用的。 这是最快的代码挑战,目标是在最短的时间内解决最大的测试案例。提供了一些较小的测试用例,以便人们可以更快地测试其算法。 您将得到一个正方形的输入网格,尺寸为n×n,其中9 <= n <= 12。该网格将被划分为n个区域,其中每个区域的单元格都有一个唯一的标识符(我将在文本中使用al中的小写字母,但您可以选择任意值,例如整数1-12) 。 输入可能看起来像这样(可选输入格式): aabbbbbcc adddbbbcc adeeecccc adddefgcc hhhdifggg hdddifffg hhhiifffg hihiifffg iiiiiiggg 或者,更容易可视化: 挑战: 您将根据以下规则在该公园中放置2 * n棵树: 每列应有2棵树,每行应有2棵树 所有区域都必须有2棵树。 垂直,水平或对角线的任何树都不能与另一棵树相邻 上面布局的解决方案是: 注意:每个难题只有一个解决方案 附加规则: 输入和输出格式是可选的 例如,输出可能是索引列表,带有1/0的网格(指示在该位置是否有树)或输入的修改版本(其中指示了树) 执行时间必须是确定的 该程序必须在@isaacg的计算机上完成1分钟 规格:4个CPU,i5-4300U CPU @ 1.9 GHz,7.5G RAM。 如果您的程序无法在一分钟内解决两个最大的测试用例,那么第二大的测试时间(n = 11)将作为您的分数。您将失去解决最大案例的解决方案。 测试用例: 如果提交似乎是针对这些测试用例定制的,那么我可以编辑此列表。 12乘12: --- Input --- aaaaabccccdd aaaaabccccdd …

4
分类四边形| 帮助我进行数学考试!
救命!我的数学考试即将上线,我没有学习!1考试的一部分是根据给定的顶点坐标对四边形进行分类,但不幸的是,我不知道该怎么做。2 因此,您面临的挑战是编写一个程序来为我执行此操作,这样我就不会失败! 挑战 给定四个顶点(其中三个顶点都不共线),确定由这四个顶点形成的四边形的最具体分类。 我所说的“最具体的分类”是即使所有正方形都是矩形,但如果形状是正方形,则应指出它是正方形而不是长方形。 输入值 输入将以四个(x,y)坐标给出。您可以将它们作为长度为4的列表/长度为2的元组的列表。或者,也可以将输入作为x坐标的列表和各个y坐标的列表。 例如,如果我的形状具有点顶点(0, 0),(5, 0),(6, 1),和(1, 1),你可以选择采取输入任一下列格式或类似的东西: [(0, 0), (5, 0), (6, 1), (1, 1)] ([0, 5, 6, 1], [0, 0, 1, 1]) 您可以假设四边形不是自相交的,并且点以正确的顺序给出(即,输入中的两个连续点将由四边形中的线段连接)。 输出量 以下四边形的每一个类别都需要一个唯一的输出: 广场 长方形 菱形 平行四边形 梯形/梯形 风筝 四边形 这可能是确切的名称本身,一个字符,一个整数等。 规则 适用标准漏洞 如果您的编程语言具有将执行此确切任务的内置程序,则不允许该内置程序。 允许使用内置函数查找两点之间的距离。 允许使用内置函数查找两条线之间的角度。 此时,如果您知道所有术语,就可以开始编程了!(测试用例在最后) 术语 本节适用于需要澄清不同形状定义的任何人。 广场 当且仅当四边形的所有边长相等且每对相邻边垂直(即,既是矩形又是菱形)时,四边形才是正方形。 长方形 …

30
我是一个自构数字吗?
自守数字是一个以10为底的正方形后缀的数字。这是OEIS中的序列A003226。 你的任务: 编写程序或函数以确定输入是否为自守数字。 输入: 0到10 ^ 12(含)之间的整数,可以是也可以不是自守数字。 输出: 真/假值,指示输入是否为自变形数。 例子: 0 -> truthy 1 -> truthy 2 -> falsy 9376 -> truthy 8212890625 -> truthy 得分: 这是代码高尔夫,以字节为单位的最低得分获胜。

30
适当的除数混搭
甲适当除数是一个除数的数的Ñ,这是不Ñ本身。例如,12的适当除数是1、2、3、4和6。 您将得到一个整数 X,X ≥2,X≤1000。您的任务是将2到x(含)的整数的所有最高适当除数求和(OEIS A280050)。 示例(带有x = 6): 找到2到6(含)之间的所有整数:2,3,4,5,6。 从所有数字中获取适当的除数,然后从每个数字中选择最高的除数: 2-> 1 3-> 1 4-> 1,2 5-> 1 6-> 1,2,3。 对最高除数进行求和:1 + 1 + 2 + 1 + 3 = 8。 最终结果是8。 测试用例 输入| 输出量 ------- + --------- | 2 | 1个 4 | 4 6 | 8 8 | …

13
使用线条图字符绘制数独板
这是代码高尔夫。对于这个挑战,我将接受一个方法(您不需要完整的程序),但是方法签名确实计入字节数,并且我想查看完整的签名(不是lamdba)。该方法的输入是具有81个元素的整数数组。该方法的输出/返回值是一个字符串,该字符串将数组表示为ASCII数独板。 如果您使用的是深奥的语言或某种绝对没有方法的语言,则可以进行调整,但是如果该语言完全支持此功能,我希望看到实际上可以将某种东西插入“真正的”非高尔夫程序中,即使方法身体本身​​就是一种痛苦。该要求不是要阻止Jelly或05AB1E之类的语言,而是要使Java之类的语言更容易构建对该平台有意义的内容。 对于输入,整数值1-9应该具有明显的含义。应始终将0解释为空白单元格。您也可以将1-9范围以外的任何内容解释为空白单元格,但这不是必需的。从数组到拼图的位置从左上角开始,并从左到右填充每一行,然后再移动到下一行。 对于盒子,我希望在外部和每个3x3区域之间使用双线,在其他单元格之间使用单线。这些字符应使用线描字符绘制(如果您的I / O格式将字符串表示为字节序列而不是字符序列,则应以众所周知的编码(例如UTF-8或代码页347)表示它们。 对于这个挑战,我不是要您生成数独难题。这是功能的输入。我不是要你解决难题。我只是想让您产生一个字符串来“绘制”您所得到的(尽可能少的字节)。 输入示例: 数组的值: { 8, 5, 0, 0, 0, 2, 4, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 2, 3, 0, 5, 0, …

6
更有效的美国州代码
缩写为美国州!虽然很有趣,但是我们了解到在当前系统中很难有效地缩写美国州名。让我们提出一种替代性的状态代码方案,以提高高尔夫效率。 你的任务: 编写一个函数(或程序),给定一个有效的美国州名(仅需要50个正常状态),并以大写形式返回唯一的两个字母的代码来标识它。该代码必须满足以下要求: 首字母必须与州的首字母相同。 第二个字母必须是状态的其他字母之一(不能为空格)。 它必须始终为相同的输入提供相同的输出,并且绝对不能为两个不同的有效输入提供相同的输出。 例如,给定“阿拉巴马州”,您的函数可以返回“ AL”,“ AA”,“ AB”或“ AM”-只要它不为阿拉斯加,阿肯色州等中的任何一个返回该值。之所以只能使用“”,是因为状态名称中多次出现“ A”。) 禁止使用标准漏洞。标准输入/输出还可以。这是代码高尔夫,所以最短的解决方案(以字节为单位)获胜。 可能的输入的完整列表在这里: Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Maryland Massachusetts Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada New Hampshire New Jersey New Mexico New York …
20 code-golf  string 

22
简化矩阵输入!
我已经写了一些与矩阵有关的挑战,所有的共同点是在示例和测试用例中,我在表示矩阵时都使用了以下格式: 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 在许多语言中,这可能是繁琐的格式。 挑战: 编写一个程序/函数,该程序/函数可以采用顶部给出的形式的矩阵作为输入(直接从本文中复制/粘贴),并在下面显示的所有其他三种常规格式上输出相同的矩阵。 输入格式: 用不同数量的空格分隔的数字和代表行的换行符(请参见测试用例)。 数字之间的空格数不能保证是一致的。但是,您可以假设每列的最后一位数字对齐(如果有帮助的话)。 整数和浮点数都可以,它们可以是正数,负数或零。矩阵不会同时包含整数和浮点数。 您可以假设数字不超过10个字符,包括负浮点数的负号和小数点。 您可以假设每行和每列中的条目数相同。 不会有任何空的输入矩阵,但是可以有单个数字,或者只有一行或一列的矩阵。 在这些情况下,您可以在测试用例中显示的输出格式之间进行选择 如果程序/函数是直接从此帖子中复制并粘贴到解释器中的,则必须处理该输入(STDIN或作为函数参数或等效参数)。您可能在矩阵的前面和/或后面都有自己喜欢的东西(方括号,引号,括号),但是您必须将矩阵视为不能更改的字符序列(包括换行符)。 澄清一下:假设您的函数/程序被调用f,矩阵为: 1 -2 3 5 6 7 那么您可以像这样将矩阵作为函数参数(以及无限多个其他选项): f(1 -2 3 5 6 7) f([1 -2 3 5 6 7]) f("""1 …

18
会重复吗?
如果一个字符串包含两个相等的连续子字符串,则重复该字符串。 例如,连续2034384538452重复3845两次,因为它包含两次。 因此,您面临的挑战是确定字符串是否包含重复的子字符串。您可以将输入作为字符串或字符数组。 您将永远不会收到空的输入,并且子字符串的长度(如果存在)可能为1或更大。 我使用1和0这里作为我的真实和虚假价值观,但您可以使用其他值,只要它们在您的语言中是真实和虚假的即可。 例子: abcab -> 0 bdefdefg -> 1 Hello, World! -> 1 pp.pp/pp -> 1 q -> 0 21020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021012102012101202102012021012102012021020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020120210201210120210201202101210201210120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120 -> 0 (最后一个示例是从Thue-Morse序列中每个零之间的一的数量产生的)

9
乱码!
给定一个字符串作为输入,输出该字符串的一个或多个变体,使得: 没有字符在其原始位置 没有与该字符原本相邻的字符相邻的字符 您可以假设,对于给定的字符串,这将始终是可能的,并且仅包含单写字母字符([a-z]或者[A-Z]您愿意) 请注意,相同字符的重复项不被视为唯一。 例如,给定输入programming,输出不能m在第7个或第8个字符处包含a,并且不能g在第4个或第11个字符处包含a (索引为1) 例: 拿弦 abcdef 以下是有效的输出: daecfb 但是,以下内容将无效:fdbcae在本示例中c,b它们仍然相邻。 邻接还包装,这意味着你不能做fdbeca的f和a仍在相邻。 测试用例: 请注意,这些不是给定输入的唯一有效输出 撰写为input -> output: helowi -> ioewhl mayube -> euabmy stephens -> nhseespt aabcdeffghij -> dbfhjfigaeca 得分: 这是代码高尔夫球,因此每种语言中最少的字节会获胜!

7
它是一个循环数吗?
循环数是“ n”个数字,乘以1、2、3,... n会得到相同的数字,但顺序不同。 例如,数字142,857是循环数,因为142,857 x 2 = 285,714、142,857 x 3 = 428,571、142,857 x 4 = 571,428,依此类推。给定整数输入,如果输出真值,则输出真值,如果输出真值,则输出假值,从而确定其是否为循环数。 另外,要清楚一点,输入中可以包含前导0:例如0344827586206896551724137931 这是因为,如果数字上不允许前导零,则142857是十进制中唯一的循环数字。 因为它是代码高尔夫球,所以最短答案以字节为单位!

20
打印变量名称
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 编写一个函数(不是完整的程序),以便如果使用单个全局变量(或您的语言最接近的等效变量)作为参数调用该函数,则该函数将输出(即打印或返回)该变量的名称。如果参数不是变量,则输出false值。(您不必处理参数是变量而不是全局变量的情况。) 函数调用和函数定义之间不得存在编译时连接(值得注意的是,函数定义不能是宏或类似的构造,该构造或构造以文本或抽象语法树的形式接收源代码的文字片段形式的参数形成)。也就是说:在支持单独编译的语言中,即使函数调用先被编译(不了解函数定义,但可能是类型签名或等效形式),程序也必须运行,然后再编译函数定义。如果该语言没有单独的编译,则仍然必须在调用和定义之间进行类似的分离。 如果使用编译语言,则可以从磁盘读取完整程序的编译形式,并且可以假定该程序是使用调试信息编译的。(因此,允许通过将调试器从程序附加到其自身而起作用的解决方案。) 请注意,并非每种语言都可能完成此任务。 例子: var apple = "Hello" p(apple) // apple var nil = "Nothing" p(nil) // nil var SOMETHING = 69 p(SOMETHING) // SOMETHING function foo(){} p(foo) // foo p(3.14159) // false p(function foo(){}) // false

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.