编程拼图和代码高尔夫

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

6
编写C / C ++多种语言
这个挑战的概念非常简单。您要做的就是编写一个可以同时作为有效C和有效C ++进行编译的程序!好吧,有一些陷阱。以每种语言编译时,程序的行为必须有所不同。该程序对于每种语言必须具有不同的输出,以便被视为“行为不同”。 规则 该程序必须是有效的C和C ++ 程序必须具有不同的输出,具体取决于编译时所使用的语言。 #ifdef __cplusplus不鼓励使用其他“简单”的预处理器技巧!(不过,其他预处理器操作也很好。) 尽量不要让程序看起来完全不同,这看起来很明显。 这是一场人气竞赛,因此只要有最有趣和令人惊讶的解决方案的人都会获胜。玩得开心! 例: 我创建了自己的程序,看看是否有可能做到这一点#ifdef: #include <stdio.h> #include <string.h> char *m="C++ rules!"; int t[11]={0,0,0,0,1,-1,-3,9,-8,82,0}; char tr(char c,int i) { return c+((sizeof('!')+1)&1)*t[i]; } int main() { int i = 0; for(;i<strlen(m);i++) { printf("%c",tr(m[i],i)); } printf("\n"); return 0; } 该程序C++ rules!在C ++中C++ stinks编译时和在C中编译时输出。 说明: 造成语言差异的是tr()函数。它利用了C和C …

24
快速排序!
好吧...有59个(现在有60个)标记为sorting的问题,但没有简单的quicksorts。 必须解决。 对于那些不熟悉quicksort的人,以下是细分,由Wikipedia提供: 从数组中选择一个元素,称为数据透视。 对数组重新排序,以使所有值小于枢轴的元素都位于枢轴之前,而所有值大于枢轴的元素都位于枢轴之后(相等的值可以任意选择)。分割之后,枢轴处于其最终位置。这称为分区操作。 将上述步骤递归应用于值较小的元素的子数组,并分别应用于值较大的元素的子数组。 规则 规则很简单: 用您选择的编程语言实现数字快速排序。 支点应随机选择,或选择三个中间值(第一个,最后一个和中间元素)。 您的程序可以是完整的程序或功能。 您可以使用STDIN,命令行参数或函数参数获取输入。如果使用字符串输入,则输入以空格分隔。 输入中可能包含十进制和负值。但是,不会重复。 您可以输出到STDOUT或从函数返回。 没有内置的排序功能(或与排序相关的功能)或标准漏洞。 该列表可以是任意长度。 奖金#1:在长度<= 5的列表或子列表上,使用插入排序可以稍微加快速度。奖励:-15%。 奖金2:如果您的语言支持并发,则可以对列表进行并行排序。如果在子列表上使用插入排序,则最终的插入排序不需要并行。内置线程池/线程调度是允许的。奖励:-15%。 注意:中位数3使某些人感到困惑,因此(再次)由Wikipedia提供以下说明: 选择枢轴分区的第一个,中间和最后一个元素的中位数 计分 这是代码高尔夫球。基本分数以字节为单位。如果您获得一笔红利,请从该数字中扣除15%。如果两者兼得,则可享30%的折扣。听起来确实像是推销。 这并不是要找到总体上最短的答案,而是要找到每种语言中最短的答案。 现在,这是排行榜片段的无耻复制。 排行榜 这篇文章底部的Stack Snippet从答案a)生成目录,答案是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes 其中N是您提交的文件的大小。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = …

25
查找下一个1稀疏二进制数
如果在其二进制表示形式的任何两个连续1之间至少存在K 0,则正整数N为K-稀疏。 因此,数字1010101为1稀疏,而101101不是。 您的任务是找到给定输入数字的下一个1稀疏数字。例如,如果输入为12(0b1100),则输出应为16(0b10000),如果输入为18(0b10010),则输出应为20(0b10100)。 最小的程序或函数(以字节为单位)获胜!不允许出现标准漏洞。

