编程拼图和代码高尔夫

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

19
1P5:囚徒困境
此任务是“第一次定期Premier Programming难题推送”的一部分,旨在演示新的“挑战之王” 提案。 任务是编写一个程序,比其他参赛者更好地发挥被囚徒的困境。 看,温妮。我们认识您的室友-他叫什么名字?是的,Nippo-Irish-Ukranian黑帮老大McWongski忙得不可开交,您知道这是什么。 Vinnie,我们在这里努力要好。给你一个机会。 如果您告诉我们他的计划,我们将为您分配好工作。 如果你不... 游戏规则 比赛由一次完整的循环赛(所有配对)组成,两名选手同时参加(包括自我比赛)。 每对之间进行100轮比赛 在每个回合中,要求每个玩家在与对方玩家合作或背叛他们之间进行选择,而无需知道对方的意图,但要记住与对手对战的结果。 基于组合选择,每一轮都将获得积分。如果双方都合作,他们将分别获得2分。相互背叛产生1分。在混合情况下,背叛者获得4分,而合作者则受到1分的惩罚。 我将在发帖后的10天内进行一次“正式”比赛,我将开始处理所有提交的作品,并用于选择“接受的”获胜者。我有一个Mac OS 10.5盒子,所以POSIX解决方案应该可以工作,但是有Linuxisms不能。同样,我不支持win32 API。我愿意尽一切努力安装东西,但是有一个限制。我的系统的限制绝不代表可接受的响应的限制,只是代表那些将包含在“正式”匹配中的响应。 程序员界面 条目应采用可以从命令行运行的程序的形式。决定必须在标准输出上显示程序的(唯一!)输出。与该对手进行的前几轮比赛的历史将作为命令行参数显示。 输出可以是“C”(对于蛤向上)或“t”(对于告诉所有)。 历史记录是单个字符串,代表以前的回合,而最早的回合则最早出现在字符串中。字符是 “ K”(表示保持信念,意味着相互合作) “ R”(因为老鼠b @ st @ rd把我卖了!) “ S”(傻瓜!意味着您从背叛中受益) “ E”(因为每个人都在寻找相互背叛的第一名) 支架 作者将提供四名选手 天使-永远合作 魔鬼-总是会说话 TitForTat-在第一轮进行合作,然后总是像在上一轮那样 随机-50/50 我将在其中添加所有可以运行的条目。 总分将是所有对手的总分(包括一次自我比赛,并使用平均分)。 参赛者 (截至2011年5月2日7:00) 秘密握手 | 反T42T导弹 | 不信任(变数) | 防握手 …

30
半对角字母
给定英文字母,您的任务是为输入构建半对角字母。 如何建立半对角字母? 简要说明:首先,您将字母放在字母表中的位置P(P此处为1索引)。然后,您将每个字母打印到一行上的输入(含)为止,在P-1该字母之前和重复该字母P时间,并与空格进行交织。 例子: 给定F,您的程序应输出: 一种 BB CCC DDDD 电子电气设备 FFFFFF 给定K,您的程序应输出: 一种 BB CCC DDDD 电子电气设备 FFFFFF GG HHHHHHHH IIIIIIIII JJJJJJJJJJ KKKKKKKKKKKK 给定A,您的程序应输出: A 规则 您可以选择小写或大写字符,但是应该保持一致。 您可能会有多余的空间,如下所示: 一个一致的引导空间(每行)。 尾随或前导换行符。 尾随空格。 输入和输出可以采用任何标准均值进行,并且存在默认漏洞。 只要您还提供ascii-art版本,就可以输出行列表。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 受此挑战启发。

30
阿克曼函数
Ackermann函数是非原始递归的全部可计算函数中最简单的例子之一。 我们将使用以下A(m,n)两个非负整数的定义: A(0,n) = n+1 A(m,0) = A(m-1,1) A(m,n) = A(m-1,A(m,n-1)) 您可以实施 一个以两个整数作为输入,返回一个整数的命名或匿名函数,或者 一个程序,在STDIN上使用两个以空格或换行符分隔的整数,并将结果打印到STDOUT。 如果存在库,则不能使用库中的Ackermann函数或超幂函数,但是可以使用任何其他库中的任何其他函数。允许定期取幂。 您的函数必须能够A(m,n)在不到一分钟的时间内找到m≤3和n≤10 的值。从理论上讲,它必须至少终止于任何其他输入:给定无限堆栈空间,本机Bigint类型以及任意长时间,它将返回答案。编辑:如果您的语言的默认递归深度过于严格,则可以重新配置它而无需花费任何字符。 字符数最少的提交将获胜。 以下是一些值,以检查您的答案: A | n=0 1 2 3 4 5 6 7 8 9 10 -----+----------------------------------------------------------------- m=0 | 1 2 3 4 5 6 7 8 9 10 11 1 | 2 3 …

30
196算法代码高尔夫
为196算法编写一个简短的程序。该算法从整数开始,然后向其加反数,直到达到回文。 例如 input = 5280 5280 + 0825 = 6105 6105 + 5016 = 11121 11121 + 12111 = 23232 output = 23232 输入项 一个不是lyrchrel数的整数(也就是说,在此算法下,它最终会产生回文,而不是无限地继续) 输出量 回文达到了。

