编程拼图和代码高尔夫

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

21
列总和
给定非空数字行的非空列表,请计算按列和,这是另一个具有最长输入行长度的列表。输出列表的第一个条目是输入行的所有第一个整数的总和,第二个是所有第二个元素的总和(如果有)等。我认为以下示例将对此进行更好的解释: Input: {[1,2,3,4],[1],[5,2,3],[6,1]} Computation: [1,2,3,4] + . . . [1]. . . + + + . [5,2,3]. + + . . [6,1]. . = = = = Output: [13,5,6,4] 测试用例 {[0]} -> 0 {[1],[1,1,1,1]} -> [2,1,1,1] {[1],[1,2],[1,2,3],[1,2,3,4]} -> [4,6,6,4] {[1,6,2,-6],[-1,2,3,5]} -> [0,8,5,-1]

5
生活是迷宫:我们学会走路之前走错了路
输入: 包含以下字符的迷宫: -- (水平墙); | (垂直墙); + (连接); (步行空间); I (入口); U (出口)。 即输入看起来像这样: +--+--+--+--+--+--+--+--+--+--+ I | | | + +--+--+--+ + + + +--+ + | | | | | | +--+--+--+ +--+--+ + + +--+ | | | | | + +--+--+ + +--+--+ +--+ + | | …

26
数字总和斐波那契
我们都熟悉斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 但是,相反,f(n) = f(n-1) + f(n-2)我们将对前2个条目进行数字求和。 序列应仍以开头0, 1,之后差异会迅速显现。此列表的索引为0,也可以使用索引为1的状态。 f(0) = 0 f(1) = 1 f(2) = 1 # 0 + 1 f(3) = 2 # 1 + 1 f(4) …

15
输出HTML颜色
16色CGA调色板(也称为HTML色)是早期图形适配器使用的16种颜色的集合。这项挑战的目标是以十六进制格式(RRGGBB)按照十六进制值的升序输出所有16个字符,并以换行符分隔。因此,输出应该完全是这样: 000000 000080 0000FF 008000 008080 00FF00 00FFFF 800000 800080 808000 808080 C0C0C0 FF0000 FF00FF FFFF00 FFFFFF 允许使用一条尾随的换行符,但不是必需的。

9
Büidans
挑战很简单:编写一个程序或函数,当给定一个有限的非负整数时,该程序或函数将输出一个嵌套数组。 规则 您的代码必须为每个 0≤n≤2 31的整数生成唯一的有效嵌套数组。 必须在此范围内输出每个带有最多16个方括号的嵌套数组。(这并不意味着您的代码永远不会输出带有超过16个方括号的嵌套数组。) 您的代码可能会输出嵌套数组的字符串表示形式,而不是实际数组(带或不带逗号)。 一种可能的映射: 0 -> [] 1 -> [[]] 2 -> [[[]]] 3 -> [[], []] 4 -> [[[[]]]] 5 -> [[[], []]] 6 -> [[[]], []] 7 -> [[], [[]]] 8 -> [[], [], []] 9 -> [[[[[]]]]] etc. 计分 这是code-golf,因此以字节为单位的最短代码获胜。

21
产生随机排列
挑战说明 序列的“排列”是一种排列,其中没有元素出现在其原始位置。例如,ECABD是的排列ABCDE,但CBEDA不是: ABCDE | | <- B and D are in their orignal positions CBEDA 给定一个序列,生成它的随机排列。 笔记 您可以将字符串作为输入或元素(整数,字符,对象...)的数组/列表 无需返回新对象,而是可以通过交换其元素来修改现有对象 每次错序产生的可能性均等 您可以假设序列中有多个元素,并且没有一个以上元素出现