23
交换两个字符串的大写
your shift key is broken. wheNever you type two lines, the cApitaL LetteRs in them get swappeD. you must write a program to fiX THIS! 描述 输入是两个字符串,s1并且s2长度相等。它们每个将仅包含可打印的ASCII,并且长度至少为一个字符。您可以将它们输入为两个字符串,两个字符串的数组或带制表符或换行符的单个字符串,s1并s2用制表符或换行符分隔。 输出如下: 对于每个角色c在s1: 如果字符不是字母,则将其原样输出。 否则,如果c是字母: 在中找到匹配的字符(具有相同索引的字符)s2。 如果是大写字母,则输出c大写。 如果是小写字母,则输出c为小写字母。 否则,输出c保持不变。 然后,除了s1和以外,请执行相同的操作s2。 本质上,所有与之s1匹配的字符s2为大写的字母都应大写,并且s1在同一索引中带有小写字母的所有字母s2都应变为小写(反之亦然)。 测试用例 输入: ABCDEfghijKlMnOpqrstuvwxyz aaaaaaaaaaaaaaaa---------- 输出: abcdefghijklmnopqrstuvwxyz AAAAAaaaaaAaAaAa---------- 输入: PRogrammiNG puzZLes & CODe golf …
27 code-golf  string 

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乱码)。不允许出现标准漏洞。 这是我的第一个挑战,因此,如果我应该进行一些明显的更改,请发表评论。 编辑:我正在考虑从字节数中减去字典大小,以鼓励字典“压缩”。我将从未来的答案中看出这是否遥不可及;如果是这样,您可以指望奖金。

13
恢复变异的源代码
在一次非常罕见的事故中,涉及到一小部分镭,一头电死的鲸鱼和三只软糖熊,The Management™的某些源代码已被更改。The Management™的老板几乎不知道,实际上是由警察©负责,以制止The Management™的“邪恶”计划。因此,有人雇用了Robbers®来尝试检索原始代码,因为有时谁不喜欢邪恶? 注意:此挑战在很大程度上受到“ 对源代码进行解读”的启发。 描述 这是警察和强盗的挑战。 的警察将写一个程序(突变的代码),进行任务#1(并且还写一个程序,执行任务#2,但被保持秘密)。 该劫匪将试图扭转“突变”,改变这种原始代码转换成代码,执行任务#2。 在此挑战中,任务1将输出n第素数,任务2将输出n斐波那契数(无论如何,根据警察的说法,这是邪恶的)。斐波那契数列定义为(n=1→ 1; n=2→ 1; n=3→ 2; ...),素数定义为(n=1→ 2; n=2→ 3; n=3→ 5; ...)。 警察的目标是最小化完成任务1和任务2的程序之间的差异,同时防止强盗重新创建完成任务2的代码。 警察规则 警察将编写两个程序(一个完成任务1,一个完成任务2),并公开以下信息: 第一个程序(输出n第素数) 所述的Levenshtein编辑距离的第一程序和第二程序之间 两种程序都使用的编程语言(两种程序必须使用相同的语言) 以下限制适用于两个程序: 长度不得超过128个字符。 它们只能使用可打印的ASCII(加上换行符,也允许使用换行符)。 它们必须运行少于10秒n=45,并且不需要为任何输出正确的输出n>45。 他们不得使用任何哈希或加密功能。 强盗规则 强盗将尝试将警察的程序(完成任务1的程序)更改为以警察指定的编辑距离完成任务2的程序(不一定是警察编写的原始程序)。 已经破解的提交不能再被破解(只有第一个破解提交的强盗才能获得信誉)。 破解提交内容后,请执行以下操作: 发帖回答到这一挑战的陪同问题(链接),提供的语言,你的解决方案,并在原来的答案的链接。 用链接到您发布的答案的文本“ Cracked” 发表评论。 如果您具有编辑权限,请编辑警察的答案(如果没有,请等待具有所需权限的其他人替您这样做或建议进行编辑)。 计分 如果警察的程序保持未破解状态持续1周,则该警察可以发布完成任务2(在指定的编辑距离内)的原始代码,并且从那时起提交就被视为“安全”。编辑距离最小的安全提交将获胜。如果出现平局,则以最短的程序(完成任务1的原始程序)为准。如果仍然有两个提交物并列,则一个较早地获胜。 如果强盗成功破解了警察的提交文件,则强盗的分数将增加该提交文件的编辑距离。例如,强盗以3的编辑距离破解提交内容,而以5的距离破解提交内容,则可获得8分。得分最高的强盗获胜。如果出现平局,则赢得得分的强盗首先获胜。 排行榜 Ruby,6岁(历史学家) 计算Levenshtein距离的小工具 显示代码段 …

