编程拼图和代码高尔夫

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

30
递增数组
给定一个非空的正整数数组,对其进行“递增”一次,如下所示: 如果所有数组元素均相等,1则将a附加到数组末尾。例如: [1] -> [1, 1] [2] -> [2, 1] [1, 1] -> [1, 1, 1] [3, 3, 3, 3, 3] -> [3, 3, 3, 3, 3, 1] 否则,增加数组中的第一个元素,即数组的最小值。例如: [1, 2] -> [2, 2] [2, 1] -> [2, 2] [3, 1, 1] -> [3, 2, 1] -> [3, 2, 2] …

30
以负序输出整数,每次增加最大整数
主要任务 您的任务是按从1开始的降序打印整数,并在您再次击中1时逐渐增大,直到达到给定的输入为止,然后打印其余部分,直到再次击中1。输入示例6: 1 21 321 4321 54321 654321 Without newlines (valid output): 121321432154321654321 旁注:这是OEIS中的A004736。同样,第一个示例(带有换行符)是无效的输出,如规则中所指定。 输入项 您的代码可以采用整数或数字形式的任何形式的输入(图形,STDIN)。 输出量 您的代码应该输出上述序列,直到达到输入数字为止,然后完成输出直到再次达到1。输出可以是任何东西,因此可以是数字,字符串,整数或图形输出。必须打印出一个数字(如果是字符串,则不能换行)。您的输出可以输入和输出任意数量的字符(例如[])。 由于存在一些误解,因此您可以尝试以下正则表达式模式。 ^(\D*(\d)+\D*)$ 规则 输出必须是一个完整的数字,不能被任何东西分割,甚至不能换行。 该算法不应检查以任何方式出现的N的第一个实例(例如21in 121321),而应检查N 的第一个实例作为实际数字。 允许使用一条尾随的换行符。 负输入的处理完全由您选择,负数不是您应该测试的情况。 测试用例 Input: 6 Output: 121321432154321654321 Input: 1 Output: 1 Input: 26 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321222120191817161514131211109876543212322212019181716151413121110987654321242322212019181716151413121110987654321252423222120191817161514131211109876543212625242322212019181716151413121110987654321 Input: 0 Output: 0, Empty, or Error Input: 21 Output: …

30
多种语言的Anagrams警察的线程
这个挑战有两个线程。这是警察的话题。强盗的线程位于此处。 您的挑战是选择一个OEIS序列,并用两种不同的语言编写两个完整的程序,当通过STDIN或其他形式的标准输入(其中n为任何正数)给定n时,该序列将生成序列中的第n个项目。但是,您的两个程序必须是字谜,这意味着每个程序都可以从对方的字母重新排列。 程序必须将数字的小数点后跟可选的空白输出到STDOUT。程序可以输出到STDERR,但是应该忽略它,如果隐藏的情况如此,则必须明确指出是这种情况。 如果愿意,也可以按字符代码输出。但是,如果您在隐藏的解决方案中这样做,则必须在提交的正文中注明。 然后,您将显示OEIS编号,其源代码以及它所使用的一种语言的名称。 如果抢劫犯找到了以您已经提出的语言以外的其他语言运行的原始提交的字谜,则盗贼会破解您的提交。要破解答案,他们必须只找到能产生顺序且是原文的字谜的任何语言和程序,而不一定是您正在考虑的答案。 因此,您会受到激励,使他们尽可能难于使用其符号列表来查找完成任务的任何语言。 计分 这是代码高尔夫球,所以最短的,完整的程序是赢家。 语言能力 如果两种建议的解决方案都不能用两种语言完成任务,则将认为语言是不同的。只要警察的解决方案或强盗的解决方案都不能使用另一种语言输出正确的语言,这将包括同一语言的不同版本。 即,如果有两个解决方案1和2分别使用语言A和B,则解决方案2不能使用语言A产生正确的输出,解决方案1不能使用语言B产生正确的输出。 安全 一旦您的提交被破解了一个星期,您可以发布解决方案并声明您的发布安全。如果一周后您选择不发布解决方案,您的答案可能仍会被破解。