8
脆弱的奎因
脆弱的奎因 脆弱的quine是满足通过删除单个字符来组成每个子字符串的属性的quine,在评估时会产生错误。 例如。如果您的程序asdf是木盒,那么它就很脆弱,以下程序必须出错: sdf adf asf asd 您的程序(及其所有子字符串)必须是完全确定性的,并且必须使用相同的语言。就此挑战而言,即使最终未产生错误,陷入无限循环(即无法终止)的程序也被视为“产生错误”。 存在标准漏洞,包括通常的quine限制(例如,无法读取自己的源代码)。 例如,print("foo")不是脆弱的。所有这些子字符串必须出错: rint("foo") pint("foo") prnt("foo") prit("foo") prin("foo") print"foo") print(foo") print("oo") print("fo") print("fo") print("foo) print("foo" 不会出错的是: print("oo") print("fo") print("fo") 因此它并不脆弱。 关于藜的重要说明 通过协商一致,任何可能的奎纳必须满足以下条件: 必须有可能识别程序的一部分,该部分对程序的不同部分进行编码。(“不同”表示两个部分出现在不同的位置。) 此外,木盒不得直接或间接访问其自身的源。 例 由于我认为JavaScript的function#toString是“正在读取其自身的源代码”,因此我不允许这样做。但是,如果我不想禁止它,那么这是JavaScript中的一个脆弱的方法: f=(n=b=`f=${f}`)=>(a=(n)==`f=${f}`,n=0,a)&(n!=b)?b:q 测试仪 这是一个程序,在给定程序源代码的情况下,它会生成所有必须出错的程序。 let f = (s) => [...Array(s.length).keys()].map(i => s.slice(0, i) + s.slice(i + 1)).join("\n"); let …
30 code-golf  quine  code-golf  date  code-golf  sequence  code-golf  sorting  file-system  code-golf  code-golf  ascii-art  hexagonal-grid  code-golf  string  arithmetic  code-golf  code-golf  code-challenge  source-layout  code-golf  ascii-art  cellular-automata  code-golf  string  arithmetic  balanced-string  code-golf  number  primes  code-golf  ascii-art  hexagonal-grid  code-golf  string  code-golf  string  code-golf  sequence  code-golf  ascii-art  code-golf  conversion  hexadecimal  code-challenge  restricted-source  code-golf  math  grid  code-golf  string  ascii-art  code-golf  random  minesweeper  code-golf  ascii-art  kolmogorov-complexity  board-game  scrabble  code-golf  ascii-art  code-golf  math  number-theory  decision-problem  code-golf  string  code-golf  natural-language  code-golf  internet  stack-exchange-api  code-golf  code-golf  conversion  code-golf  string  code-golf  math  arithmetic  code-golf  string  whitespace  code-golf  graphical-output  internet  code-golf  string  code-golf  string  random  permutations  code-golf  string  code-golf  string 

30
我叫什么名字?
注意:获奖答案将在17年4月12日选定,当前获奖者为Jolf,1个字节。 令我感到惊讶的是,我们在此站点上还没有遇到我的中间名挑战。我做了很多搜索,但一无所获。如果这是一个重复项,请照此标记。 你的挑战 解析一个看起来像的字符串Jo Jean Smith并返回Jean。 测试用例 Input: Samantha Vee Hills Output: Vee Input: Bob Dillinger Output: (empty string or newline) Input: John Jacob Jingleheimer Schmidt Output: Jacob Jingleheimer Input: Jose Mario Carasco-Williams Output: Mario Input: James Alfred Van Allen Output: Alfred Van (从技术上讲,最后一个是不正确的,但是要解决这个问题太难了。) 笔记: 名称将始终至少包含2个以空格分隔的部分,中间没有无限的中间名,或者可以是字符串列表/字符串数组。 名称可能包含字母(不区分大小写)和-(0x2d) 您可以输出尾随换行符。 您可能需要输入才能包含尾随换行符。 允许从STDIN,函数参数或命令行参数输入,但不允许对其进行硬编码。 …
30 code-golf  string 

13
北经北经东南
给定一串N,S,E和W,输出方位角(以度为单位从北方顺时针旋转的角度),精确到小数点后5位。 在传统的指南针表示法中,字符串仅由其中两个字符组成(例如NNW或ESE)。在这里,您还必须接受包含所有4个字符串(例如WNNNSE)。仅使用2个符号即可使人们直观地理解其含义。允许使用4个符号使阅读变得很恐怖,但是允许以较短的方式描述给定精度的轴承。 (正如user2357112的注释中指出的那样,事实证明您可以证明对于任何给定方位,4符号字符串的长度将与2符号字符串的长度完全相同,因此我将这一挑战基于错误的假设。希望这种缺乏实际用途不会损害您对挑战的享受...) 确切的方法如下所述,并且等效于传统的表示法(它在其上进行扩展而不是对其进行更改)。 输入项 输入是仅包含字符的单个字符串NESW。 如果您愿意,输入可以是一个字符序列,前提是该输入不包含任何预处理。例如,[N, [E, [S, [W]]]]不允许使用嵌套列表来帮助处理顺序。 不允许使用其他字符。您不能使用1234代替的字符串NESW。 输出量 输出必须是十进制数字或一的字符串表示形式(不是有理数/分数)。 不需要显示尾随零。如果方位角是9.00000,则输出9也算作正确的小数点后5位。 输出范围为[0,360)。也就是说,包括0但不包括360。 通过将输出四舍五入到小数点后五位来检查正确性。如果轴承为0.000005,则四舍五入为0.00001。输出0.00001和0.000005都是正确的。 对于某些输入,以科学计数法表示的输出是可以接受的。例如,1e-5代替0.00001。 转换次数 单字符罗盘点N,E,S,和W分别对应于0,90,180,以及270度。 将其中之一添加到字符串会导致方位将单个字符的方位和原始弦的方位一分为二。 选择两个可能的平分轴承中最接近的一个,以便NE代表45度,而不是225度。 除了要平分的角度为180度的地方,这是明确的。因此NS,SN,WE,和EW对应于未定义的轴承,以及输入将永远不会在任何这些结束。但是,它们可能会出现在输入字符串的任何其他位置,因为这不会引起歧义。 如果最后两个字符相同,则最后一个字符将是多余的,因为二等分将返回相同的方位。由于这没有为表示法添加任何内容,因此您的代码无需处理。因此NN,EE,SS,和WW对应于未定义的轴承,以及输入将永远不会在任何这些结束。但是,它们可能会出现在输入字符串的其他任何地方。 例子 N: 0 E: 90 S: 180 SE: halfway between S and E: 135 NSE: halfway between N and SE: 67.5 NNSE: halfway between N and NSE: …
30 code-golf 

5
整数,集合!
您的任务是将从1到的整数N(作为输入)组装成一个具有宽度W和高度的矩形H(也作为输入提供)。单个数字可以旋转90度的任意倍数,但是它们必须在矩形中显示为连续的块。也就是说,您不能将其中一个数字分解为多个数字并将这些数字分别放置在矩形中,也不能将数字的三个数字弯曲到一个角上。您可以考虑每个数字都是用来建造墙的砖头。 这是一个例子。说您的输入是(N, W, H) = (12, 5, 3)。一种可能的解决方案是: 18627 21901 53114 为了清楚起见,这里有此网格的两个副本,一个副本隐藏了一位数字,而另一个副本隐藏了两位数字: 1#### #8627 2##01 #19## ##11# 53##4 如果矩形不能以独特的方式再次拆卸,那就很好。例如,在上面的示例中,12也可以这样放置: ##### 18627 21#01 ##9## ##11# 53##4 规则 您可以假定它N是正W*H数,并且与整数从1到N包含在内的位数匹配,并且存在将矩形平铺到给定数字中的情况。我目前尚无证据证明这是否总是可能的,但是如果您愿意,我会对此感兴趣。 输出可以是单个换行符分隔的字符串,也可以是字符串列表(每行一个),也可以是一位整数列表的列表(每个单元格一个)。 提交的结果必须是确定的,并且您应该能够在合理的台式机上在一分钟之内处理所有测试用例。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 除了第一个,这些都不是唯一的。每个测试用例N W H后面都有一个可能的输出。当矩形太窄而无法水平书写较大的数字时,请确保您的答案有效。 1 1 1 1 6 6 1 536142 6 2 3 16 25 34 …

29
讨厌/爱的难题
挑战说明 在这一挑战中,我们仅将love和hate视为情感。如果我们想表达一种有序的感觉表达N,我们将在这两者之间交替(以开头hate): order | expression 1 I hate it. 2 I hate that I love it. 3 I hate that I love that I hate it. 4 I hate that I love that I hate that I love it. 每个正整数都遵循该模式N。给定N,输出命令的对应感表达N。 笔记 .表达式末尾的句号()是强制性的, 尾随空格和前导空格(包括换行符)是允许的, 非正数或非整数N的输出未定义, 这是一个代码挑战,所以请使您的代码尽可能短!
30 code-golf  string 

22
根据Stern-Brocot序列输出第n个有理数
所述的Stern-Brocot序列是一个Fibonnaci样序列,其可被构造为如下: 用初始化序列 s(1) = s(2) = 1 设置柜台 n = 1 追加s(n) + s(n+1)到序列 追加s(n+1)到序列 递增n,返回到步骤3 这等效于: 除其他特性外,斯特恩-布罗克序列可用于生成每个可能的正有理数。每个有理数将只生成一次,并且始终以最简单的形式出现。例如,1/3是序列中的第4个有理数,但当量数2/6,3/9等等都不会出现。 如上所述,我们可以将第n个有理数定义为r(n) = s(n) / s(n+1),其中s(n)第n个Stern-Brocot数是。 您面临的挑战是编写一个程序或函数,该程序或函数将输出使用Stern-Brocot序列生成的第n个有理数。 上面描述的算法是1索引的;如果您输入的内容是0索引,请在答案中说明 所描述的算法仅用于说明目的,可以按照您喜欢的任何方式(硬编码除外)导出输出 可以通过STDIN,功能参数或任何其他合理的输入机制进行输入 输出可以是STDOUT,控制台,函数返回值或任何其他合理的输出流 输出必须是形式为的字符串a/b,其中a和b是Stern-Brocot序列中的相关条目。不允许在输出之前评估分数。例如,对于input 12,输出应该为2/5,而不是0.4。 不允许出现标准漏洞 这是代码高尔夫球,因此最短答案(以字节为单位)将获胜。 测试用例 这里的测试用例是1索引的。 n r(n) -- ------ 1 1/1 2 1/2 3 2/1 4 1/3 5 3/2 6 2/3 …

29
交错串
灵感。*我不敢相信我们之前没有遇到过这样的挑战: 任务 给定一个或多个可打印的ASCII字符串,通过从每个字符串中取出一个字符来循环插入它们,直到出现字符不足。如果字符串先于其他字符用完,则从此以后跳过该字符串。 例子 SIMPLE 给 SIMPLE POLLS并EPEES给PEOPLELESS LYES并APRONS给LAYPERSONS ABCDE并a c和123 567给Aa1B 2Cc3D E567 "\n$?*和​(空字符串)和,(.)" (尾随空格)给出",\(n.$)?"* (尾随空格) *有较短的APL解决方案。

22
标题大写的经验法则
根据该站点,美国政府印刷办公室样式手册建议的一般规则是 将出版物和文档标题中的所有单词大写,但不包括“一个”,“该”,“在”,“在”,“在”,“在”,“在”,“在”,“在”,“在”,“在”,“或”,“或”和“或”上。 这可能不是正确的,因为我无法在“ 样式手册”中找到这样的建议,但是无论如何,让我们使用此规则。 挑战 给定一个输入字符串,该字符串由用空格分隔的小写单词组成,请根据以下规则输出字符串的大写字母 第一个和最后一个单词大写。 所有其他词大写,除了一,一个,所述,在,通过,用于,在,的,上,到,向上,并且,如,但,或,和也不。 输入字符串将包含至少一个单词,每个单词至少包含一个字母,并且仅包含从a到的字符z。 这是一个代码挑战,因此,请尝试使用您选择的语言使用尽可能少的字节。您可以编写完整的程序或函数来完成任务。 测试用例 "the rule of thumb for title capitalization" -> "The Rule of Thumb for Title Capitalization" "programming puzzles and code golf" -> "Programming Puzzles and Code Golf" "the many uses of the letter a" -> "The Many Uses of the …
30 code-golf  string 

20
从我深奥的代码中解析注释
本周初,我们学习了如何格式化深奥的语言进行评论。今天,我们要做相反的事情。我需要您编写一个程序或函数来解析一些注释良好的深奥代码并解析出注释,仅返回代码。使用上一个挑战中的一些示例,下面是经过注释的代码: a #Explanation of what 'a' does bc #Bc d #d e #Explanation of e fgh #foobar ij #hello world k #etc. l #so on mn #and op #so forth 您需要执行以下操作以提取代码。首先,删除注释字符(#),其前面的空格以及注释字符之后的所有内容。 a bc d e fgh ij k l mn op 然后,将每行向上折叠为单行。例如,由于b是第二列在第二行,我们一旦崩溃起来,这将是上线的第二列一个。同样,c将放在第一行的第三列中,并将d放在第四行中。对每个字符重复此操作,您将得到: abcdefghijklmnop 重要说明:似乎简单的解决方案是删除注释,删除每个空格并加入每一行。这不是有效的方法!因为原始代码中可能有空格,所以使用这种方法会去除它们。例如,这是一个完全有效的输入: hello #Line one #Line two world! …

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.