编程拼图和代码高尔夫

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

3
在Cat中隐藏信息
您是试图与祖国沟通的秘密特工。当然,信息需要隐藏,因此没人会掉落您的信息。有什么比猫更合适的呢?每个人都喜欢猫的有趣图片[需要引用],因此他们不会怀疑其中隐藏着秘密信息! 受到摩纳哥用来保存共享关卡的关卡信息的算法的启发,编写一个程序将信息编码为图像颜色的最低有效位是您的任务。 编码格式: 前24位确定剩余编码字节串的长度(以位为单位) 从左到右和从上到下读取图像,显然从左上像素开始 从红色到绿色到蓝色读取通道 读取每个通道的最低有效位 位按大端顺序保存 规则: 您的程序需要对单个字节字符串进行编码,并对基本映像使用单个映像文件名 生成的图像必须作为真彩色PNG文件输出 您可以使用任意形式的I / O(ARGV,STDIN,STDOUT,从文件写入/读取),只要您声明如何使用程序即可 您必须随机选择一个有趣的猫咪图片并将其编码到其中,以表明您的程序可以正常工作 您可以假设只提供了有效的输入,如果位数不足,图像不是真彩色格式,图像不存在或类似的问题,您可以做自己想做的事情 您可以假定所提供的图像不包含任何Alpha通道 长度以不带BOM的UTF-8字节计数 您可以使用此PHP脚本来测试您的解决方案,并提供PNG文件的名称作为第一个命令行参数: <?php if ($argc === 1) die('Provide the filename of the PNG to read from'); $imageSize = @getimagesize($argv[1]); if ($imageSize === false) die('Not a PNG file'); list($width, $height) = $imageSize; $image = …

5
山丘之王:速度线索AI
速度线索 Cluedo / Clue是一款经典的棋盘游戏,具有引人入胜的演绎游戏元素。Speed Clue是3-6位玩家的变体,仅使用纸牌来强调此组件。结果是标准Cluedo和Speed Clue之间的唯一区别是,仍在游戏中的每个玩家都可以在转弯时提出自己喜欢的任何建议,而不必等着掷骰子和其他玩家的建议等待到达特定的房间。如果您以前从未玩过Cluedo,或者想确定两个版本之间的明显区别,可以在此处找到完整的Speed Clue规则集。 目标 在2014年5月15日格林威治标准时间00:00之前编写并提交AI程序来玩Speed Clue。在那之后,我将使用所有合法条目进行比赛。AI在比赛中赢得最多比赛的参赛者将赢得挑战。 AI规格 只要AI 通过TCP / IP连接严格使用应用程序协议来与服务器玩游戏,就可以使用几乎任何语言编写您的AI,无论使用哪种技术。有关所有限制的详细说明,请参见此处。 怎么玩 首先分叉竞赛GitHub存储库。在entries使用您的StackExchange用户名命名的目录下添加目录 ,并在该文件夹中开发代码。当您准备提交条目时,请提出您的修订请求,然后按照以下说明进行操作在此站点上宣布您的条目。 我已经在core目录中提供了一些代码和JAR,以帮助您入门。请参阅我的网站以获取有关材料的粗略指南。此外,其他参与者除了输入内容外,还提交了辅助代码,以帮助您启动和运行。花一些时间浏览这些条目,并且不要忘记在提交之前将您的条目与其他条目进行测试! 结果 Place | User | AI | Result ------+--------------+--------------------+------------------------------------------------------- 1 | gamecoder | SpockAI | 55.75% 2 | Peter Taylor | InferencePlayer | 33.06% 3 | jwg | CluePaddle | 20.19% …

