编程拼图和代码高尔夫

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

8
填塞填塞-十二项任务鸣叫
您的老板刚刚通过电子邮件给您列出了他需要尽快完成的12个编程任务的列表。任务很简单,但是作为社交网络支持的年轻软件大亨,您的老板坚持认为,您的解决方案必须能够在单个Twitter微博中使用。 这意味着您只有140字节的代码可解决所有任务,平均每个任务11.67字节。(是的,Twitter 计算字符,但您的老板专门说了字节。) 您意识到无法解决140字节中的所有12个任务,但是您怀疑老板不会实际测试所有解决方案。因此,您可以继续解决尽可能多的任务,而完全跳过其中的一些任务。您的心态是,完成任务的哪个子集无关紧要,只重要的是子集尽可能大。 您可以完成多少个任务? 挑战 编写多达12个不同的程序,每个程序都能准确解决以下12个任务之一。这些程序的长度的累积总和不能超过140个字节 或者,您可以编写一个长度不超过140个字节的程序,该程序取1到12之间的整数,并且(理想情况下)继续解决相应的任务,并根据需要输入更多的信息。并非所有任务都需要工作,只有那些确实可以计入您的分数的任务才能工作。无效的任务将允许错误或执行其他任何操作。 在任何一种情况下,“程序”实际上都是将输入作为参数或对其进行提示并打印或返回输出的函数。因此,例如,您可以编写一个看起来像的140字节的函数f(taskNumber, taskInput),或者您可以为每个任务编写单独的代码段,其中一些作为函数,而某些则作为成熟的程序。 其他详情: 所有代码必须使用相同的语言编写。 像往常一样,输入应该来自stdin,命令行,函数参数或您的语言常用的东西。输出将输出到标准输出或您的语言最接近的替代版本,或以适当的类型返回。 合理数量的输入格式是可以的;例如,用引号引起来的字符串或\n代替实际的换行符。 输出应该完全是所要求的,没有多余的格式或空格。唯一的例外是尾随换行符。 仅在REPL环境中运行的代码不构成程序或功能。 您可能不会编写解决多个任务的多个程序。是一个程序(理想地)解决所有任务,或者是(理想地)12个程序分别解决一个任务。 未经原作者的署名,并且最好也获得许可,不允许发布您未编写或仅稍作修改的任务解决方案。如果您的答案主要是所有其他答案中最短的解决方案,则它应该是社区Wiki。 计分 完成最多任务的提交是获胜者。如果两个提交并列,则字节数最少的一个获胜。如果字节计数并列,则较早的提交将获胜。社区维基答案不允许获奖。 确保告诉我们您解决了哪些任务,而不仅仅是告诉我们! 非高尔夫球员的障碍: 这项挑战很可能将以高尔夫语言为主导。许多语言甚至可能无法解决140字节内的一两个任务。因此,您可以提交非竞争性答案,其限制为3条推文,即420字节。所有其他规则保持不变。 任务 任务1-三个数字可以形成三角形吗? 取三个正整数并输出一个true / falsy值,该值指示具有这些长度的三行是否可以形成三角形。您可能不认为数字按任何特定顺序排列。 真实的示例(每行一个): 20 82 63 1 1 1 2 3 4 1 2 2 虚假的例子: 6 4 10 171 5 4 1 1 …

