Questions tagged «code-golf»

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

3
Squarefinder –定位规则四边形
想象一下在平面上绘制的一堆矩形,每个矩形的顶点在整数坐标处,并且其边平行于轴: 矩形将平面划分为多个不相交的区域,下面用红色和蓝色表示: 您的目标是找到这样的正方形的区域数量。在上面的示例中,有三个: 注意,中间的大方块不是一个单一的区域,因此不算在内,而是由几个较小的不相交的区域组成。 输入项 您可以为此挑战编写函数或完整程序。 输入将是在平面中4n定义n矩形的非负整数。每个矩形由两个相对的顶点4 9 7 8表示,例如代表具有相对的顶点(4, 9)和的矩形(7, 8)。请注意,此矩形也可以表示为7 8 4 9或4 8 7 9。 确切的输入格式是灵活的(例如,以空格分隔的字符串,以逗号分隔的字符串,单个整数数组,坐标元组列表等),但是请保持合理,并举例说明如何在您的帖子中运行代码。您不能重新排序输入。 为简单起见,您可以假设没有两条边重叠-这包括在顶点处重叠。特别是,这意味着没有两个矩形将边到边或角到角接触,并且这些矩形将具有非零面积。 输出量 您的程序应打印或返回一个整数,即整数个正方形区域。 计分 这是代码高尔夫,所以最少字节的代码将获胜。 测试用例 输入: 0 0 5 5 6 8 10 4 14 16 11 13 19 1 18 2 输出: 4 这只是四个不相交的正方形: 输入: 2 1 3 11 …

7
保证寓言
这里有很多人可能是XKCD的狂热读者。因此,我想我会挑战你们做梅根可以轻松完成的事情:制作一个脚本,生成有关计算机永远无法做的数千个令人放心的寓言。 你的剧本 可以用任何语言写 必须代码编码 必须输入stdin将要吐出的寓言数量(使用或等同于您的语言)(您可以假设此数量不会超过MAX_INT或等同)。 将输出许多随机生成的寓言。 寓言如下 以。。开始 'Computers will never ' 接下来,您可以自由选择16个独特的英语动词之一来优化程序,但必须包括code-golf和understand。 接下来,是16个唯一的英语名词之一,您可以再次自由选择以优化程序,但必须包括a salad和an octopus。 接下来,您可以自由选择16个独特的英语子句之一来优化程序,但必须包括for fun和after lunch。 以换行符(\n或等效字符)结尾 因此,例如,如果输入为2,则有效输出为 Computers will never code-golf a salad for lunch Computers will never hug a tree in vain 程序大小以字节为单位,而不是以字符为单位(因此,无Unicode乱码)。不允许出现标准漏洞。 这是我的第一个挑战,因此,如果我应该进行一些明显的更改,请发表评论。 编辑:我正在考虑从字节数中减去字典大小,以鼓励字典“压缩”。我将从未来的答案中看出这是否遥不可及;如果是这样,您可以指望奖金。

18
最短排序的Hello World
编写一个无需输入即可打印Hello, World!到stdout或您的语言最接近的替代程序的程序。值得注意的是,程序中的每一行只能包含可打印的ASCII字符,并且必须按字典顺序(也就是排序)排序。 以下是按顺序排列的所有95个可打印ASCII字符: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 因此,例如,该行将!!A0~无效,因为A和0顺序混乱。该行将!!0A~有效。 程序中的每一行可以是任意长度,并且可以有任意数量的行。空行被认为是已排序的。程序中的每个换行符都必须相同(不能混合使用\n和\r\n)。禁止使用制表符和其他不可打印的ASCII字符。 由于需求旺盛,获胜条件已改变: 最少行的提交获胜。Tiebreaker进入最短的程序(换行符视为单个字符)。 仅Hello, World!和可选的尾随换行符应输出。请注意,HQ9 +无效,因为它输出hello, world。我可能会禁止使用类似于HQ9 +的具有一个字符“ Hello,World!”的语言。命令的琐碎性。 暗示: 这是绝对有可能在一元和Lenguage,虽然不是很简明。

1
在MP3文件中查找节拍
在此挑战中,您的任务是以mp3格式进行简单录音,并在文件中找到节拍的时间偏移。这里有两个示例录音: https://dl.dropboxusercontent.com/u/24197429/beats.mp3 https://dl.dropboxusercontent.com/u/24197429/beats2.mp3 这是第三张录音,噪音比前两张大得多: https://dl.dropboxusercontent.com/u/24197429/noisy-beats.mp3 例如,第一张录音的时长为65秒,其中包含准确的(除非我记错了!)76拍。您的工作是设计一个程序,该程序将一个mp3文件作为输入,并输出以毫秒为单位的文件中拍子的时间偏移序列。当然,当吉他演奏者弹奏一根或多根琴弦时,就会发生拍子。 您的解决方案必须: 处理具有类似“复杂性”的任何mp3文件。它可能无法发出嘈杂的录音或无法快速播放旋律-我不在乎。 相当精确。公差为+/- 50毫秒。因此,如果心跳发生在1500毫秒并且您的解决方案报告为1400,那么这是不可接受的。 仅使用免费软件。允许调用ffmpeg,就像使用任何免费的第三方软件来选择您的语言一样。 获胜标准是能够成功检测出节拍,尽管随附文件中有噪音。如果出现平局,则以最短的解决方案为准(不计算第3方代码的长度)。
27 code-golf  music 