8
创建非图拼图
一个nonogram是一个二维的逻辑拼图,看起来是这样的(从游戏截图Pixelo,我最喜欢的游戏nonogram): 游戏的目的是弄清楚这些数字在编码什么图像。规则很简单:列或行上的数字表示该列或行中的某个位置,一行中填充了许多框。例如,上图的最下面一行必须没有盒子被填满,而其上面的那一行必须所有盒子都被填满。底部的第三行有8个填充的框,它们都将连续放置。 同一列或同一行的两个或多个数字表示存在多个“行”填充框,这些填充框之间至少有一个空格,且具有这些长度。订单被保留。例如,上图的最右边一列有三个填充框,在它们下方至少有一个空格,然后还有一个填充框。 这是同样的难题,几乎完成了: (X并不重要,它们只是提示玩家让他们自己说“这个正方形肯定没有填满”。请考虑Minesweeper中的标志。它们没有规则的含义。) 希望您能看到,例如,带有提示“ 2 2”的中间列有两个2长度的填充框。 您的任务(如果您选择接受)是编写一个程序或函数,它将引起类似的困惑。您可以在stdin上将板子的大小指定为单个整数(5 <= n <= 50)或作为参数(无图谜题必须是正方形的,没有理由,但是对于这个挑战而言,它将是正方形)。之后,您将获得一系列1和0,分别代表图像中的实心和未实心正方形。它们的前n个是第一行,然后是下一行,依此类推。您将返回或打印以2 * 1单元的标准显示板(因为它们看起来更好,并且为列提供了两位数字的提示空间) ),它们全部为空,提示与输入数据相对应。 输出格式 样品 输入: ./nonogram <<< '5 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0' OR n(5,[0,1,1,1,0,1,1,0,1,1,1,0,1,0,1,1,1,0,1,1,0,1,1,1,0]) 图片: …
24 code-golf 

1
查找多项式的实根
编写一个自包含的程序,当给定一个多项式和一个界限时,它将发现该多项式的所有实根都达到不超过界限的绝对误差。 约束条件 我知道Mathematica以及其他一些语言都有一个符号解决方案,这很无聊,因此您应该坚持原始操作(加,减,乘,除)。 输入和输出格式具有一定的灵活性。您可以通过stdin或命令行参数以任何合理的格式进行输入。您可以允许浮点数,或者要求使用某些有理数表示形式。您可以采用边界或边界的倒数,如果您使用的是浮点,则可以假定边界不小于2 ulp。多项式应表示为一个单项式系数列表,但可以是大端或小端的。 尽管没有必要提供完整的内联证明,但是您必须能够证明您的程序为何始终可以工作的原因(模数问题)。 该程序必须处理具有重复根的多项式。 例 x^2 - 2 = 0 (error bound 0.01) 输入可以是例如 -2 0 1 0.01 100 1 0 -2 1/100 ; x^2-2 输出可以是例如 -1.41 1.42 但不是 -1.40 1.40 因为那有大约0.014的绝对误差... 测试用例 简单: x^2 - 2 = 0 (error bound 0.01) x^4 + 0.81 x^2 - …

1
康威的Hello World
人们常说,所有程序员只要瞥一眼任何语言,就应该能够用任何一种编程语言编写一个“ hello world”程序(再看一眼,就可以快速排序)。 由于Conway的《人生游戏》已经完成了图灵(因此符合通用编程语言的要求),这个问题不言而喻: 创建一个“ Hello World!” 仅使用Conway的生命游戏的应用程序!唯一有效的条目是Conway的生命游戏的初始状态,该状态为: 不包含任何类似于文字“ Hello World!”的可识别形状。 将包含类似于文字“ Hello World!”的可识别形状。在合理的周期数内(在一台好的PC上,它不应运行超过几分钟-这可以实现数十亿个周期,应该足够了) “ Hello World!”所在的区域 文本将在初始状态下显示为空!(否则问题将很容易解决)如果没有人设法做到这一点,我们可以将这一要求减少为“大部分为空” 得分: 获胜者将基于第一次有效提交后约一周内的投票数。 投票准则: 更精致,更漂亮的输出值得更多 在许多周期内保持稳定的输出应该比在下一个周期内逐渐消失而无法识别的值要多。 锁定在一个永久循环中或从一个有趣的模式开始的解决方案是最有价值的,因为它证明了状态的智能设计,而不仅仅是逆向模拟的随机试验和错误。 该条目应采用应答者链接到的著名模拟器或在线模拟器中的至少一个可读的格式。也接受(甚至鼓励)链接(指向设置为初始状态的动画或模拟器的链接)。如果输出在几个周期内不可见,则条目应指定在哪个周期后结果可见。 编辑: 要生成的短语可能会有一些容忍度。可以是“ Hello, World!”,“ hello, world”“ HELLO WORLD!”等。