10
只能有1个!
给定正整数n,您的任务是生成等于number的表达式n。 要注意的是:只允许1在输出中输入数字。 您可以使用的运营商是: +,-,*和/ /是浮点除法(so 5/2 = 2.5)。 sqrt(作为s) ceil和floor(分别为c和f) ! (阶乘) 在这种情况下,阶乘仅适用于正整数。 您也可以将堆叠1在一起,因此11在输出中可以接受类似的内容。但是,它们的数量与数量中的相同1(因此11算作2 1)。 您还必须在输出中包括方括号,以便通过操作顺序执行输出时,输出中的表达式将产生输入。但是,它们不算作操作。 例子: 输入= 24,一个可能的输出= (1+1+1+1)! 输入= 11,一个可能的输出= 11 输入= 5,一个可能的输出= c(s((1+1+1+1)!)) 的平方根的上限24是5。 规则: 您可以确保输入是从1到的正整数2^31-1。 2^31-1即使未经测试,您的程序也必须能处理最大为的正整数。 您的程序必须在1小时内完成处理集中所有数字的所有输出。 程序每次运行的结果都必须完全相同-而且,没有种子。 您只能对表达式进行硬编码,最多10个数值。 不允许在输出中的任何地方使用虚数(所以没有s(some negative number))。 也不允许您使用大于2^31-1或小于-2^31+1输出中任何地方的数字,即使当它们是sqrted或/ed(所以no (((1+1+1)!)!)!或((1+1+1+1)!)!)时也是如此。 一组数字: 945536, 16878234, 32608778, 42017515, 48950830, 51483452, 52970263, 54278649, 63636656, 78817406, 89918907, …

30
是的,我当然是成年人!
我认为我们都是从小就做的:有些网站要求的最低年龄为18岁,因此我们只从出生年份和年龄中减去几年,我们就是18岁以上。 此外,对于大多数游乐园游乐设施而言,进入的最低高度为1.40米(至少在荷兰是这样)。当然,这可能比年龄更不容易被骗,但是您可以穿高跟鞋,穿高跟鞋,戴上帽子,站在脚趾上,等等。 输入: 您的程序/函数接受正整数或十进制。 输出: 输入是整数>= 18吗?只需打印输入。 输入是整数0-17吗?打印18。 输入的数字是小数>= 1.4吗?只需打印输入。 输入的数字是小数0.0-1.4吗?打印1.4。 挑战规则: 假设输入将始终在0-122(年龄最大的女人是122)或0.0-2.72(年龄最大的男人是2.72)的范围内。 您可以将输入作为字符串,对象或您喜欢的其他任何形式。 小数点输入在小数点后最多不能超过三个小数位。 2或2.两者都不是的有效输出2.0。您可以自由输出,2.00或者2.000代替2.0。 就像输入一样,输出在该点之后永远不会超过三个小数位。 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有正确参数的函数/方法,完整程序。您的来电。 默认漏洞是禁止的。 如果可能,请为您的代码添加一个带有测试的链接。 另外,如有必要,请添加说明。 测试用例: 0 -> 18 1 -> 18 2 -> 18 12 -> 18 18 -> 18 43 -> 43 115 -> 115 122 -> …