30
将一串二进制字符转换为ASCII等效项
取一串用空格分隔的二进制字符,然后将其转换为ASCII字符串。 例如... 1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 将转换为... Hello World 二进制字符串将存储在名为的变量中s。 这是一个代码高尔夫挑战,因此最短的解决方案将获胜。

30
将C标头名称转换为C ++标头名称
在C标准库中,标头名称以.h后缀结尾: stdio.h 在C ++中,这些标头名称以另一种形式可用,但带有c前缀: cstdio 编写一个将第一种形式转换为第二种形式的函数。您可以就地进行转换,也可以保留原始字符串不变并返回新字符串。无论您选择哪种语言感到自然。 该代码必须正确编译/解释。编译器警告是可以接受的。 这是您的基准C解决方案。它有70个字符,并生成有关以下内容的警告strlen: void f(char*h){int i=strlen(h);h[--i]=0;while(--i)h[i]=h[i-1];*h='c';} 最短的解决方案(以字符数衡量)获胜。 更新:如果您选择的语言不支持功能,则可以接受整个程序。 更新:正如FUZxxl所建议的,这是C标准库中头文件的完整列表: assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h 具体来说,没有标题名称,其中包含多个点。


17
模拟规则110
规则110是具有一些有趣属性的元胞自动机。 您的目标是用最少的字符来模拟规则110。 对于不知道的人,规则110是在网格中逐行模拟的。网格线中的每个正方形都会查看上方,左上方和右上方的正方形,以确定其应为哪个单元格。 current pattern 111 110 101 100 011 010 001 000 new cell 0 1 1 0 1 1 1 0 输入: 0到39之间的数字,代表任何合理格式(逗号分隔的字符串,列表,函数参数)的第n个输入行的第一行。为了容纳1索引的语言,数字也可以1索引,因此范围是1到40。 输入示例: 38,39 输出:一个40 x 40的网格,代表运行的自动机,包括第一行。您应该将0保留为空白,将1保留为任何可见的打印字符。只要可以合理区分实际网格,就可以使用尾随空格。网格的底部可能有换行符,但网格线之间不应有空行。 输出示例: XX XXX XX X XXXXX XX X XXX XX XX X XXX XXXXXXX X XX XXX XXX XX X …

15
答案和评论数
编写一个软件,在标准输出上打印该问题/页面的答案数和评论数(问题和答案的可见和折叠)。 您的脚本必须在启动时关闭此页面的情况下运行。 预期示例输出: A12C40 其中A代表答案,C代表评论。
27 code-golf 

30
生成包含每个字母4个副本的字母
请注意,这与四次打印字母不同。 此任务是编写一个程序以在标准输出上生成英文字母的每个字母的四个副本,每行一个字母: A A A A B B B B 等等 输出应在每个字母之后包含换行符。 最好使用无额外输出的大写字母;但是,如果大写/剥离会延长您的解决方案,则可以使用小写字母和/或多余的空格。 编辑添加:解决方案必须足够完整才能执行。我应该能够调用该语言的实现,从答案中粘贴代码并获得结果,而无需键入任何其他代码。 上面的完整性问题是在C解决方案的上下文中提出的。当然,在代码高尔夫网站上必须有一个常规的惯例或约定吗?如果是这样,我很乐意屈服于社区准则。但这是我的看法: 特别是对于C语言,您需要在代码周围包括(并计数)main(){... },因为它不会以其他方式编译。#include <stdio.h>只要没有问题,只要代码仍然可以编译,就发出警告。通常,编译语言需要可编译单元。 如果有一种直接执行表达式的方法,则可以产生期望结果的裸表达式是可以接受的。例如,如果该语言具有REPL。所以,你可以不用提交哈斯克尔main=只要它确实可以工作于书面,例如该ghci提示。但是,由于这意味着let要声明,因此坚持使用runhaskell格式可能是一个净赢。 同样,由于我们不处理任何输入,因此awk脚本应位于BEGIN(或END假设stdin附加到/dev/null)块中。 等等