6
蓬松的鸟克隆:)
每个人都为删除那个愚蠢的“ Flappy Bird”游戏而感到恐惧。因此,您的任务是创建“ Flappy Bird Clone”游戏。真的很简单。以下是指导原则: 它可以使用ascii艺术或真实图像 您可以通过单击或按键来制作“鸟”形襟翼 它应尽量短一些,因此应使用代码高尔夫球标记。 这是一个示例:http : //www.reddit.com/r/learnprogramming/comments/1xiimx/i_couldnt_sleep_so_i_cloned_your_flappy_bird/ 为了成为“ Flappy Bird Clone”,您的游戏需要具备以下条件: 鸟或其他角色 按下键或单击/点击时,“小鸟”应略微向上移动 如果没有点击/点击/等,“小鸟”应该迅速向下移动 管道或其他障碍物应在屏幕上向左移动,从而产生飞鸟在移动的错觉 管道上应留有一个小的间隙,以使家禽可以飞过。 每当您通过管道之间的间隙时,您的分数就会增加1。 如果您碰到管道或地面,游戏将结束并显示您的得分。 它实际上并不需要是“鸟”或“烟斗”,它们都可以是ascii。这是一个飞扬的鸟形屏幕的极小示例: / ----- [4] ----- \ | || || | | || ¯| | || O> | | ¯__ | | __ || | | || || …
24 code-golf  game 

4
制作Voronoi图(ASCII变体)
假设您得到了一些分散在空白单元格矩形阵列中的不同大写字母。数组中的每个单元格都属于最接近它的字母,定义为以最小水平和/或垂直步长即可到达的字母-没有对角线步长。(如果一个像元与两个或更多个最近的字母等距,则它属于那些字母中第一个字母的字母顺序。其中一个大写字母的像元属于该字母。)边界像元是水平或垂直的像元与一个或多个不属于其自身字母的单元格相邻。 编写一个具有以下行为的过程子程序,生成一种Voronoi图 ... 输入:仅由点,大写字母和换行符组成的任何ASCII字符串,以便在打印时显示上述类型的矩形数组,其中点充当空白。 输出:输入字符串的打印输出,每个空白边界单元格都被其所属字母的小写字母替换。(子程序进行打印。) 例子1 输入: ......B.. ......... ...A..... ......... .......D. ......... .C....... .....E... ......... 输出: ...ab.B.. ....ab.bb ...A.abdd aa...ad.. cca.ad.D. ..caeed.. .C.ce.edd ..ce.E.ee ..ce..... 概述边界的草图: 例子2 输入: ............................U........... ......T................................. ........................................ .....................G.................. ..R.......S..........F.D.E............I. .........................H.............. .....YW.Z............................... ......X................................. ........................................ ........................................ ......MN...........V.................... ......PQ................................ ........................................ .............L...............J.......... ........................................ ........................................ ....C...........K....................... ........................................ ..................................A..... ...........B............................ 输出: …

