编程拼图和代码高尔夫

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

3
自行运行生命游戏的代码
编写两个矩形代码块,每个代码块宽w个字符,高h个字符,这些代码块在排列成网格时实现Conway的生命游戏。(w和h可以是任何正整数) 例如,两个代码块可能是:(w = 3,h = 2,不是实际代码) XX| --+ 和 | --+ 将第一个块视为“生命游戏”中的“活动”单元,将第二个块视为“死亡”单元。 现在,将这两个块的多个副本安排到一个更大的程序中,该程序代表一个生命游戏网格,例如以下滑翔机: | | | | | --+--+--+--+--+ | |XX| | | --+--+--+--+--+ | | |XX| | --+--+--+--+--+ |XX|XX|XX| | --+--+--+--+--+ | | | | | --+--+--+--+--+ | | | | | --+--+--+--+--+ 现在是关键点:运行此代码时,输​​出必须是“生命游戏”网格,此后就是该网格,并为单元格使用相同的活动代码块和无效代码块。 因此,上面程序的输出将是下一代滑翔机,它也可以作为可运行程序: | | | | …

30
真正的苗条遮荫
以尽可能少的字节回显以下内容: I'm Slim Shady. Yes, I'm the real Shady. All you other Slim Shadys are just imitating. So, won't the real Slim Shady please stand up? Please stand up. Please stand up. 以下五个单词必须在您的代码中完全出现一次: I'm Slim Shady real stand

30
扩展ASCII Sun
编写一个程序(通过STDIN /命令行)使用一个非负整数N。 当N为0时,您的程序应打印O(大写字母Oh,而不是零)。 当N为1时,您的程序应打印 \|/ -O- /|\ 当N为2时,您的程序应打印 \ | / \|/ --O-- /|\ / | \ 当N为3时,您的程序应打印 \ | / \ | / \|/ ---O--- /|\ / | \ / | \ 对于较大的N,此模式将以完全相同的方式继续。每个“太阳”的八个射线应的适当的N个-,|,/,或\字符。 细节 您可以编写一个带整数的函数来代替程序。该函数应正常打印sun设计或将其作为字符串返回。 你必须 根本没有尾随空格,或者 仅具有足够的尾随空格,因此该模式是一个完美的(2N + 1)*(2N + 1)矩形。 任何N个或所有N个的输出都可以选择包含尾随换行符。 计分 以字节为单位的最短代码获胜。

30
ETAOIN SHRDLU高尔夫
挑战的简短描述: 基于ETAOIN SHRDLU,您的挑战是要使用任何语言编写最短的程序或函数,根据输入频率来输出26个英文字母。 真正长久,干燥且彻底的规格: 您的程序/函数将接收一串文本作为输入,其中将包含一个或多个大写和/或小写字母,还可能包含标点符号,数字,符号和其他非字母字符。 程序/功能必须仅输出英文字母的26个大写字母,包括那些未出现在输入中的字母,根据它们在输入中出现的次数从高到低排列。 编辑:频率是不区分大小写的,但是输出必须为大写。 如果两个或多个字母具有相同的频率,则它们可以以任何顺序排列。 不允许其他输出,例如空格。 编辑7/1/2014:根据反馈,我正在修改此规则。唯一允许的其他输出是可选的前导和/或尾随空格,例如尾随换行符。不允许其他输出。 对于不包含任何字母的输入,允许进行未定义的行为。 从今天起7天将选出优胜者,让那些手指打字! 输入示例: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vitae erat velit. Mauris gravida euismod libero ut tincidunt. Phasellus elit dui, consectetur et egestas in, aliquam vitae diam. Donec eget varius ante. Vestibulum cursus diam aliquet, egestas …
43 code-golf  string 

23
生命,宇宙和一切的答案[关闭]
简介:深入的思想计算在750万年的时间里,解决宇宙和万物生命的答案是42。 用任何编程语言编写一个程序75,从您想要的任何内容开始,大约要花费几秒钟的时间进行计算,然后输出number 42。 注意:该数字42必须以某种方式计算(随机数,无论您喜欢什么),而不仅仅是在脚本中进行硬编码。 如建议的那样,您不能使用sleep或等效功能。有创造力。

