编程拼图和代码高尔夫

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

19
自动化拯救世界
您是Desmond Hume。在过去的三年中,您和您的伴侣Kelvin一直是计算机的奴隶,该计算机要求每108分钟输入非常特定的顺序以拯救世界。 4 8 15 16 23 42 您的伴侣在40天前死亡(由于不幸的事故涉及Kelvin的头和一块大石头),因此您没有人可以交谈。没有人为您输入数字。没有人打破单调。起初还算不错,但是您再也无法应付沉默了。而且,如果您不得不再听一次“制作属于自己的音乐”,那您将大叫。 您决定需要离开。逃离。您决定建造一艘筏并驶离该岛。但是随后您意识到了一个坏消息:您被困在这里。您需要继续拯救世界。 但是随后您意识到了一个好消息:您是一名程序员!您可以自动拯救世界!兴奋的是,您跑到计算机上,并使用可信赖的python技能,快速编写了一个脚本来为您输入数字。 import time while True: print "4 8 15 16 23 42" time.sleep(60 * 107) 快速,简单,可靠,简短易用。一个好的python脚本应该具备的一切。但是,当您尝试对其进行测试时,您会得到一个错误。 Bad command or file name. strange,奇怪。哦,让我们尝试一下c ++。 #include <iostream> #include <unistd.h> int main() { while (true) { std::cout << "4 8 15 16 23 …

30
输出字符串的googol副本
我感兴趣的是看到不需要任何输入的程序,打印一些非空字符串的googol副本,不少不多,然后停止。甲固高被限定为10 ^ 100,即1后面一百0的以十进制。 输出示例: 111111111111111111111111111111111111111111111111111111111111111111111111... 要么 Hello world Hello world Hello world Hello world Hello world Hello world ... 该字符串也可以完全由空格或特殊符号组成。固定字符串的相同副本的唯一例外是,如果您的语言以某种无法避免的方式装饰输出,但可以在包装脚本中微不足道地撤消该输出,例如在每行前添加行号。在这种情况下,无需提供包装脚本。 您可以假设您的计算机永远不会用完时间,但是除此之外,您的程序必须对资源有合理的需求。另外,您必须遵守您选择的编程语言所施加的任何限制,例如,您不能超过其整数类型所允许的最大值,并且在任何时候都不需要多于4 GB的内存。 换句话说,该程序原则上应该可以通过在计算机上运行来进行测试。但是由于这个数字的范围,您应该证明它输出的字符串的副本数恰好是10 ^ 100,并且程序随后会停止。停止可能由于错误而退出,停止甚至终止,但如果是这样,则错误一定不能产生无法轻易与程序输出分离的输出。 这是代码高尔夫球,因此以字节数最少的解决方案为准。 解决方案示例(C,未填充,3768字节) #include <stdio.h> int main() { int a00, a01, a02, a03, ..., a99; for(a00 = 0; a00 < 10; a00++) for(a01 = 0; a01 …
63 code-golf 

12
反向缩进
我听说,如果反向缩进代码,则代码可以更快地运行,以便编译器可以从“分支”的顶部开始像树设计模式一样对其进行处理。这会有所帮助,因为重力会加快编译代码所需的时间,并且会提高数据结构的效率。这是一个Java脚本编写示例: function fib(n) { var a = 1, b = 1; while (--n > 0) { var tmp = a; a = b; b += tmp; if (a === Infinity) { return "Error!"; } } return a; } 但是由于某些原因,记事本没有设置可以自动执行此操作,因此我需要一个程序来为我执行此操作。 描述 提交的内容必须以代码段作为输入,缩进缩进并输出结果代码。 这是通过以下过程完成的: 将代码分成几行。每行将以零个或多个空格开头(将没有制表符)。 在代码中找到所有唯一的缩进级别。例如,对于上面的示例,这将是 0 4 8 12 反转此缩进级别列表的顺序,然后将反转的列表映射到原始列表。这很难用语言解释,但是对于示例来说,它看起来像 0 …