6
滑动式转换器
SwiftKey在2014年4月1日发布了笔记本电脑打字的下一次革命。但是,我想成为第一个编写可擦写纳米克隆的人,但是,由于找不到适合实际文本库的可擦写文本,而且我等不及了,所以我在这里问。 任务 编写一个程序,该程序接受划动文本并输出等效的实文本。例: Input: hgrerhjklo Output: hello 当用户这样做时: 其他例子: Input: wertyuioiuytrtjklkjhgfd Output: world Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg Output: programming Input: poiuygfdzxcvhjklkjhgres Output: puzzles Input: cvhjioiugfde Output: code Input: ghiolkjhgf Output: golf 规则 该程序将在stdin或argv上输入一个刷过的“单词” 滑动输入的首个字母和最后一个字母将等于真实单词的首个字母和最后一个字母 您可以假设用户将做出合理的直线,但是您可以使用样本数据来验证这一点(我制作了样本数据,然后制作了最终的测试数据) 对于模棱两可的输入,您可以选择任一输出,但是我将尝试消除测试数据中的所有模棱两可 该单词将在此单词列表中(但会被刷掉)。单词列表将在当前目录中,并且可以读取(换行符分隔,将命名为wordlist,无扩展名)。 滑动仅包含小写字母字符 如果用户在按键上暂停,则滑动可能包含重复的字符 程序必须在stdout上输出(大小写无关紧要) 程序必须0作为返回码返回 您必须提供运行命令,编译命令(如果需要),名称以及要使用的输入路径 存在标准漏洞(尽管可能没有帮助) 不允许非内置库 确定性,非高尔夫/模糊解决方案优先 没有文件写入,联网等 您的代码必须在一秒钟或更短的时间内运行(您的代码每个单词运行一次) 计分运行在具有4个虚拟代码(2个真实代码)的Intel i7 Haswell处理器上运行,因此如果需要,您可以使用线程 最大代码长度为5000字节 您使用的语言必须具有可用于Linux的免费(非试用版)版本(Arch …

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,虽然不是很简明。

11
计算n%12
计算无符号32位整数的n模12。 规则: 必须适用于n0到23之间的所有数字。其他数字是可选的。 必须只使用任何运营商+-*,~&^|或者<<,>>作为在32位的uint通常定义。 可以使用任意数量的常量单位。 不得使用任何形式的指针,包括数组或任何if语句,包括编译到if语句的内容(例如三元运算符或“大于”运算符)。 得分: 运算符+ -和按位运算符~ & ^ | << >>(NOT,AND,XOR,OR,位移)的得分为1,*得分为2。 最低总分获胜。

8
Pi仍然是错误的[关闭]
皮错了 计算pi的一种常见方法是将“飞镖”扔到1x1的盒子中,并查看与投掷的总数相比,单位圆中的哪一块土地: loop x = rand() y = rand() if(sqrt(x*x + y*y) <= 1) n++ t++ pi = 4.0*(n/t) 编写一个看起来应该正确计算pi的程序(使用此方法或其他常用的pi计算方法),但应计算tau(tau = 2 * pi = 6.283185307179586 ...)。您的代码必须至少产生前6个小数位:6.283185 优胜者在6月6日(从今天起一周)加冕。

8
你好,世界!没有重复
在询问此问题之前存在的任何编程语言中,编写一个程序(而不是函数),该程序输出字符Hello world!后跟换行符。您的程序: 最多只能使用一个字符(包括空格) 应该只使用ASCII字符 不应使用任何内置库 不应获取输入(用户,文件,文件名,系统变量,互联网等) 不应该输出其他任何东西 获胜者是14天后拥有最多票数并遵守六项规则的人。 第六条规则是您不能使用H9 +,HQ9 +,HQ9 + B,HQ9 ++,HQ9 + 2D,Hello,Hello +,Hello ++,Hexish,CHIQRSX9 +或赋格曲。另外,所有要求比该挑战都要新的实现的答案都必须标记为非竞争。 免责声明:发布此问题的前提是Hello world!提出有限的重复步骤不会对您的计算机或大脑造成任何损害。

9
将英语转换为数字
对挑战的简短描述: 基于此站点上其他几个问题的想法,您面临的挑战是在任何程序中编写最具创意的代码,这些程序将以英文写成的数字输入并转换为整数形式。 真正干燥,漫长而彻底的规格: 您的程序将在和之间以小写英语输入一个整数作为输入zeronine hundred ninety-nine thousand nine hundred ninety-nine含)的。 它只能输出介于0和之间的数字的整数形式999999并且不能输出其他任何内容(没有空格)。 输入将不包含,或and,如one thousand, two hundred或five hundred and thirty-two。 当十位数和1一位数均非零且十位数大于时,它们将由HYPHEN-MINUS字符-而不是空格分隔。同上一万个地方。例如,six hundred fifty-four thousand three hundred twenty-one。 该程序可能具有任何其他输入的未定义行为。 行为良好的程序的一些示例: zero-> 0 fifteen-> 15 ninety-> 90 seven hundred four-> 704 sixty-nine thousand four hundred eleven-> 69411 five hundred twenty thousand two->520002

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。 这是一个代码高尔夫挑战,因此最短的解决方案将获胜。

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.