21
一个环统治他们全部。一个包含所有字符串的字符串
目标:输出一个字符串,其中包含每个严格低于1000的正整数。 显而易见的答案是将它们中的每一个串联起来,这将创建一个2890个字符的字符串(感谢manatwork),为避免这种简单的答案,字符串的长度必须小于1500个字符。这是输出1200个字符的String的简单Java代码。 import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.TreeSet; import static org.junit.Assert.assertTrue; /** * Created with IntelliJ IDEA. * User: fab * Date: 05/11/13 * Time: 09:53 * To change this template use File | Settings | File Templates. */ public class AStringToContainThemAll { @Test public void testsubStrings() throws …

30
字母数字Hello World [关闭]
您的目标是写“你好,世界!” (减去引号)。这是一场人气竞赛,因此最多的选民获胜。代码长度将用于打破平局。 只要符合以下规则,一切都会进行: 所有字符都必须是字母或数字,因此只能使用字符串“ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”中的字符。 您使用的所有代码都必须在一个文件中,但导入的模块/类/以您喜欢的语言调用的任何内容除外。 仅允许使用您选择的语言的标准库/框架(例如,允许使用Python的Math模块,但不允许使用Numpy,Scipy和Pygame)。我将允许使用TkInter,因为它是Python中GUI的事实上的标准。 不允许输入,无论是从stdin读取,读取文件,显示图像还是从Web读取。 如果您弄清楚如何在Java中完成操作而又不违反规则,则可得到+10布朗尼点。 在您的标记上,设置代码! 编辑:括号({}),方括号([])和括号(())是允许的,因为如果没有它们,对于大多数语言来说这几乎是不可能的。我还要删除字符数限制规则。希望这会使它变得更有趣。 编辑^ 2:也允许空格。对不起,我的大脑无法正常工作。>。<

28
快速,廉价和良好-选择任意两个
作为程序员,我们都知道这样一句话:“您可以快速而好用,但它不会便宜,您可以廉价而好,但它不会很快,或者您可以快速而又便宜。 ,但这不会很好。” 为了应对这一挑战,您正在为您的自定义编程服务实现一种虚拟配置工具。您应该呈现一组三个复选框,标题为“ SELECT ANY TWO”(选择两个): SELECT ANY TWO ☐ FAST ☐ CHEAP ☐ GOOD 选择两项后,必须禁用第三项。取消选择两个选定项目之一后,必须再次启用所有选项。换句话说,如果选择了零个或一个项目,则仍将全部启用,但是如果选择了两个,则必须禁用第三个。 不允许特殊控制。复选框应该是您选择的语言中的标准复选框。例如,如果您的语言只有一个,则不要使用“ CheckBoxList”控件。我想象大多数条目将是HTML / jQuery,但这不是规则。这是代码高尔夫,正在寻找最短的入场券。 优胜者 我将其分为几类。有一些明显的赢家: jQuery: nderscore,在排除文本“资源”时,韧度低于100b的先生。值得一提的是,Matt介绍了许多受启发的jQuery概念。 Dyalog APL: marinus,又名Unicode先生您如何键入所有这些内容?我明白了您为什么要编写简短的程序。 PHP: SuperScript我认为这是最短的条目,实际上是按照最严格的规则解释,实际上是禁用而不是取消选择第三个选项。

7
(重新)实施俄罗斯方块
本着重新实现经典视频游戏的精神,我想邀请社区创建他们最好的《俄罗斯方块》实现。 供参考,是俄罗斯方块官方NES版本的屏幕截图。 必备功能 必须建立一个合理的计分系统,该系统对多行清除的奖励要高于单行清除的奖励。当前分数必须始终可见。 必须以某种方式指出将要出现的下一个片段。 七个四聚体的分布应该相当均匀(即伪随机选择)。 用户必须具有在两个方向上旋转当前零件以及加速其下降的能力。 游戏结束后,应清楚地表明游戏已经结束。 源代码必须结构化且易于理解。 可选功能 经过一定数量的清除(例如增加难度级别)后,提高下降速度,并且每行清除的分数与速度成正比。 重力。您可以选择实现“经典”重力,其中块可以保持漂浮在间隙上,或者可以选择实现“溢流填充”重力,在这种情况下,已通过线间隙与原始四聚体分离的块可能会掉落。差距。 高分数与名字输入。 行后和/或获得新的高分之后的动画。 局限性 使用的任何库(jQuery,PyGame等)都应免费提供。 源代码的大小不能超过4096字节,空格和注释除外。任何外部资源(数据文件,图像等)都将添加到代码长度中,不包括生成的任何文件(例如,高分)。 我意识到这是一个相当随意的限制;我的主要目标是不鼓励复制现有的实现,并鼓励简洁和独立。 获奖标准 该挑战赛将被评选为人气竞赛,这意味着投票最多的参赛者将被选为获胜者。投票时,我鼓励用户投票他们认为充分满足上述要求的所有提交。 第一个有效解决方案将在不超过2周的时间内选出优胜者。此外,我将向获奖者颁发赏金,大致与该问题获得的投票数成正比(10 * #votes向上舍入至最接近的50)。如果两周的比赛结束后出现平局,比赛时间将延长一星期。如果仍然有平局,我保留进行最后表决的权利。 请要求任何澄清。愿最佳实施获胜!

30
定义一个函数f,使所有非零整数n的f(f(n))= -n
我经常访问一个编程博客,激发了这一挑战。请在此处查看原始帖子:编程难题 挑战 定义一个函数f:Q->Q,以便f(f(n)) = -n对所有非零整数n,其中,Q是有理数的集合。 细节 请使用您喜欢的任何语言定义一个函数或程序f,该函数或程序接受一个数字作为参数n并返回或输出一个数字f(n)。 可以通过最适合您的语言的机制来提供输入:函数自变量,从STDIN读取,命令行自变量,堆栈位置,语音输入,帮派标志等。 输出应该是功能/程序的返回值或打印到STDOUT。 我想将答案限制为不利用程序状态或从函数外部可见的全局内存/数据的函数f。例如,将计数器保留在该计数之外将对调用f次数f进行计数,并且仅基于此计数进行否定对任何人来说都不是挑战或有趣的事情。做出的决定f应仅依赖f词法范围内的数据。 但是,此限制可能不适用于某些面向堆栈的语言或其他无法区分这些类型的数据或范围的语言。请运用您最好的判断力来迎接挑战的精神。 计分 通用代码高尔夫规则适用-您的得分是源代码中的字节数。 最小答案要求的域和共域是f有理数的子集Q。如果将的域和共域限制f为整数Z,则分数是源代码中字节数的90%的上限。 抢七 如果出现平局,将按以下顺序使用: 源代码中可打印的非空白符号数量最少 最早提交答案的日期和时间 编辑 您不需要支持任意大小的数字。请使用您选择的语言(通常分别为整数和浮点)解释集合Z和Q数据类型。 如果您的解决方案完全依赖于数据类型的基础结构或位模式,请描述其局限性以及如何使用它。

30
播放声音,任何声音[关闭]
您的程序必须使计算机发出声音,任何声音。 最短的代码获胜,不得早于第一个有效答案后的10天之内。如果有平局,则较早提交的一方获胜。 该程序应在合理的,不太常见的个人计算机上运行。 根据很多设置,打开弹出窗口,消息框等(例如在网页上)等不计在内,因为它们可能会或可能不会发出声音。 仅在控制台上输入错误的命令或无效字符并接收到警告蜂鸣声就不算在内,就像编译器/解释器/ OS在错误或崩溃时发出蜂鸣声也不算在内。您的代码必须是有效的程序。
43 code-golf 

2
面部识别
此任务的目的是识别,清理和标记任何给定“图像”中的所有面孔。 脸上是什么? 人脸将是ZxZ正方形,其中Z是大于1的奇数整数。左上角和右上角以及中心将是'O'字符,而底线将是一个'\'和一个'/'足够包围'_'字符填充其余行。例子: 3x3的脸: O O O \_/ 5x5的脸: O O O \___/ 7x7的脸: O O O \_____/ 等等 输入项 输入将在STDIN上,并且将由多个等长的字符串组成。 输出量 输出应该是输入,所有可识别的面部都被清除(即,除了眼睛,鼻子和嘴巴以外的所有字符都应从面部的范围内删除)并装箱(由+,-和|字符包围)。当两个或更多的脸重叠时,应将其清除并装箱,但应优先处理较大的脸(应放在最上面);如果两个面孔的大小相同,则优先级由实施者决定。如果输入没有面孔,则输出应与输入相同。 一些例子 输入: ******* ******* **O*O** ***O*** **\_/** ******* ******* 输出: ******* *+---+* *|O O|* *| O |* *|\_/|* *+---+* ******* 输入(不完整的面孔): ******* ******* **O*O** ******* **\_/** ******* …

30
输出序号(第一,第二,第三)
我想生成(作为函数的返回结果,或仅作为程序的输出)与数字连接的正整数的序数后缀。 样品: 1st 2nd 3rd 4th ... 11th 12th 13th ... 20th 21st 22nd 23rd 24th 依此类推,后缀每10个重复最初的1-10个子模式,直到100个,该模式最终重新开始。 输入将是数字,输出将是如上所示的序数字符串。 最小的算法是什么?

30
画一个Sierpinski三角形
Sierpinsky三角形是通过截取三角形,将高度和宽度减小1/2,创建3个所得三角形副本并将每个三角形与其他两个三角形接触的方式创建的分形。如下图所示,对生成的三角形反复进行此过程,以生成Sierpinski三角形。 编写程序以生成Sierpinski三角形。您可以通过绘制实际三角形或使用随机算法生成图片来使用想要生成图案的任何方法。您可以绘制像素,ascii艺术作品或任何您想要的东西,只要输出看起来与上面显示的最后一张图片相似即可。最少的角色获胜。

3
克莱因地形学
克莱因(Klein)是我设计的2D语言,可以嵌入12种不同的拓扑表面。通过更改命令行参数,可以在不同的表面上运行Klein程序。 拓扑确定指令指针离开程序边缘时的位置。当移出边缘时,ip将跳至具有匹配颜色的边缘,并保持其相对于箭头的位置,即指针将保留其与箭头的距离。 例如topology 000,大多数2D语言使用的topology ,当离开边缘时,会使指令指针环绕到另一侧。 任务 任务非常简单,编写一个Klein程序,该程序在运行时将输出其运行所在的拓扑。各个数字可以用空格分隔。(例如000和0 0 0都是允许的输出)。您可以选择使用或忽略-A命令行标志,如果使用它不会花费您的字节数。 这是代码高尔夫球,所以最短的答案将是赢家。 这是一个在线测试驱动程序,可用于一次测试所有拓扑。要以整数模式运行,请删除-A。

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.