30
检查单词是否同构
两个词是同构,如果他们有字母重复相同的模式。例如,两个ESTATE和DUELED都有模式abcdca ESTATE DUELED abcdca 因为字母1和6相同,所以字母3和5相同,仅此而已。这也意味着单词由替换密码(此处与match)相关E <-> D, S <-> U, T <-> E, A <-> L。 编写包含两个单词并检查它们是否同构的代码。最少的字节数获胜。 输入:两个非空的大写字母字符串A..Z。如果愿意,可以将它们作为两个字符串的集合或带分隔符的单个字符串。 输出:一致的Truthy值的对,是同构,并一致Falsey值,如果他们不。不同长度的字符串是有效输入,绝不为同形。 测试用例: 真正: ESTATE DUELED DUELED ESTATE XXX YYY CBAABC DEFFED RAMBUNCTIOUSLY THERMODYNAMICS DISCRIMINATIVE SIMPLIFICATION 假: SEE SAW ANTS PANTS BANANA SERENE BANANA SENSES AB CC XXY XYY ABCBACCBA ABCBACCAB ABAB CD …

30
写拘留线
介绍 坏消息们-您被拘留了。您的英语老师不理解该站点,希望您“停止对数字式冰球进行数学运算,这是英语课!” 她判您在黑板上写下自己最喜欢的谚语25次,这将在黑板上总共显示100行。 The eighteen-hundreds were a time for rum. The nineteen-hundreds were a time for fun. The two-thousands are a time to run a civilized classroom. 幸运的是,您是一个狂热的读者(更不用说专家级代码窃贼了!)您已阅读了有关可能使您脱身的技巧。 (比尔·阿曼德(Bill Amend)的狐步舞) 不幸的是,对于杰森,它没有奏效。但是你有一个更好的主意!由于您的英语老师认为您正在做数学,因此,如果您将所有数字留在程序之外,它可能会起作用!您还希望使程序尽可能短,因为您是个懒惰的学生,不想在黑板上写很多东西。 编写符合以下规则的程序: 您的程序必须将上述4行打印25次。线路必须以该顺序输出,重复进行。总共总共100行输出(可以在末尾使用换行符,也可以在开始时使用领先的换行符)。 您不能使用字符0123456789。您的老师对数学感到困惑,会叫你出来! 您可以使用任何导入和外部库,而无需计算导入。您的英语老师不了解编程。杰森本可以通过不写#include <stdio.h>而节省很多工作,并且您不想犯同样的错误! 通过byte计数为程序评分。最低分获胜!

20
哈希冲突:“否”表示“是”
此Code Golf的灵感来自于最近的每日WTF文章《您无法正确处理!,其字符串比较写为: String yes = "YES"; if ((delay.hashCode()) == yes.hashCode()) 想象一下,如果Java的String.hashCode方法恰好以这种方式实现,将会给Steve的团队带来麻烦"YES".hashCode() == "NO".hashCode()。因此,我在这里提出的挑战是: h用一个字符串参数和一个整数返回值h("YES")(等于)以尽可能少的字符编写一个哈希函数(我称它为 ) h("NO")。 当然,使用像这样的函数将是微不足道的def h(s): return 0,它会为每个字符串造成哈希冲突。为了使这一挑战更加有趣,您必须遵守以下附加规则: 在由三个或更少的大写ASCII字母()组成的其他 18 277个可能的字符串中^[A-Z]{0,3}$,必须没有哈希冲突。 澄清(由Heiko Oberdiek指出):输入字符串可能包含以外的字符A-Z,并且您的代码必须能够散列任意字符串。(但是,您可以假定输入是字符串,而不是空指针或其他数据类型的对象。)但是,^[A-Z]{0,3}$只要不匹配,则返回值是多少都没有关系。这是一个整数。 此外,混淆此功能的意图: 您的代码不得在字符或字符串文字中包含任何字母“ Y”,“ E”,“ S”,“ N”或“ O”(大写或小写)。 当然,这种限制并不适用于语言的关键字,这样else,return等都是精品。

