编程拼图和代码高尔夫

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

4
将文本对齐块
任务 您的任务是编写整个程序,该程序会将给定的输入与给定大小的块对齐。 输入: 40 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse …

5
实施dog bash实用程序
dog 是一个命令行实用程序,它接受任意数量的参数,其中第一个是要写入的文本,其他则是任意多个文件。 该dog实用程序将在这些文件上等分文本。如果还有余数n,则第一个n文件会再增加一个字节 dog与catforall 相反,x以下内容应成立。 $> dog x a.txt b.txt ... $> cat a.txt b.txt ... x$> 其中...表示任意多个文件。 一个示例(12个字节,3个文件,可以平均分割): $> ./dog.py "Dogs vs Cats" a.txt b.txt c.txt $> cat a.txt Dogs$> cat b.txt vs $> cat c.txt Cats$> cat a.txt b.txt c.txt Dogs vs Cats$> 带有余数的示例(13个字节,5个文件,余数3): 9$>./dog.py "0123456789abc" a.txt b.txt …

5
Levenshtein距离偏差
用具有A给定字符串S的名称的语言编写程序,以输出另一种编程语言的名称B。的长度B必须等于该Levenshtein距离之间(缩写“LD”)A和S。要被视为一种编程语言,B必须具有esolangs页面或Wikipedia页面。 例: (Suppose the program is coded in Python) Input: Jython Output: R Input: Pyt4oq Output: Go Input: Rs7hon Output: C++ Python和之间的LD Jython为1,因此输出R 您最多只需要掩盖最多LD 12。您可以假设LD 0永远不会发生。 这是代码高尔夫球,因此以字节为单位的最短程序获胜。 (这是我的第一个挑战!感谢您的反馈) 排行榜 显示代码段 var QUESTION_ID=58974,OVERRIDE_USER=20260;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 …
10 code-golf  string 

11
“我”有“我”发生的机会
设计一个随机数生成器,其中第i个数字对于所有0 <i <14都有i%的出现几率。0应该恰好有9%的出现几率。生成器的种子应该是系统时间。您不能将预定义函数用于随机数生成。 基本上1发生的机率是1%,2发生的机率是2%,依此类推,直到13发生的机率是13%。这是代码高尔夫球,因此最短的代码获胜。