19
理论上输出格雷厄姆数
格雷厄姆的电话号码G是这样定义的: u(3,n,1) = 3^n u(3,1,m) = 3 u(3,n,m) = u(3,u(3,n-1,m),m-1) [Knuth's up-arrow notation] [Conway chained arrow notation] THEN g1 = u(3,3,4) g2 = u(3,3,g1) g3 = u(3,3,g2) ... G = u(3,3,g63) 您将得到u(3,3,2)=7625597484987检查代码的信息。 您的任务是编写一个程序/函数G,如果有足够的整数大小和足够的时间,它将确定性地输出值。 参考文献 格雷厄姆的电话 Knuth的向上箭头表示法 Conway链式箭头符号 排行榜 显示代码段 var QUESTION_ID=83873,OVERRIDE_USER=48934;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var …

9
建立一个没有任何三角形的三角形
小时候,我很喜欢玩这些玩具: 他们可能打算将它们用于艺术,但是我总是将它们用于数学!分形,图案等。有一次,我受到了挑战: 无需使用任何绿色三角形瓷砖即可构建一个三角形。 这个挑战困扰了我最长的时间,直到我偶然发现了一种仅用3个梯形来完成的真正美丽而简单的方法: /\ /_/\ /__\_\ 现在,取下这个三角形,然后旋转它: ______ \ \__/ \/ / \/ 使用这两个三角形,我们可以从中构造出更大的三角形。这是一个高度为2的三角形: /\ /_/\ /__\_\ /\ \__/\ /_/\/ /_/\ /__\_\/__\_\ 这是高度为3-7的三角形: #3 /\ /_/\ /__\_\ /\ \__/\ /_/\/ /_/\ /__\_\/__\_\ /\ \__/\ \__/\ /_/\/ /_/\/ /_/\ /__\_\/__\_\/__\_\ #4 /\ /_/\ /__\_\ /\ \__/\ /_/\/ /_/\ /__\_\/__\_\ /\ …

26
数学在Anastasiya的世界中如何运作?
背景: 诸如现实世界中的基本加法和乘法之类的标准运算数学工作如下: 12 + 123 = 135 和 12 * 123 = 1476 那没意思,很无聊!许多学校已经将其解释为实践,实践,形式算法的实践。这意味着非常僵化和无聊的数学饮食,而不是此挑战的目的。准备在我们钟爱的网站上玩一些乐趣。 考虑将两个正整数相加,然后再次将其结果的所有数字相加的过程。重复加法运算直到仅获得一位数字。例如: 的结果12 + 123是135。 将得到的所有数字135相加1 + 3 + 5 = 9。 在此重复加法中获得一位数字值9所需的步数为2。 与前面的加法过程一样,两个正整数相乘遵循相同的过程。将结果的所有数字相乘,然后重复此过程,直到只剩下一个数字。拿上面的例子: 结果12 * 123是1476。 将得到的所有数字1476相乘1 * 4 * 7 * 6 = 168。 再次乘以我们获得的所有168位数字1 * 6 * 8 = 48。 再次乘以我们获得的所有48位数字4 * 8 = …

6
我的魔方上有一只蚂蚁
一个标准的,已解决的3×3×3 魔方具有6个颜色不同的面,其中每个面都是3×3的一种颜色的正方形网格。白色的面与黄色相对,红色的面与橙色相对,蓝色的面与绿色相对,并且当白色指向上方时,红色在蓝色的左侧: 想象一下,一只蚂蚁坐在白脸的中央,面对红脸。您可以给他3个命令: 前进(^)-朝他面对下一个网格正方形的方向迈出一步,如有必要,跨过立方体的边缘。 右(>)-向右(顺时针)旋转90°,并保持在同一网格正方形中。 左(<)-向左(逆时针)旋转90°,并保持在同一网格正方形中。 给定任意命令列表,找到蚂蚁访问的正方形的颜色(不包括白色的起始正方形)。 例如,命令序列^^>^^<^^^的路径如下所示: 按顺序访问的网格正方形的颜色为white red red green green green yellow或,不计算起始正方形wrrgggy。 编写一个程序或函数,该程序或函数接受一串命令字符,<^>然后打印或返回wyrobg与该蚂蚁在多维数据集上的路径相对应的字符串(白色,黄色,红色橙色,蓝色,绿色)。 以字节为单位的最短代码获胜。抢七是较早的答案。 笔记 立方体在空中,蚂蚁有有效的毛虫,因此他可以遍历整个立方体。 多维数据集始终保持其已解决状态。 正方形的颜色仅在移动到正方形而不是旋转时才记录。起始白方块不应记录。 在输入和/或输出中可能存在单个可选的尾随换行符。 测试用例 input : output [empty string] : [empty string] ^ : w < : [empty string] > : [empty string] ><><<<>> : [empty string] >^ : w <<^> …

30
数学教学武器
上一次,当我试图提出一些并非重复的简单尝试时,结果却变得太难了。所以希望这次,确实是新手也可以尝试的尝试。 输入: 具有整数/小数的数组/列表。(或一个表示整数/小数的数组的字符串。) 输出: 遍历数字并按以下顺序应用以下五个数学操作数: 加法(+); 减法(−); 乘法(*或×或·); 实数/计算器部(/或÷); 取幂(^或**)。 (注意:括号中的符号只是为了说明而添加。如果您的编程语言对数学运算使用的符号与示例所使用的符号完全不同,那么这当然是完全可以接受的。) 继续进行操作,直到到达列表的末尾,然后给出总和的结果。 挑战规则: 用0(n ^ 0)求幂应该得到1(这也适用于0 ^ 0 = 1)。 没有用0(n / 0)除的测试用例,因此您不必担心这种边缘情况。 如果数组仅包含一个数字,则将其作为结果返回。 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有正确参数的函数/方法,完整程序。您的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 测试用例: [1,2,3,4,5] -> 0 -> 1 + 2 = 3 -> 3 - 3 = 0 -> 0 …

6
说尤达(Yoda)的挑战,这是
挑战 好吧,我认为这很清楚,不是吗?您必须创建一个函数或程序,该函数或程序将字符串作为参数并输出对应的Yoda语言。 这是code-golf,因此最少的字节数获胜。 输入 输入可以是没有换行符的任何字符串。如果字符串是这样组成的,则可以翻译它: 主语 +动词+其他。 其中Subject是人称代词(我,您,他,她,它,我们,他们)。您不必认识到第二个单词是动词。 如果第一个单词不是代词,则输入有效,但输出为 Too difficult, this sentence is. You have to win this code challenge -> Translatable Luke has to win this code challenge -> Untranslatable 输入可以以字母a结束。或!,而不是?。 此外,字符串可以包含Non-Ascii,括号,逗号,冒号... 输出 对于可翻译的句子,输出是相同的句子,主语和动词位于句子的末尾。 You have to win this code challenge -> To win this code challenge, you …

30
全角文字
全角文字是指每个字符(包括最后一个字符)后都有空格的文本。例如,此问题的第一句话变为: F u l l w i d t h t e x t i s t e x t t h a t h a s a s p a c e a f t e r e v e r y c h a r a c t …
44 code-golf  string 

30
加两个数字
输入:两个整数。优选地,十进制整数,但是可以使用其他形式的数字。这些可以在标准输入中作为程序或函数的参数或列表形式提供给代码。 输出:它们的总和。对于输出整数,请使用与输入整数相同的格式。例如,输入5 16将导致输出21。 限制:请没有标准漏洞。这是代码高尔夫球,以最少的字节数获胜。 注意:这应该是微不足道的,但是我很想知道如何实现它。答案可以是完整的程序或功能,但请确定是哪个程序。 测试用例: 1 2 -> 3 14 15 -> 29 7 9 -> 16 -1 8 -> 7 8 -9 -> -1 -8 -9 -> -17 或作为CSV: a,b,c 1,2,3 14,15,29 7,9,16 -1,8,7 8,-9,-1 -8,-9,-17 排行榜 显示代码段 var QUESTION_ID=84260,OVERRIDE_USER=8478;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var …

12
分子到原子
挑战 编写一个程序,可以分解一个输入化学式(请参见下文),并以形式输出其相应的原子element: atom-count。 输入项 输入样例: H2O 您的输入将始终包含至少一个元素,但不超过十个。您的程序应接受包含括号的输入,该括号可能是嵌套的。 字符串中的元素将始终匹配[A-Z][a-z]*,这意味着它们将始终以大写字母开头。数字将始终为个位数。 输出量 样本输出(用于以上输入): H: 2 O: 1 您的输出后面可以有换行符。 分解分子 一组括号右边的数字分配给内部的每个元素: Mg(OH)2 应该输出: Mg: 1 O: 2 H: 2 相同的原理适用于单个原子: O2 应该输出: O: 2 以及链接: Ba(NO2)2 应该输出: Ba: 1 N: 2 O: 4 例子 > Ba(PO3)2 Ba: 1 P: 2 O: 6 > C13H18O2 …

4
乘以受限操作
击败目前最好的答案有500名非官方赏金。 目标 您的目标是仅使用一组非常有限的算术运算和变量赋值将两个数相乘。 加成 x,y -> x+y 倒数x -> 1/x(非除法x,y -> x/y) 求反x -> -x(不是减法x,y -> x-y,尽管您可以通过两个操作来完成x + (-y)) 常数1(不允许其他常数,除非由的操作产生1) 变量分配 [variable] = [expression] 评分:值以变量a和开始b。您的目标是使用尽可能少的操作将其产品保存a*b到变量中c。每个操作和分配都+, -, /, =花费一个点(等效地,每次使用(1),(2),(3)或(4))。常量1是免费的。最少的解决方案获胜。Tiebreak是最早的帖子。 允许:您的表达式必须在算术上对“随机”实数a和正确b。它可能在R 2的零测量子集上失败,即,如果在a- b笛卡尔平面中绘制,则该集合没有面积。(由于0类似的表达式的倒数,可能需要这样做1/a。) 语法: 这是一个原子代码高尔夫。不得使用其他操作。特别是,这意味着没有函数,条件,循环或非数字数据类型。这是允许的操作的语法(可能性用分隔|)。程序是<statement>s 的序列,其中a <statement>如下所示。 <statement>: <variable> = <expr> <variable>: a | b | c | [string of letters of …

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.