24
编写一个矩形程序,输出它旋转的次数
标题说明了一切。您的目标是编写一个形成aw×h矩形字符的程序,该程序可以旋转并重新运行以输出已完成的90°逆时针(CCW)旋转数。 例如,如果3×2程序 abc def 解决了该问题,它最初将输出0,并且连续旋转90°CCW cf fed da be cba eb ad fc 将分别输出1、2和3。 对于大多数语言而言,使用注释使这项工作变得微不足道。以Ruby为例,它可以在7×7矩形中完成: ###p### ### ### ###1### p 0#2 p ###3### ### ### ###p### 面临的挑战是在没有任何评论的情况下做到这一点。 计分 您的分数是w * h,即矩形的面积。换行符不包括在内。换句话说,不包括代码高尔夫球,换行符。 Ruby示例的得分为49(尽管由于带有注释,所以当然是无效的)。 笔记 您的代码必须真正是矩形的,行尾不能缺少任何字符。 如果您愿意,可以输出其他合法的“ mod 90°”值而不是0 1 23。因此8可以代替0,而-1可以代替3,依此类推。 输出可能会进入控制台或进入文件。 有标准漏洞。 我希望这是我的第一个问题,确实引起了某些人的兴趣。请享用!

12
在文本中插入错别字
我写了一些文字,但看起来太专业了。我想让它看起来像我在写时真的很累。我需要您输入一些错字。 您面临的挑战是采用任意一行文本并添加错字。这意味着对于每个角色,将有10%的机会被打字。 “ typofied”的定义是,您必须(随机)选择以下其中一项: 复制字符。 删除字符。 将字符移动一个键盘空间。“键盘”定义为: qwertyuiop asdfghjkl zxcvbnm 对于字符转换,您必须向上,向下,向左或向右移动一个空格。必须随机选择。shift选项仅适用于字母字符。案件必须保留。小心边缘情况,例如m! “随机”的定义是结果必须不可预测(通过查看以前的结果)。例如,您不能每十个字符错别字。此外,随机性必须具有均匀的分布。例如,您不能执行30%的重复,30%的删除和40%的转换;每个角色必须有1/3的几率(如果是非字母字符,则每个为1/2)。 输入示例: This is some correct text. It is too correct. Please un-correctify it. 输出示例: This iissome xorreect tex.. It is too coteect. Please jn-corretify it. 这是code-golf,因此以字节为单位的最短代码将获胜。
63 code-golf 

30
用2个输入和1个输出打高尔夫球所有16个逻辑门!
例如,该门A and B是具有2个输入和1个输出的逻辑门。 正好有16个,因为: 每个逻辑门有两个输入,可以为真或假,为我们提供4个可能的输入 在这4种可能的输入中,每一种都可以有一个真实和错误的输出 因此,有2 ^ 4个可能的逻辑门,即16。 您的任务是编写16个程序/功能,分别实现它们。 您的功能/程序必须独立。 只要它们输出true / falsey值,它们就有效,这意味着即使为和生成,您也可以A or B在Python中实现。lambda a,b:a+b2A=TrueB=True 分数是用于每个功能/程序的总字节数。 逻辑门列表 0,0,0,0(false) 0,0,0,1(and) 0,0,1,0(A and not B) 0,0,1,1(A) 0,1,0,0(not A and B) 0,1,0,1(B) 0,1,1,0(xor) 0,1,1,1(or) 1,0,0,0(nor) 1,0,0,1(xnor) 1,0,1,0(not B) 1,0,1,1(B implies A) 1,1,0,0(not A) 1,1,0,1(A implies B) 1,1,1,0(nand) 1,1,1,1(true) 其中第一个数字是的输出A=false, B=false,第二个数字是的输出A=false, B=true,第三个数字是的输出A=true, …

30
从1到n的所有整数的和
实在令我感到惊讶的是,这还没有完成。如果可以找到现有线程,请务必将其标记为重复或让我知道。 输入项 您的输入采用任何大于或等于1的正整数的形式。 输出量 您必须输出介于1和输入数字之间的所有整数的和。 例 In: 5 1+2+3+4+5 = 15 Out: 15 OEIS A000217 —三角数:a(n)=二项式(n + 1,2)= n(n + 1)/ 2 = 0 +1 + 2 + ... + n。 排行榜 运行下面的代码片段以查看此问题答案的页首横幅。(感谢programmer5000和steenbergh提出的建议,以及Martin Ender提出的建议。) 显示代码段 var QUESTION_ID=133109,OVERRIDE_USER=69148;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 …
63 code-golf  math  number 