7
Base85编码
挑战 编写一个程序,该程序可以接受包含任何ASCII可打印字符的单行字符串的输入,并输出以Base85编码的相同字符串(使用big-endian约定)。您可以假设输入将始终≤100个字符。 Base85指南 四个八位位组被编码为(通常)五个Base85字符。 Base85字符的范围从!到u(ASCII 33-117 )和z(ASCII 122)。 要进行编码,您需要对四个八位位组(一个32位数字)连续执行除以85的操作,然后将余数加33(每次除法后)以获得编码值的ASCII字符。例如,此过程的第一个应用程序在编码的块中产生最右边的字符。 如果一组四个八位位组仅包含空字节,则将它们编码为,z而不是!!!!!。 如果最后一个块短于四个字节,则将其填充为空字节。编码后,将从输出末尾删除与填充相同数量的字符。 编码的值应在之前<~和之后~>。 编码值不应包含空格(针对此挑战)。 例子 In: easy Out: <~ARTY*~> In: test Out: <~FCfN8~> In: code golf Out: <~@rGmh+D5V/Ac~> In: Programming Puzzles Out: <~:i^JeEa`g%Bl7Q+:j%)1Ch7Y~> 以下代码段将编码给定输入到Base85。 显示代码段 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>String.prototype.toAscii85=function(){if(""==this)return"<~~>";for(var r=[],t=0;t<this.length;t+=4){for(var i=(this.substr(t,4)+"\x00\x00\x00").substr(0,4),o=0,n=0;4>n;n++)o=256*o+i.charCodeAt(n);var s=[];for(n=0;5>n;n++){var e=o%85;o=(o-e)/85,s.unshift(String.fromCharCode(e+33))}r=r.concat(s)}var a=4-this.length%4;return 4!=a&&r.splice(-a,a),"<~"+r.join("").replace(/!!!!!/g,"z")+"~>"};</script><style>#in,#out{margin:20px;width:400px;resize:none}</style><input id="in" type="text" value="Base85"><button onclick="$('#out').text($('#in').val().toAscii85())">Submit</button><br><textarea id="out" rows=5 disabled></textarea> Run …

1
缩短长号
在打代码时处理长数字时,很难减少代码的长度,那么您有一些技巧来使数字更短并且更易于管理吗? 例如,下面的Pyth代码显示“ Hello world”,但以44字节为单位,这并不令人满意: Vcjkj85942000775441864767076 2 7=k+kCiN2)k 那么如何缩短长号85942000775441864767076呢?
10 code-golf  tips  pyth 

1
用数字速记计算表达式
您在一家想要制作用户友好型计算器的公司工作,因此,您要承担增加用户使用“数字速记”(即表示数字的字母,例如kfor)功能的任务1000。因为您的公司希望在上述计算器中节省存储空间,所以您必须尽可能减少代码,以降低存储成本。 你的任务 您将创建一个函数,该函数要么从STDIN读取表达式作为输入,要么将其用作参数并返回其求值或将其打印到STDOUT。 一些澄清 让我做一些定义。首先,我们有输入,我称之为表达式。可能类似于以下内容: x + y / z 在此表达我们有三个数字:x,y,和z,由运营商(分离+和/)。这些数字不一定是正整数(甚至整数)。使事情变得复杂的是,当我们必须评估数字中包含的速记时。例如, 2k15 为了进行评估,我们将其分为三个数字:2,1000(即k)和15。然后,根据规则,我们将它们组合以获得 2*1000 + 15 = 2015 希望这会使理解以下规则更加容易。 规则 注意:除非另有说明,否则您可以解释单词“数字”或其同义词以包括速记。 以下是您的函数必须能够处理的数字速记形式:k, m, b, t, and e。分别k, m, b, and t对应值1000, 1000000, 1000000000, and 1000000000000(一千,一百万,十亿和一万亿)。该e速记将永远跟着另一个号码,n和代表10^n。您必须允许数字速记出现在n之前和之前e。例如,kek计算为1000*10^1000。 为简单起见,如果数字中有简写形式e,则只会使用一次。 速记之前的任何数字(包括速记)都将与其相乘。例如120kk将被评估为120 * 1000 * 1000。如果前面没有数字,则必须假定数字为1(就像在数学中将变量x隐式地视为一样1x)。例如e10计算为10^10。另一个示例:2m2k计算结果为2*1000000*2*1000(未添加任何内容)。 在包含简写的数字中,最后一个简写之后的任何数字(不应用简写)都会添加到该数字中。例如2k12将被评估为2*1000 + 12。例外e是使用速记,在这种情况下,后面的数字(包括速记)e将被视为n并被评估为10^n(请参阅第一条规则)。 您的函数必须能够处理+, -, *, and /分别为加法,减法,乘法和除法的运算符。如果您愿意,它可能会处理更多。 根据操作顺序评估操作。 …
10 code-golf 

4
向后关系
编写一个程序或函数,给定两个ASCII字符串A和B,它们将产生字符串,A'并且B'在公共子字符串的位置将其反转。查找过程A'如下: A' 最初是空的。 如果的第一个字符A位于中B,则找到的最长前缀A是的子字符串B。从中删除此前缀A,并将其反转添加到中A'。 否则,从中删除该第一个字符A并将其添加到中A'。 重复步骤2-3,直到A为空。 查找B'的方法与此类似。 例 让我们考虑一下字符串A = "abc bab"和B = "abdabc"。对于A',会发生以下情况: A = "abc bab":第一个字符"a"在B中,而A的最长前缀在B中发现"abc"。我们从A删除此前缀,并将其反转添加"cba"到A'。 A = " bab":第一个字符" "不在B中,因此我们从A中删除了该字符并将其添加到A'中。 A = "bab":第一个字符"b"在B中,并且在B中找到的A的最长前缀是"b"。我们从A删除该前缀,并将其反转(仍为"b")添加到A'。 A = "ab":第一个字符"a"在B中,而A的最长前缀在B中发现"ab"。我们从A删除此前缀,并将其反转添加"ba"到A'。 A = "":A为空,因此我们停止。 这样我们得到A' = "cba" + " " + "b" + "ba" = "cba bba"。对于B',过程类似: B = "abdabc" -> "a" …
10 code-golf  string 

1
绘制双曲平面细分
在双曲平面上绘制细分图(Poincare盘),例如: 该程序有四个输入: 1)多少个边/多边形(在此示例中为3个)。 2)每个顶点有多少个相交(在此示例中为七个)。 3)要渲染的距离中心顶点有几步(如果仔细观察,此示例中为5)。这意味着包含一个顶点,前提是可以从中心以5步或更少的步长到达该顶点。如果同时包含两个顶点,则渲染边缘。 4)图像的分辨率(单个像素,图像为正方形)。 输出必须是图像。边缘必须渲染为圆弧,而不是直线(庞加莱圆盘投影将线变成圆)。点不需要渲染。当用户放入非双曲线的内容时(即在每个顶点处有5个三角形相交),该程序不必正常工作。这是代码高尔夫球,因此最短的答案为准。

26
N个最接近零的数字保持平衡
目标:给定一个正整数n: 如果n是奇数,输出列表中n最接近的数字来0递增的顺序 如果n是偶数,则输出Falsey值。 测试用例: 5 -> [-2,-1,0,1,2] 4 -> false (or any Falsey value) 1 -> [0] 参考实施 function update(){ var num = +document.getElementById("yield").value; if(num){ var out = document.getElementById("output"); if(num % 2 == 1){ // base is balanced var baseArr = []; for(var i=0;i<num;i++){ baseArr.push(i-Math.floor(num/2)); } out.innerHTML = baseArr.join(" "); …

4
从对角线条重建文本矩形
这一挑战的灵感来自一个SO问题,即通过枚举矩阵的所有对角线来遍历矩阵。 代替矩阵,考虑一段文本: ABCD EFGH IJKL 从左上角到右下角从左到右遍历此块的SW-NE对角线,将得到以下输出: A EB IFC JGD KH L 挑战 编写执行与上述过程相反的程序或函数。也就是说,给定一组SW-NE对角线,输出产生它的文本块。 输入输出 输入和输出都可以表示为带换行符的字符串,也可以表示为字符串的数组/列表。 尾随换行符是可选的。 输入将至少包含一个可打印字符,并且可以假定是正确的(行长度不会不一致)。 输出块的列数始终大于或等于行数。 测试用例 输入: A 输出: A 输入: . LI PO. PV. CE G 输出: .I.. LOVE PPCG 输入: M DA AIT LAR SGI /OX /N / 输出: MATRIX DIAGON ALS///
10 code-golf 

4
Avast,你们吓死了!
黑胡子是早期18的英国海盗个世纪。尽管他以抢劫和乘船着称,但他在船员的允许下命令了他的船。没有关于他曾经伤害或谋杀他的俘虏的报道。 此挑战是为了纪念臭名昭著的黑胡子,并受到“像海盗一样的国际谈话日(9月19日)”的启发。这也是Pyrrha 挑战的反面。 挑战 创建一个程序,将藏宝图作为输入(由下面列出的字符组成),并输出其方向。 输入值 所有的投入将包括v,>,<,^,空格和单一X。 您可以假设以下内容: 地图永远不会循环或交叉 起始箭头将始终是最左列中的最底字符 永远会有宝藏(X) 输入示例如下所示。 >>v >>>>>>v ^ v ^ v ^ v ^ v<< ^ v ^ v ^ >>>>^ >>X ^ >>^ 输出量 输出应为- ", "分隔的方向字符串。以下是上面地图的正确输出。 E2, N6, E2, S4, E4, N4, E6, S2, W2, S2, E2 允许使用尾随换行符或空格。 例子 In: >>>>>>>>>>>>>>>v …
10 code-golf 

5
INTERCAL打高尔夫球的秘诀
您在INTERCAL打高尔夫球有哪些一般提示?我正在寻找可用于编写高尔夫挑战赛的想法,并且至少在某种程度上特定于INTERCAL(即“删除评论”不是有用的答案)。 我知道使用外语对赢得高尔夫比赛非常有用,但是我在这里看不到太多的INTERCAL代码。您有什么建议可以帮助人们使用INTERCAL获得具有竞争力的代码大小吗?这种语言有竞争力吗? INTERCAL未被充分利用,甚至没有标签。好难过...
10 code-golf  tips 

2
傍的ASCII游戏
乒乓球 挑战在于以尽可能短的代码重新创建ASCII字符的经典游戏“ pong”。 要求/规格 “屏幕”应为45x25字符。 空格实际上应该是空格。 球拍应为9个等号:=========并且应位于最上面和最下面的行中(我知道原著是左右并排演奏,而不是上下演奏,但我认为这对ascii pong更好)。 球可以是小写或大写o或零。 任何类型的两个输入按钮(如果用户按下使输入中显示字母的键也很好,也可以),以一次左右移动播放器的一个或两个字符。 球在击中桨或壁时需要以适当的角度跳动(提示:取反x或y差值)。 分数应显示在输出中的某处。得分是玩家成功击球的次数。 如果球未击中球员的球拍,请终止程序。 应该有某种AI(即使AI的球拍刚好与球的x值匹配)。 球不能垂直或水平直线移动。 开始屏幕/第一帧应如下所示: ========= o ========= score: 0 计分 这是代码高尔夫球,因此最短的代码获胜...但是,有一些好处可以减少字符数: -30个字符:根据球在球拍上的击打位置来改变球的轨迹 -10个字符:使游戏随着时间的推移而加速 -20个字符:使AI出色 -20个字符:避免出现任何情况,即玩家保持静止并且游戏永远进行而不会输赢(由某些轨迹和AI模式引起) -20个字符:使球开始以(半)随机轨迹运动 -25个字符:添加重置选项 这是一个在JavaScript中没有奖金的简单例子: //init var x = 22, y = 12, xd = Math.random() < 0.5 ? -1 : 1, yd = 1, …

3
Knödel数字-查找Kn
克诺德尔数 克诺德尔数是一组序列。具体而言,马铃薯丸子号码的正整数n是该组合数m,使得所有i < m,互质到m,满足i^(m-n) = 1 (mod m)。n表示特定的Knödel数集Kn。(维基百科)。 例如,K1是Carmichael编号和OEIS A002997。他们去,如:{561, 1105, 1729, 2465, 2821, 6601, ... }。K2是OEIS A050990,就像这样{4, 6, 8, 10, 12, 14, 22, 24, 26, ... }。 你的任务 您的任务是编写程序/函数/等。需要两个数字,n和p。它应该返回pKnödel序列的第一个数字Kn。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 例子 1, 6 -> [561, 1105, 1729, 2465, 2821, 6601] 2, 3 -> [4, 6, 8] 4, 9 -> …

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.