Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

30
从列表中生成带有牛津逗号的单个字符串
有什么巧妙的(简短而惯用的)方法来获取字符串列表,并返回一个从列表中构建的正确标点的字符串,并用引号将每个元素引起来。 这是我在尝试Groovy时想到的,对于我来说,我的字面意思是,但过于说明性的解决方案是 def temp = things.collect({"\'${it}\'"}) switch (things.size()) { case 1: result = temp[0] break case 2: result = temp.join(" and ") break default: result = temp.take(temp.size()-1).join(", ") + ", and " + temp[-1] break } 也就是说,['1']应该yield '1',['1','2']应该yield '1 and 2',[请参阅我在那里做的吗?],并且['1','2','3']应该yield '1, 2, and 3'。 对于Groovy,我有一些很好的答案,但我想看看其他语言可以做什么。 在各种语言中,有什么紧凑的巧妙方法可以利用这些语言的功能和习惯用法?

21
该日期最后一次是什么时候可以被n整除?
日期可以用无符号整数表示,例如:YYYYMMDD。您需要做的是编写最短的程序或函数,找出最接近的日期,该日期或日期可被给定的数字整除n(包括今天的日期),然后以上面显示的格式返回该日期。如果从未有过可被给定整数整除的日期(介于00000101和今天之间),则应返回-1。 例子 Current Date Input Output 30 July, 2014 4 20140728 30 July, 2014 7 20140729 28 July, 2014 4 20140728 28 July, 2014 7 20140722 28 July, 5 90000 -1 输入项 您可以从STDIN读取或接受函数参数,甚至可以期望将输入存储在变量中。输入将是一个无符号整数。 输出量 写入STDOUT或以YYYYMMDD格式返回(或保存在变量中)表示日期的整数。 限制条件 您可以使用您的语言提供的任何标准库。有标准漏洞。 获奖条件 这是一个代码高尔夫球,因此以最小的程序(以字节为单位)获胜。如果是平局,则以票数最多的答案为准。
24 code-golf  date 

4
安全地在C中添加两个数字
众所周知,C是一种可爱,安全,高级的编程语言。但是,作为编码员,您需要设置以下任务。 编写一个程序,将两个数字相加。 输入:两个以空格分隔的整数。 输出:输入中两个数字的总和。 不同之处在于您的代码必须是100%安全的。换句话说,无论输入是什么,它都必须正常运行。如果输入确实是两个用空格分隔的整数,且两个整数均小于100位,则必须输出和。否则,它必须输出错误消息并安全退出。 到底有多难? 病理输入案例会给别人以其他的答案:) 使用ubuntu上的gcc -Wall -Wextra,代码必须在没有警告的情况下进行编译。 澄清。 输入来自标准输入。 水平空格仅是单个空格字符。第一个数字前不应有任何内容,并且输入应以换行符+ EOF或仅以EOF终止。 用增强Backus-Naur形式指定的唯一有效输入是: NONZERODIGIT =“ 1” /“ 2” /“ 3” /“ 4” /“ 5” /“ 6” /“ 7” /“ 8” /“ 9” POSITIVENUMBER = NONZERODIGIT * 98DIGIT NEGATIVENUMBER =“-” POSITIVENUMBER NUMBER = NEGATIVENUMBER / POSITIVENUMBER /“ 0” VALIDINPUT …
24 code-golf  c 

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 = …

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 - …

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单元 网格的边缘不能环绕(不是圆环)。将场外的细胞视为不断“空白”。 用户必须有可能输入自己的启动配置。 盯着黑屏不好玩。该程序必须在运行时直观地显示模拟。 这是代码高尔夫,最少的字节数获胜。

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 

3
产生牛顿分形
你们都知道牛顿法可以近似函数的根,不是吗?我在此任务中的目标是向您介绍该算法的一个有趣方面。 牛顿算法仅针对某些但所有复杂的输入值进行收敛。如果您描绘了复杂平面上所有输入值的方法的收敛性,通常会得到一个漂亮的分形,如下所示: 图片来自维基共享资源 技术指标 此任务的目标是生成此类分形。这意味着,您将获得多项式作为输入,并且必须以您选择的格式将相应的分形作为图像打印输出。 输入项 输入是用空格分隔的复数列表。它们在风格写下来<Real part><iImaginary part>,这样的数字:5.32i3.05。您可能会假设输入数字的位数不超过4个且小于1000。它们中的第一个不能为零。例如,这可能是您程序的输入: 1 -2i7.5 23.0004i-3.8 i12 0 5.1233i0.1 数字被解释为从最高幂开始的多项式系数。在本说明书中的其余部分,输入多项式称为P。上面的输入等于这个多项式: f(x)= x 5 +(-2 + 7.5 i)x 4 +(23.0004-3.8 i)x 3 + 12 i x 2 + 5.1233 + 0.1 i 输入可能来自标准输入,传递给程序的参数或显示给程序的提示。您可以假定输入不包含任何前导或尾随空格字符。 渲染图 您必须通过以下方式渲染分形: 选择尽可能多的颜色作为P的根,再加上额外的颜色以发散 对于可见平面中的每个数字,确定方法是否收敛,如果是,则收敛到哪个根。根据结果​​为点着色。 不要打印标尺或其他花哨的东西 在这些点上打印一个黑点,这些点是定向的多项式根。每个根周围最多可以打印四个像素。 找到一种方式来选择可见平面,所有根都是可区分的,并且在可能的情况下在整个平面上广泛分布。尽管不需要完美放置输出框架,但我保留拒绝接受以不可接受的方式选择框架的答案的权利。总是在同一坐标上,所有根都在一个点上,依此类推。 输出图像的大小应为1024 * 1024像素。 渲染时间最长为10分钟 使用单精度浮点值就足够了 …

22
高尔夫代码:6174-卡普雷卡的神话常数
此问题是从Stack Overflow 迁移而来的,因为可以在Code Golf Stack Exchange上回答。 迁移 8年前。 为什么数字6174如此有趣?根据维基百科的定义 至少使用两个不同的数字,取任意四位数的数字。(允许前导零。) 按升序排列数字,然后按降序排列以获得两个四位数字,并在必要时添加前导零。 从较大的数字中减去较小的数字。 返回步骤2。 以上过程称为Kaprekar例程,最多7次迭代将始终达到6174。一旦达到6174,该过程将继续产生。 编写一个程序,对给定的四位数数字(请参见上面的定义)运行Kaprekar例程,以打印出例程的每个步骤。 规则: 提交的内容必须是完整的程序。 输入必须从标准输入中读取。从回显管道可以。 输入应为数字形式。 需要打印出前导零。(请参见下面的示例。) 最后一行应说明需要进行多少次迭代。标点符号是必需的。 例子: > 2607 7620 - 0267 = 7353 7533 - 3357 = 4176 7641 - 1467 = 6174 Iterations: 3. > 1211 2111 - 1112 = 0999 9990 - …

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.