5
天哪,到处都是空间!
有些人坚持使用空格进行制表和缩进。 对于列表,这无疑是错误的。根据定义,制表符必须用于制表。 即使是缩进,制表符在客观上也很出色: 在Stack Exchange社区中有明确的共识。 使用单个空格进行缩进在视觉上是不愉快的;多使用一个是浪费的。 正如所有编码高尔夫球手都知道的那样,程序应尽可能短。如果需要处理的字节数更少,那么它不仅可以节省硬盘空间,还可以减少编译时间。 通过调整制表符宽度1,同一文件在每台计算机上看起来都不同,因此每个人都可以使用自己喜欢的缩进宽度,而无需修改实际文件。 默认情况下,所有好的文本编辑器都使用制表符(和定义)。 我这么说,我永远是对的! 可悲的是,并非每个人都在听理性。有人给您发送了一个文件,该文件做错了TM,您必须对其进行修复。您可以手动进行操作,但是还会有其他操作。 间隔器浪费您的宝贵时间已经很糟糕了,因此您决定编写最短的程序来解决该问题。 任务 编写执行以下操作的程序或函数: 从STDIN或作为命令行或函数参数读取单个字符串。 标识所有用于制表或缩进的空格。 如果在行的开头出现空格,则表示缩进。 如果不是缩进,则两个或多个空格的行程为制表。 甲单一可以或可以不被使用,是不是缩进空间制表。不出所料,当您将同一字符用于不同目的时,没有简单的方法可以分辨。因此,我们将说该空间已被用于混淆。 确定可能的最长制表符宽度1,用于制表符或缩进的所有空格都可以用制表符替换,而无需更改文件的外观。 如果输入既不包含制表也不包含缩进,则无法确定制表符宽度。在这种情况下,请跳过下一步。 使用先前确定的制表符宽度,用制表符替换用于制表或缩进的所有空格。 另外,只要有可能,而不会改变文件的外观,请使用制表符替换所有用于混淆的空格。(如有疑问,请排除空格。) 从函数中返回修改后的字符串或将其打印到STDOUT。 例子 的所有空格 a bc def ghij 制表。 每次运行空格都会将前面的非空格字符字符串填充为5的宽度,因此正确的制表符宽度为5,正确的输出2为 a--->bc-->def->ghij 的前两个空格 ab cde f ghi jk lm 都是制表的,其他的很混乱。 正确的制表符宽度为4,因此正确的输出2为 ab->cde>f ghi>jk lm 最后一个空格保持不变,因为如果由制表符代替,它将被呈现为两个空格: ab->cde>f ghi>jk->lm 除一个空格外的所有空格 int …

8
丹尼斯(Dennis),门把手(Donknob),马丁·布特纳(MartinBüttner),克里斯·杰斯特·杨(Chris Jester-Young)-披萨店!
编程难题和代码高尔夫即将获得一个新的主持人,丹尼斯!这个挑战是向他致敬和我们的其他活动(或最近活动)主持人:门把手,马丁布特内尔和克里斯小丑,年轻。挑战冠军的标题应该被读作Pepto Bismol的歌曲。 基本上,我们要在他们都把披萨第十九咬比萨店,但我们需要确保他们共享这还算是因为一些的的器官功能障碍综合征被称为是比萨瘾君子! 比萨店出售的披萨都是矩形文字。披萨的宽度和长度可以是任何非负整数,只要它们的乘积可被四整除即可。文本披萨块中的每个网格空间都代表一个切片,因此始终可以将切片分成四个相等的组。 国防部将集体订购一个比萨饼,并以任何合理格式(例如)将其宽度和长度参数提供给服务器[width],[length]。在比萨饼到达餐桌之前,您需要在每个切片上贴上可以食用的mod的开头,以确保它们都能公平共享。每个人都应获得相同数量的切片。 E 是给丹尼斯的 D 用于门把手 M 是给马丁的 C 是给克里斯的 但是,这些mod有点顽强,要求它们各自的切片组是路径连接的,也就是说,它们的所有切片都可以通过上下左右移动而不能互相交叉,切片(并且不移动对角线)。不在乎怎么你做到这一点,只要它完成。 正确标记每个切片后,使用可选的尾随换行符将披萨传送到模块。 您的贴标机可以是程序或函数,可以打印或退还贴有标签的披萨。咬短的贴标机获胜。 例子 例子1 订购: 4,1 一些可能的标签比萨饼: EDMC MEDC CDEM 例子2 订购: 4,4 一些可能的标签比萨饼: MMMM CCCC DDDD EEEE DEMC DEMC DEMC DEMC CCCC DEEM DEEM DDMM 例子3 订购: 8,3 一些可能的标签比萨饼: MMMMMMCC DDDDCCCC DDEEEEEE DDDCMMMM DCDCMEEE DCCCMEEE …