30
生成帕斯卡三角形
Pascal的三角形是从第一行的1开始生成的。在随后的行上,该数字由在其左右上方正上方的两个数字之和确定。 为了演示,这是Pascal三角形的前5行: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 挑战 给定输入n(但是,使用您选择的语言提供的最方便),请生成Pascal三角形的前n行。您可以假设n是一个介于1和25之间的整数(包括1和25)。每行之间必须有一个换行符,并且每个数字之间必须有一个空格,但是除此之外,您可以随意设置其格式。 这是代码高尔夫球,因此最短的解决方案是成功的。 示例I / O > 1 1 > 9 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 …

15
解锁你的锁
您已使用3位数的密码锁锁定了自行车。现在您想去兜风,需要在以下程序的帮助下将其解锁。 输入项 第一个参数 处于锁定状态的锁的数字组合。它必须不同于第二个参数(= 解锁状态的组合)。(否则您的自行车可能会被盗!) 范围000..999。不能省略前导零。 第二个参数 处于解锁状态的锁的数字组合。此值是您的目标。 范围000..999。不能省略前导零。 输出量 每次“旋转”之后,组合锁的每个状态的列表,包括初始状态(始终为第一个参数)和最后一步(始终为第二个参数)。 算法 您开始逐个“旋转”第一个数字,直到在解锁状态下到达正确的数字为止。但是,由于您了解整个解锁代码,因此可以在需要最小旋转量的方向上旋转数字,以达到处于解锁状态的数字。如果是平局,您可以选择自己喜欢的方向。 当您到达正确的第一位数字时,请从第二位开始相同的过程,然后从第三位开始。 数字顺序应理解为圆: ... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ... 这意味着从1到9的最小旋转量不是 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 = …

15
生成数字1–255的Brainfuck
编写一个程序,对于从1到255的数字,将打印出BF代码,该代码将在数组的某个字节中生成给定的数字,并加上换行符。 例如,输出的前四行可能(并且很可能会)是: + ++ +++ ++++ 获胜者将最小:(source code + output以字节为单位)。 澄清与修订: BF程序使用包装单元。 输出BF程序必须以唯一的非零单元格为包含数字的单元格终止。 程序必须以升序输出。 输出为0的程序是可选的。 不允许使用负数据指针。<在第一个指针将什么都不做。(如果更合适,请发表评论)

11
我的数组中有回声…我的数组中有回声…我的数组
救命!我的某些数组中似乎有一个令人讨厌的回声,我想摆脱它。发生这种情况时,原始数组会在中间的某个位置重复自身,从而使这些值彼此相加。 例如,数组[ 422, 375, 527, 375, 859, 451, 754, 451 ]包含自身的回声,如下所示: [ 422, 375, 527, 375, 859, 451, 754, 451 ] <-- array with echo (input) [ 422, 375, 105, 0, 754, 451 ] <-- original array (output) [ 422, 375, 105, 0, 754, 451 ] <-- echo of original …

15
靠近原点的三角格点
背景 甲三角形网格是由边长为1的等边三角形定期平铺的平面形成一个网格下面的图片是一个三角形的网格的例子。 甲三角晶格点是一个三角形形成三角格子的一个顶点。 的原点是在平面上,这是三角晶格点中的一个固定点。 挑战 给定一个非负整数n,请找出其与原点的欧几里得距离小于或等于的三角形格点的数量n。 例 下图是一个示例n = 7(为方便起见,仅显示60度区域,以A点为原点): 测试用例 Input | Output --------------- 0 | 1 1 | 7 2 | 19 3 | 37 4 | 61 5 | 91 6 | 127 7 | 187 8 | 241 9 | 301 10 | 367 11 | …