3
用6个或更少的招式解决主脑
您的目标是编写一个程序,以6步或更少的动作解决所有Mastermind难题。 背景 策划大师是一个棋盘游戏。游戏的目的是准确猜测另一位玩家隐藏的4个彩色钉子的组合(颜色和顺序)。做出猜测时,另一位玩家以0到4之间的白色和/或红色钉子回应。红色的钉子是颜色和位置正确的地方。白色的钉子在其余部分中代表颜色,但位置不正确。如果猜测中有重复的颜色,则秘密中每种对应的颜色只会奖励一个钉子。(所以-如果机密中包含1个蓝色,并且猜测中有2个蓝色,其中一个在正确的位置,则将给出一个红色的钉子)。有6种不同的颜色,并且可以使用重复的颜色。 因此,例如,一个游戏可能会如下所示:(假设解决方案是Red Green Green Blue) 1: Blue Purple Black Green - 2 white pegs 2: Green Red Black Blue - 2 white pegs, 1 red peg 3: Green Green Green Blue - 3 red pegs 4: Red Green Green Blue - 4 red pegs 规则在Wikipedia上得到扩展 要求 该程序必须从stdin读取并写入stdout 为了简单起见,我将使用数字代替颜色。猜测的组合将是1到6之间的4个数字 …
24 code-golf 

8
模拟Wireworld元胞自动机
Wireworld是一种细胞自动机,其设计类似于流过电线的电子。它的简单机制允许构建数字电路。它甚至允许建造整个计算机。 您的任务是使用您选择的语言创建最短的Wireworld实现。 网格中的每个单元都有四个状态之一。四个状态为“空白”,“铜”,“电子头”或“电子尾”。 空白单元格将始终是空白单元格 电子头永远变成电子尾 电子尾巴将永远变成铜 如果一个铜电池中的八个邻居中恰好有一个或两个是电子头,它将变成一个电子头,否则它将保持为铜 这项比赛的风格与“ 最短生命游戏”比赛类似,但有一些变化。 网格必须至少为40 x 40单元 网格的边缘不能环绕(不是圆环)。将场外的细胞视为不断“空白”。 用户必须有可能输入自己的启动配置。 盯着黑屏不好玩。该程序必须在运行时直观地显示模拟。 这是代码高尔夫,最少的字节数获胜。

6
写出最漂亮的字节拍组合
Bytebeat是一种音乐风格,您可以通过编写一个简单的C程序(将输出通过管道传递到aplay或)来编写/dev/dsp。 main(t){for(;;t++)putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);} 在bytebeat网站上有很多信息,一个javascript实现,以及该线程中的更多演示和示例组成。 非常简单的规则:尝试写出听起来不错的作品。大多数上选票获胜,因为这显然是主观的,尽管考虑到通常的结果并不是那么主观。

26
历久不衰
受到SO上这个问题的启发,您的任务是生成一个程序,该程序在(至少)您选择的语言的两个主要版本中有效,并且会产生不同的输出。 规则 可以使用具有多个主要版本的任何语言。 出于此挑战的目的,我建议“主要版本”是版本号中第一个数字更改的地方。 PHP 4和PHP 5不同,PHP 5.3和PHP 5.4没有不同。 但是,由于我不知道所有语言的版本控制方案,因此,如果您能充分辩护您的情况,那么我相信社区将确定您自己确定“主要版本”是否公平。 该代码必须使用相同的标志进行编译和运行,并且每次都要输入 如果需要的话,更改语言版本除外 错误不算作输出,产生错误的答案不合格(而不是错误输出被忽略) 该程序应只输入使其运行所需的输入。 对于每个给定的版本,输出应始终相同 目的是,更改应该是语言规范而不是VM规范或环境元数据更改的结果 计分 长度的代码高尔夫球类型得分,因此+1每个字符/字节 -1每个字符在输出长度上的差异。 例如,版本1输出abcde(5个字符),版本2输出123abc(6个字符)=-1 其他规定 适用标准例外-无需外部程序,Web请求等。 您的程序应终止(在2秒内) 最低分获胜。 “更好”的得分 保留您的原始答案,为了公平起见,我将根据原始规则标记获胜者。 由于我的原始评分从根本上被打破,为什么不使用以下评分系统重新评分/重试: 长度的代码高尔夫球类型得分,因此+1每个字符/字节 +1针对每个字符的输出 长度差异 abcde和123456->+1 -1对于输出中的每个唯一字符差异(限制为最短输出的长度) abcde和123456->-5 12345和123456->-1 12345和123455->0 分数最接近零赢 如果出现第二次抢七,则简单的代码高尔夫比分获胜。