18
打印字符名称
每个Unicode字符都有一个名称,例如“拉丁文大写字母A”。Unicode字符名称只能包含大写字母,空格和减号。 编写一个程序,该程序读取文本并在新行上输出每个字符的名称。例如,如果输入为“ Hello,World!”,则输出为 LATIN CAPITAL LETTER H LATIN SMALL LETTER E LATIN SMALL LETTER L LATIN SMALL LETTER L LATIN SMALL LETTER O COMMA SPACE LATIN CAPITAL LETTER W LATIN SMALL LETTER O LATIN SMALL LETTER R LATIN SMALL LETTER L LATIN SMALL LETTER D EXCLAMATION MARK 输入应该来自文件或用户输入,而不仅仅是代码中的字符串。 输出应写入文件或标准输出或打印到屏幕上。 不允许使用Internet和外部库,所有必需的数据都应包含在代码中。 …

9
超级有效!
在神奇宝贝中,有18种类型: Normal Fighting Flying Poison Ground Rock Bug Ghost Steel Fire Water Grass Electric Psychic Ice Dragon Dark Fairy 神奇宝贝可以有一次或两次打字。例如,皮卡丘(Pikachu)是Electric,而暴龙(Tyranitar)是Rock/Dark。类型的顺序无关紧要。神奇宝贝不能两次具有相同的类型。进攻动作恰好是以上18种类型之一。 某些神奇宝贝类型对某些类型的攻击是脆弱的。例如,一个Fire神奇宝贝对Water攻击无能为力。这造成的伤害倍数为2。 某些神奇宝贝类型可以抵抗某些类型的攻击。例如,一个Rock神奇宝贝可以抵抗Normal攻击。这样得出的伤害系数为0.5。 某些神奇宝贝类型对某些类型的攻击免疫。例如,Flying神奇宝贝对Ground攻击具有免疫力。伤害乘数为0。 宠物小精灵可以是双倍虚弱的,双倍抵抗的或对抗攻击类型的任何其他组合。乘以乘数可获得总效果。 编写一个给出移动类型和神奇宝贝类型的程序或函数,输出攻击的总伤害倍数。神奇宝贝的类型总是写为A或A/B,其中A和B是与上一列表不同的类型。您必须接受以这种格式输入的神奇宝贝。除此限制外,您可以任何合理的方式输入信息。可接受的示例输入格式为: "Ice", "Dragon/Flying" 但这是不可接受的: ["Ice", ["Dragon", "Flying"]] 您的输出必须完全是以下字符串之一,然后是可选的尾随换行符: 0x 0.25x 0.5x 1x 2x 4x 例子 Ground, Fire -> 2x Normal, Rock/Dragon -> 0.5x Fighting, Ghost/Steel -> …
42 code-golf 

12
自然产生的素数生成器
有很多主要的生成函数。它们几乎都是基于Eratosthenes筛子,Möbius函数或Wilson定理构造而成的,通常在实践中不可行。但是也有一些发电机,它们的结构非常简单,是偶然发现的。 2003年,Stephen Wolfram在NKS暑期学校的实时计算机实验中探索了一类嵌套递归方程。马修·弗兰克(Matthew Frank)周围的一群人进行了进一步的实验,发现了简单复发的有趣特征 a(n) = a(n-1) + gcd(n,a(n-1)) 起始值为a(1) = 7。差异a(n) - a(n-1) = gcd(n,a(n-1))似乎总是1或素数。前几个区别是(OEIS A132199): 1, 1, 1, 5, 3, 1, 1, 1, 1, 11, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …

10
不是您的常规豆机
考虑类似的机制这个ASCII版本豆机或plinko / 柏青哥游戏: O ^ \ ^ ^ ^ \ \ ^ / ^ U U U U U 1 2 3 4 5 该O是落下来球。 当它达到时^,有50-50的机会会左右移动。 当它/到达时,它总是向左走。 当它达到时\,它总是正确的。 球最终落入U底部的编号槽之一。问题是,每个低谷结束的概率是多少? 对于这种特殊的情况下,该概率是0.0,0.1875,0.5625,0.125,和0.125,用于分别槽1至5。 这里的3个槽代替5.概率是另一个例子0.5,0.5以及0.0: O / ^ ^ U U U 1 2 3 在这个挑战中,我们将把这个问题推广到一种以任何方式设置任意数量的层的机制。 挑战 编写一个程序或函数,该程序或函数采用该机制的金字塔结构的ASCII表示形式。(通过标准输入/命令行/功能参数输入。) 您可能会认为它带有适当形状的空间,例如 ^ \ ^ ^ ^ …

30
至少h与至少h
输入项 非负整数列表。 输出量 最大的非负整数h,使得h列表中的至少一个数字大于或等于h。 测试用例 [0,0,0,0] -> 0 [12,312,33,12] -> 4 [1,2,3,4,5,6,7] -> 4 [22,33,1,2,4] -> 3 [1000,2,2,2] -> 2 [23,42,12,92,39,46,23,56,31,12,43,23,54,23,56,73,35,73,42,12,10,15,35,23,12,42] -> 20 规则 您可以编写完整的程序或函数,也可以使用匿名函数。这是代码高尔夫球,因此最少的字节数获胜。不允许出现标准漏洞。 背景 的h指数是在学术界使用的概念,其目的是捕捉研究员的影响和生产力。根据Wikipedia的说法,如果研究人员已发表h条科学文章,则该文章的索引为h,其中每篇科学文章均被h引用至少h次。因此,这个挑战是关于从引用计数列表中计算h指数。 更新资料 哇,好极了!我接受了最短的一个,但是如果有人提出一个更短的一个,我将相应地更新我的选择。 语言获胜者 这是按语言划分的获奖者名单,我还将尝试保持最新状态。我包括了所有分数均为非负数的帖子。如果我在这里犯了一个错误,请纠正我。 APL:@MorisZucca提供的7个字节 Bash + coreutils:29个字节,@ DigitalTrauma C#:@ LegionMammal978的103个字节 C ++:@ user9587的219字节 CJam:@nutki提供 15个字节 GolfScript:@IlmariKaronen提供的 13个字节 Haskell:@proudhaskeller提供的40个字节 J:@ɐɔıʇǝɥʇuʎs提供的12个字节 Java:@Ypnypn的107个字节 JavaScript:@ edc65提供的48个字节 …

4
数字绘画
您会得到一个真实的彩色图像。您的任务是生成此图像的一个版本,该版本看起来像是使用数字绘画(孩子们的活动,而不是非图表)绘制的。除了图像外,还提供了两个参数:P(调色板的最大大小(即,要使用的最大不同颜色的数量))和N(要使用的最大单元数)。您的算法并没有必须使用所有P的颜色和ñ细胞,但它不能使用不止于此。输出图像应具有与输入相同的尺寸。 甲细胞被定义为全部具有相同的颜色的像素的连续区域。仅在某个角触摸的像素不被视为连续的。细胞可能有孔。 简而言之,您只能使用N个阴影/纯色区域和P个不同的颜色来近似输入图像。 只是为了可视化参数,这是一个非常简单的示例(没有特定的输入图像;展示了我疯狂的Paint技能)。下图具有P = 6和N = 11: 这是一些测试您的算法的图像(大多数是我们通常的怀疑者)。单击图片查看大图。 请提供一些不同参数的结果。如果要显示大量结果,可以在imgur.com上创建一个图库,以使答案的大小合理。另外,也可以像上面一样,将缩略图放在您的帖子中,并使其链接到较大的图像。另外,如果发现不错的东西,请随时使用其他测试图像。 我假设参数N≥500,P〜30与真实的按数字绘制模板相似。 这是一次人气竞赛,因此以最多净票数赢得答案。鼓励选民通过以下方式判断答案 原始图像的近似程度。 该算法在不同类型的图像上的效果如何(绘画通常比照片容易)。 该算法在非常严格的参数下的效果如何。 单元格形状的有机/平滑外观。 我将使用以下Mathematica脚本来验证结果: image = <pastedimagehere> // ImageData; palette = Union[Join @@ image]; Print["P = ", Length@palette]; grid = GridGraph[Reverse@Most@Dimensions@image]; image = Flatten[image /. Thread[palette -> Range@Length@palette]]; Print["N = ", Length@ConnectedComponents[ Graph[Cases[EdgeList[grid], m_ <-> n_ /; …