18
计算电话号码(包括字母)中的旋转拨号脉冲
在您的祖父母节那天,使用旋转式拨号拨打电话号码是这样的: 要拨出每个数字,将手指放在相应的孔中,将其拉到手指挡块上,然后松开。一种机制将使转盘旋转回到其静止位置,并且电话将断开并重新连接电路指定的次数,从而发出喀哒声。 拨数字N需要N个这样的“脉冲”,但N = 0(十个脉冲)除外。 旋转电话的特性是大数字(8、9、0)的拨号时间比小数字(1、2、3)长。这是绘制早期区号地图时的重要考虑因素,也是为什么人口稠密的纽约市(和电话线)的密度为212(仅5个脉冲),而稀疏的阿拉斯加却有907(26个脉冲)。当然,当按键式拨号变得流行时,所有这些都变得无关紧要。 挑战 用尽可能少的字节写一个程序或函数,该程序或函数将包含电话号码的字符串(或字符序列)作为输入,并输出其旋转拨号脉冲数。这些计数如下: 位数 数字1-9计为该脉冲数。 数字0计为10个脉冲。 字母 请注意,表盘上的数字2-9具有与之关联的拉丁字母。这些最初是用于命名交换的,但后来被重新分配给电话词和文本消息输入系统。 您必须使用E.161将字母分配给数字来支持电话号码中包含字母: A,B,C = 2 D,E,F = 3 G,H,我= 4 J,K,L = 5 M,N,O = 6 P,Q,R,S = 7 T,U,V = 8 W,X,Y,Z = 9 您可以假定输入已经被大写或小写了。 其他字符 您必须允许任意使用字符()+-./和空格作为格式分隔符。您可以选择允许任何非字母数字字符用于此目的,如果是更容易实现。 这些字符不会增加脉冲计数。 范例程式码 Python中的非查询表和函数: PULSES = { '1': 1, '2': 2, …
34 code-golf  number 

30
P Pr Pref Pref Prefi Prefixe Prefixes
给定一些有限列表,以其长度的升序返回所有前缀的列表,包括一个空列表。 (基本实现Haskell函数inits。) 细节 输入列表包含数字(如果方便的话,还可以输入其他类型)。 输出必须是一个列表列表。 提交可以但不必一定是函数,可以使用任何默认的I / O。 有一个CW答案为所有平凡的解决方案。 例 [] -> [[]] [42] -> [[],[42]] [1,2,3,4] -> [[], [1], [1,2], [1,2,3], [1,2,3,4]] [4,3,2,1] -> [[], [4], [4,3], [4,3,2], [4,3,2,1]]

11
我撕了多少页?
上个月,我从图书馆借了很多书。他们都是好书,充满了情感和情节扭曲。不幸的是,有时我会非常生气/悲伤/失望,所以我撕了一些纸。 现在图书馆想知道我为每本书撕了多少页。 您的目标是编写一个程序,该程序以逗号分隔的数字列表作为输入,并打印我可能撕裂的最小和最大页数。每行代表一本书,每个数字代表该书中缺少的一页。 输入示例: 7,8,100,101,222,223 2,3,88,89,90,103,177 2,3,6,7,10,11 1 1,2 输出示例: 4/5 5/6 3/6 1/1 1/2 4/5表示我可能已经撕掉4页或5页,具体取决于这本书的页码从哪一侧开始。一个人可能已经撕掉了6/7页,8/9页,100/101页和222/223页(4页)。或者,可以撕下第7/8页,第99/100页,第101/102页,第221/222页和第223/224页(5页)。 请记住,书页总是有正面和反面。本书的页码也不同。有些书的左页有偶数页码。一些在正确的页面上。从左到右阅读所有书籍。 以字节为单位的最短代码获胜。在严格的I / O格式不是必需的。您的程序必须能够将一本或多本书籍作为输入。玩得开心。
34 code-golf 

30
Autogram程序
这句话使用了两个a,两个c,两个d,二十八e,五个f,三个g,八个h,十一个i,三个l,两个m,十三个n,九个o,两个p,五个r,二十五s,二十三个t,六个v,十个w,两个x,五个y和一个z。 这样的句子被称为自动词。您的任务是编写一个具有类似属性的程序或函数:它将一个字节作为输入,并输出一个整数,表示该字节出现在程序源代码中的次数。如果其输入未出现在其源中,则应输出0。 您的程序不得直接或间接读取其自身的源代码,而必须将其提供给输出的所有数据硬编码为quine样式。您的程序的长度必须至少为一个字节。 这是代码高尔夫,因此最短的条目(以字节为单位)获胜。我不会接受答案,请随时使用您喜欢的语言竞争最短的解决方案。 强烈建议您在帖子中添加解释。 排行榜 以下是总体得分和每种语言的排行榜: 显示代码段 var QUESTION_ID=162408,OVERRIDE_USER=21034;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 e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i; body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> …

30
上下上下
挑战: 给定正整数输入n,创建一个遵循此模式的向量: 0 1 0 -1 -2 -1 0 1 2 3 2 1 0 -1 -2 -3 -4 -3 -2 -1 ... ±(n-1) ±n 或者用词来解释:向量从处开始0,递增1直到它达到不属于序列的最小奇数正整数,然后递减直到它达到最小(幅度)甚至是负整数。不是序列的一部分。它以这种方式继续直到n到达。该序列将在正端n,如果n是奇数,阴性n,如果n是偶数。 输出格式灵活。 测试用例: n = 1 0 1 ----------- n = 2 0 1 0 -1 -2 ----------- n = 3 0 1 0 -1 …

30
重复!阶乘!
不要与查找阶乘相混淆! 介绍 整数的阶乘n可以由n计算 != Ñ × (ñ - 1 )× (ñ - 2 )× (。。。)× 2 × 1n != n × (n − 1 )× (n − 2 ) × (。。。)× 2 × 1ñ!=ñ×(ñ-1个)×(ñ-2)×(。。。)×2×1个n!=n\times(n-1)\times(n-2)\times(...)\times2\times1 这是相对容易的,没有什么新鲜的。但是,阶乘可以扩展为双阶乘,例如 n !!= Ñ × (ñ - 2 )× (ñ - 4 )× (。。。)× 4 × …

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.