30
编写一个hello world GUI程序,三秒钟后关闭
请阅读规则,以及粗体字部分。 只要具有对窗口系统的GUI支持(不能是文本控制台等,并且必须是GUI / toolkit / window),就可以用任何语言编写程序。 程序必须以任何方式(问候图像,菜单栏,状态栏,标题,视频,消息框,其他小部件内容等)打招呼,只要符合GUI的窗口并显示此文本三秒钟。可以使用最少的代码(以字节为单位)进行编码的人会很容易。

8
生成吉他标签?
编写最短的程序,为输入的和弦生成吉他标签。 为了使你们中的吉他手没有优势,并使其具有确定性(可能更容易编码),以下是授权的和弦的唯一形式: Major chords: E F F# G G# A A# B C C# D D# e 0---1---2---3---4---0---1---2---3---4---5---6--- B 0---1---2---3---4---2---3---4---5---6---7---8--- G 1---2---3---4---5---2---3---4---5---6---7---8--- D 2---3---4---5---6---2---3---4---5---6---7---8--- A 2---3---4---5---6---0---1---2---3---4---5---6--- E 0---1---2---3---4---0---1---2---3---4---5---6--- Minor chords: Em Fm F#m Gm G#m Am A#m Bm Cm C#m Dm D#m e 0---1---2---3---4---0---1---2---3---4---5---6--- B 0---1---2---3---4---1---2---3---4---5---6---7--- G 0---1---2---3---4---2---3---4---5---6---7---8--- D 2---3---4---5---6---2---3---4---5---6---7---8--- …

12
斯卡拉高尔夫技巧
您在斯卡拉打高尔夫球有哪些一般秘诀?我正在寻找可用于编码至少在某种程度上特定于Scala的高尔夫问题的想法(例如,“删除评论”不是答案)。请为每个答案发布一个提示。 (这是Python中...的无耻复制)
24 code-golf  tips 

30
混淆挑战[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 您将要编写一个执行以下操作之一的程序。 仅显示“ Hello World”没有其他作用 退出,别无其他(无输出,无错误。) 接受一行输入,将其解析为整数,显示第一个多质数(如果给定的输入无法解析为整数或小于0,则给出一个很好的错误。) 给定一行输入,它将解析它具有股票代号,并在线检查当前股票价值及其变化。 捕获,它执行哪个功能应该不明显。即,对于正在查看您的代码的人来说,应该知道它将执行哪个功能。同样,它可能仅执行并且能够执行一项功能(无法选择)。程序的好坏取决于某个人对它的功能的不确定程度,以及对其的熟悉程度。人就是那种语言。 奖励:如果您以巧妙的方式做到这一点,尽管对于任何一个编译器/解释器和平台,该程序也将执行相同的功能,不同的编译器/解释器或平台,但将执行不同的功能。如果做得好,则只能收取此奖金。 奖励:如果您的程序仅包含能够执行一个功能的代码(不保存任何内容,因为空代码可以执行此功能),并且无法进行与该功能无关的简单修改以使其执行另一功能。例如:如果您做了 obfuscatedBool = 1g8uhad'l8fygrcetdu8y4fd/,.oe87fy4d --Magic if obfuscatedBool: print "Hello World" 不能认为obfuscatedBool可以设置为True或False,以使其打印“ Hello World”或什么都不做。 无限奖金:如果您同时实现了两个奖金,那么您就是魔术。 负积分:使用具有特定功能的库来执行功能。 选民,请考虑奖金,因为获得最多选票的计划将获胜! 注意:如果要说程序的作用,请确保使用扰流器语法!

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.