14
您需要输出其余部分的ASCII的最短连续子集是什么?
所述可打印的ASCII字符,以便(十六进制代码20至7E)为: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (请注意其中有空间。) 从左到右读取时,此字符串显然包含所有可打印的ASCII字符至少一次,以升序排列,但不以降序排列。 字符串 REVERSED:~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! NORMAL: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 包含所有可打印的ASCII字符,至少按升序和降序一次。换句话说,当用数字代码对字符进行赋值时,最长的递增和最长的递减子序列的长度为95(可打印ASCII字符的数量)。 挑战 选择N个可打印ASCII字符的连续子集,例如LMNOP(N = 5)。像上面的示例一样,仅使用输出结果包含全部95个ASCII字符(按升序和降序)的N个字符编写程序。 获胜者是N最低的提交。如果是平局,则以字节为单位的最短代码获胜。 笔记 连续的子集表示一组全部以不间断的行出现的可打印ASCII,例如LMNOP或89:;<=>。 您的连续子集可能从~太空“循环” ,但这对N造成+3惩罚。因此{|}~N = 4,但{|}~ !N = 6 + 3 = 9。 您的程序可能只包含您选择的连续子集中的N个可打印ASCII字符。它们不必全部出现,并且可以任何顺序多次出现。(不允许所有不可打印的ASCII和所有非ASCII。这意味着不允许使用制表符和换行符。) 您的输出只能包含可打印的ASCII字符,并且必须少于10000个字符。 输出的最长的递增和递减子序列都必须具有长度95(如上所述)。 输出到标准输出。没有输入。 N是小于96的正整数。

24
绘制锯齿字母
今天很简单。编写最短的程序,以高度为正整数绘制“锯齿字母”。开头的字母时,必须输入编程语言的名称。 例如,如果您的语言是Python,输入是1输出,则应为: ABCDEFGHIJKLMNOPythonQRSTUVWXYZ 如果输入是2输出,则应为: B D F H J L N Python R T V X Z A C E G I K M O Q S U W Y 如果输入是4输出,则应为: D J Python V C E I K O Q U W B F H L N R T …
42 code-golf  string 

15
99瓶啤酒,99种语言
目的是编写一个简单的“ 99瓶啤酒”程序..该程序在至少两种不同的语言(例如,Python 2和Python 3)中无效。它必须是将运行或编译的完整文件。 有趣的答案应该被投票,但紧凑性也很重要。(当然,语言多样性是主要目标。) 编辑:我会说,要有普通的C代码,用C ++和Objective-C做同样的事情,就算是派生类。该代码应该做一些聪明的事情,以使行在不同的语言中具有不同的含义。