9
这山有多亮?🔥
甲山被定义为一组线段,其第一点的坐标为(0,a)其中a > 0其最后一点具有坐标,并且(b,0),在那里b > 0。所有中间点的y坐标(纵坐标)均严格大于0。为您提供了山峰上的点,它们按x坐标(横坐标)的升序排序。请注意,两个点可以具有相同的x坐标,从而产生山的垂直部分。如果为您提供了两个具有相同x坐标的点,则应按照给定的顺序连接它们。此外,山上可能有水平段,无论什么水平,这些水平段都不会点亮。所有坐标均为非负整数。 问题是:假设太阳是位于山的右侧的无限垂直的光平面,那么将被照亮的山的总长度是多少?该数字不需要四舍五入,但是如果四舍五入,请至少包含四个小数位。我包括了一张图片: 在这里,加粗的线表示被点亮的线段。请注意,在输入中,P出现在Q之前(PQ是垂直线段),因此前一个点连接到P而不是Q。 您可以采用任何合理格式的输入,例如列表列表,单个列表,字符串等。 测试用例: (0,3000) (500, 3500) (2500, 1000) (5000,5000) (9000,2000) (9000,3500) (10200,0) Output: 6200.0000 如下图所示,这里有两个照亮的部分: 第一个长度为5000/2 = 2500,第二个长度为3700。 这是代码高尔夫球,因此最短的答案以字节为单位。
62 code-golf  math 

30
填充N的N维N ^ N数组
输入: 足够的内存和一个正整数N 出: 用N填充的N维N ^ N数组,其中N ^ N表示N个N个N个N个N个项的N个项... 例子: 1:[1]是长度为1的一维数组(列表),包含单个1 2:[[2,2],[2,2]]这是一个2行2列的2D数组(一个表),用2s填充 3:[[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]这是一个3D数组(一个多维数据集),具有3层,3行和3列,填充了3s 4: [[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]]] 5和6:请参阅答案之一。

30
π天之谜3/14
π日快乐。这个问题的目的是计算一个半径为3的圆的面积,其中A =πr²。 要注意的是,您必须使用用与编程语言不同的语言定义的常数π。例如,您可以编写使用Fortran的C程序MATH::PI或使用Java的Python程序java.lang.Math.PI。 规则: 您的代码必须使用其他语言存储的π值进行计算。(即,它必须存储在常量库或数学库中。) 程序的所有代码都必须放在一个文件中。例如,您不能用C编写一个程序来打印π,而不能用Java编写另一个程序来运行C程序。(但是,您可以编写一个Java程序,该程序可以自己编写和编译C程序。) 您不能从网页上下载π并声称您的常量来自PHP / ASP / HTML。 这是一个在Bash中运行并使用Python的存储math.pi值的示例: #!/bin/bash PI=`python -c 'import math; print math.pi'` bc -l <<< "3 * 3 * $PI" 输出: 28.27433388231 这是一场大众竞赛,因此一周后获得最多票数的作品将获胜。 编辑:一周后,该奖项以93分获得了DigitalTrauma。感谢出色的汇编技巧-我不知道FPU将常数存储在硬件中。我希望本次比赛旨在找到一些有趣的方法来节省时钟周期,但实际上可以节省一些时间。 *图片提供:http : //xkcd.com/10/

30
C#中的代码高尔夫球技巧
您在C#中打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫球问题的想法,这些想法至少在某种程度上是C#特有的(例如,“删除注释”不是答案)。请为每个答案发布一个提示。 -借鉴marcog的想法;)
62 code-golf  tips  c# 

30
在Ruby中打高尔夫球的技巧
您可以为Ruby打高尔夫球提供哪些一般技巧? 我正在寻找可用于编码一般针对Ruby的高尔夫问题的想法。(例如,“删除评论”将不是答案。) 请为每个答案发布一个提示。
62 code-golf  tips  ruby 

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.