23
我正在曼哈顿走来走去,离酒店有多远?
不必要而复杂的故事 我在曼哈顿走来走去,一步一步走,我的脚已经累了,想回家。 交通非常糟糕,但是幸运的是我非常有钱,而且我有一架直升飞机在酒店待命。但是我需要他们知道为飞机加油多少,并且他们需要知道我与酒店的直接距离。我确实记得我走过哪些街区,可以告诉他们我走了什么路线。但是,该距离需要精确,如果它们太短,我们将不会返回太长,并且我已经购买了无法使用的燃料。 您能给我写一个程序,将其转换成他们要乘飞机旅行所要经过的距离吗? 规格: 给我写一个函数: 接受相对于任意网格行走的块的列表或字符串: ü P,d自己,大号 EFT和- [R飞行。 可以是大写或小写-例如。如果它更短u而不是U继续使用。 无效的方向具有不确定的行为-例如 X方向可能会导致故障。 返回一个float / decimal / double,它是到原点的直线距离的两倍。 为了说明和澄清: 我的行程可能很容易被记录"luluu..."或['l','u','l'...]但必须被记录为上,下,左,右。
27 code-golf 

19
与阶乘数系统相互转换
该阶乘数系统,也称为factoradic,是一个混合基数的数字系统。阶乘决定数字的位数。 在此系统中,最右边的数字可以是0或1,第二个最右边的数字可以是0、1或2,依此类推。这意味着n数字乘数的最大值可以为(n + 1)!。 例如,要将乘数转换24201为十进制,您可以这样做: 2 * 5! = 240 4 * 4! = 96 2 * 3! = 12 0 * 2! = 0 1 * 1! = 1 240 + 96 + 12 + 0 + 1 = 349 因此,阶乘数24201为349base 10。 要将十进制数字(349例如)转换为因数,您可以这样做: 取最大乘以小于该数。在这种情况下,它是120或5!。 349 / 5! = 2 …

15
一闪一闪亮晶晶
编写程序来播放流行的英语童谣。 (此文件采用知识共享协议授权署名-网上百科全书:许可署名Helix84在英文维基百科 ; Blahedo在英文维基百科) 某些Wikipedia文章可能有用: 闪烁闪烁小星星(具有您的程序输出听起来像的音频片段) 现代音乐符号(以了解上述使用的音乐符号) 音符#音符频率(赫兹)(计算每个音符频率的公式) 您提交的一些准则: 您的程序必须使用计算机的声卡。如果您的编程语言无法方便地访问音频硬件,则您的程序必须创建某种标准格式的输出文件,例如WAV或MIDI。 您的程序必须实际生成其输出。例如,不允许从Wikipedia嵌入Ogg Vorbis文件。 音频质量必须可以接受。至少,这首歌应该易于识别。最好也听起来不错。 重点应该放在代码大小,声音质量或两者上(说明您决定的代码)。优雅的解决方案也将很棒。玩得开心! 这是一个代码高尔夫球,因此最短的代码获胜
27 code-golf  music  audio 

30
给定范围内的素数之和
编写最短的代码,以查找和之间的质数之a和b。 输入项 a并且b可以从命令行或标准输入采取(空间分隔) 假设1 <= a <= b <=10 8 输出 只需用换行符打印总和即可。 奖励积分 如果程序接受多个范围(每行打印一个总和),您将获得加分。:)
27 code-golf  primes 

10
没什么比ModTen的好游戏
免责声明:ModTen是一款虚构的纸牌游戏,其创建完全是为了应对这一挑战。 ModTen的规则 ModTen使用标准的52张卡片组播放。由于尚未制定全部规则,因此我们将仅专注于手排名。 ModTen中的胜者。维基百科上的图形。 卡值 卡具有以下值: 2至9:值得他们的面值 十:0分 杰克:3分 皇后或国王:8分 王牌:9分 手值 一个ModTen手由两张卡组成。通过将两张纸牌的值相乘并仅保留最后一位(即应用模数10)来获得手的基值。 666(7 × 8 )mod 10 = 6(7×8)mod10=6(7\times8)\bmod 10=6 ModTen中的唯一其他规则是,适合的卡片比不适合的卡片价值更高。按照惯例,如果两张卡牌都相同,我们将在值后附加一个“ s”。 例如,9 ♠ -5 the的值将被记为“ ”,因为且卡适合。5 秒5s5\text{s}(9 × 5 )mod 10 = 5(9×5)mod10=5(9\times5)\bmod 10=5 手排名和获胜者 上述规则导致18个不同的手牌等级,下表从最强到最低(或从稀有到最常见)进行了总结。给出的概率仅供参考。 给定两只手,则排名最低的手获胜。如果两只手的排名相同,那就是平局(没有平局)。 hand rank | hand value(s) | deal probability -----------+---------------+------------------ 1 | …

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.