30
另一种Meta Regex高尔夫
注意: 遵循大众需求,我稍微放松了规则: 正则表达式的最大大小每5个答案增加1个字节。答案N最多可以使用29 +⌈N/5⌉字节。 每个答案的分数为(M /(30 + N / 5))N 在regex高尔夫中,您会得到两组字符串,并被要求创建最短的regex,该regex与第一组中的所有字符串匹配,但对第二组中的所有字符串都失败。 那就是我们要做的,但是每次有人回答时,他们的正则表达式本身都会被添加到两组字符串之一(由他们自己选择)中。因此,在这个挑战中有严格的答案顺序。 让我们来看一个例子: 说我以abc(我不会)开始,然后将其放在比赛组合中。 然后一个有效的第二个答案将是a,因为它与上述匹配(并且还没有需要失败的字符串)。说这个答案进入失败集。 现在,第三个答案必须匹配,abc但失败了a。因此,可能的第三个答案是b。让我们将其放入匹配集中。 第四答案现在有匹配abc和b,但未能上a。我们将不允许重复的答案,因此有效的正则表达式为c|b。 重要的是您的答案应尽可能简短。对于前几个答案来说,这可能是微不足道的,但是一旦我们得到了几个答案,就应该越来越难以尽可能少的字符来获得所需的匹配。 对于实际的挑战,匹配集最初包含PPCG,失败集包含[PPCG],我已经提供了第一个答案。 接听 了解这一挑战的关键在于,一次只能一个人回答,每个答案取决于之前的回答。 决不应该有两个相同的答案N。如果两个人碰巧同时回答N了一个问题,则稍后回答的人(即使相差几秒钟)也应该宽容地删除他们的答案。 为了使此过程更流畅,请在发布答案时尝试遵循以下步骤: 确保有人独立验证了先前答案的正确性(并留下了相应的评论)。 取上一个答案中找到的两个测试集,并编写一个正则表达式,它匹配一组中的所有字符串,而另一组中的所有字符串都不匹配。 以以下格式发布答案: # N. [regex flavour] - [regex size in bytes] [regex] [link to online regex tester] [notes, explanation, observations, whatever] ### The next answer has …

30
产生意外词[关闭]
目的是编写会意外产生单词的程序(程序看起来不会产生单词)。 示例(JavaScript): alert(([0][1]+"").slice(4,8)) 警报“很好” -jsfiddle。 说明: 1. [0][1]返回undefined,因为数组中只有一个元素[0] 。2.添加空字符串将转换undefined为字符串“ undefined” 。3. slice(4,8)输出第5至8个字符undefined 这是不受欢迎的人气竞赛。

15
今天下雨
语境 今天是情人节。昨天,你所爱的唯一一个人离开了你,成为了这个她总是觉得“愚蠢而无趣”的家伙。在回家的路上,您一直处于交通阻塞状态,在收音机上听老歌,挡风玻璃上的雨水使您不寒而栗。在车上待了一会儿之后,您发现自己独自呆在小公寓里,除了她以外,别无其他。没有光,你凝视着窗户,让黑暗环绕着你。没有人可以和您聊天,您的朋友很早以前就离开了,因为警告您这个新女孩困扰您。启动计算机,这是您唯一的操作,打开浏览器并发布新的编程难题以进行stackexchange,以改变您的想法。 挑战 用您选择的语言编写一个程序,模拟地面上的雨水。输出可以由ASCII字符或呈现的2D / 3D组成。相机是固定的:您在上面直视地面。您的程序必须包含某种动画,例如每次生成新的“框架”时刷新控制台或页面。它必须是现实的,我知道这有点主观,但是可以说,您不能仅一滴之滴就填满整个领域。 输出不一定要是图像,但是如果您使用的是隐秘语言,则最好提供一个.gif来说明其实际效果(但是,如果您不这样做,它当然不会影响您的分数)。 规则 您的分数是使用的总字节数 如果使用颜色,则为-20分 -50如果达到渲染效果 最低分获胜 例 一个基本的示例,应呈现: 希望您会做得更好,并享受这一挑战。 对不起,我的英语,如果您要更正一些错误,请随时编辑我的帖子 排行榜 如果未列出您的名字,那是因为您的尝试被认为不符合规则。 Tobia - APL - 35 j6m8 - Processing.js - 38 The Guy with The Hat - Processing - 42 ace - Processing - 74 kelunik - JS/CSS - 89 Riot - Bash …
42 code-golf 

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.