编程拼图和代码高尔夫

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

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 

24
用尽可能少的不同字符打印字符串
任务很简单:在源代码中The quick brown fox jumps over the lazy dog使用尽可能少的不同字符进行打印。 print "The quick brown fox jumps over the lazy dog"的分数为29个字符,因为所有26个小写字母至少出现一次,以及大写的T,空格和引号字符。不过,我敢肯定,您可以在其中发挥更大的创意! 禁止使用Brainfuck,Whitespace和类似语言(由我自行决定)。换行符算作一个字符。该代码可以是必要的长度。我将在美国东部时间4月21日晚上11:59接受解决方案。如果出现平局,将接受较短的答案。

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 

21
最有效且最短代码的前n个质数列表
规则很简单: 第一n素数(未引发(prime)下面Ñ),应打印到标准输出由分离的换行(素数应的代码内产生) 素数不能通过内置函数或库来生成,即,使用诸如prime = get_nth_prime(n),is_a_prime(number)或factorlist = list_all_factors(number)之类的内置函数或库函数不会很有创意。 评分-假设我们定义得分 = f([代码中的字符数]),O(f(n))是算法的复杂度,其中n是找到的素数。因此,例如,如果您有一个复杂度为O(n ^ 2)的300个字符代码,则分数为300 ^ 2 = 90000,对于具有O(n * ln(n))的300个字符,分数将变为300 * 5.7 = 1711.13(为了简单起见,假设所有日志都是自然日志) 使用任何现有编程语言,得分最低 编辑:由于对O(f(n))中的“ n”是什么感到困惑,所以问题已从查找“前1000000个素数”更改为“前n个素数”,n是找到的素数(查找素数为问题在这里,所以问题的复杂性取决于找到的素数) 注意:为了澄清一些复杂性,如果'n'是找到的素数,而'N'是找到的第n个素数,则复杂度就n为,而N不等价,即O(f(n))! = O(f(N)) as,f(N)!=常数* f(n)和N!=常数* n,因为我们知道第n个素数函数不是线性的,尽管我发现了'n'素数复杂度应易于用“ n”表示。 正如Kibbee所指出的,您可以访问此网站来验证您的解决方案(此处是旧的google文档列表) 请在您的解决方案中包括这些- 您的程序有什么复杂性(如果不琐碎,请包括基本分析) 字符长度 最终计算出的分数 这是我的第一个CodeGolf问题,因此,如果以上规则有误或漏洞,请指出。

8
发挥这个!灰度级课程……嗯……颜色……嗯……随便
作为魔方和酷艺术的忠实拥护者,我一直在努力将两者结合起来以做一些非常酷的事情。从根本上解决微型魔方的多维数据集以形成魔方艺术形式的基本像素。可以通过以下链接查看此类艺术品的示例:http : //google.com/search?q=rubik%27s+cube+ art 现在,此Code Golf的目的是创建接受图像作为输入的代码,然后按以下方式进行转换: 图像最初被还原为网络安全的灰度颜色。这背后的原因是因为我们需要隔离网络安全的灰度调色板(即000000、333333、666666、999999,CCCCCC和FFFFFF)。有关比色法转换为灰度的方法的算法,请访问:http : //en.wikipedia.org/wiki/Grayscale#Colorimetric_.28luminance-preserving.29_conversion_to_grayscale,如果您希望以此为灵感。 然后可以将灰度渲染为适当的颜色。快速分解:000000表示Rubik的蓝色,333333表示Rubik的红色,666666表示Rubik的绿色,999999表示Rubik的橙色,CCCCCC表示Rubik的黄色,FFFFFF表示Rubik的白色。 我希望您生成的代码可以从照片的调色板直接呈现为Rubik的颜色。从转换为网络安全的灰度然后再转换为相应的Rubik调色板的两阶段方法只是为了使您了解该过程背后的逻辑,但是,如果您更轻松地做到这一点,则可以这样做。 Rubik调色板的实际RGB值必须符合以下条件: 红色:#C41E3A 绿色:#009E60 蓝色:#0051BA 橙色:#FF5800 黄色:#FFD500 白色:#FFFFFF 举一个例子,我从下图裁剪了亚伯拉罕·林肯的头像:,并渲染了算法以产生以下内容: 网格在那里,您可以看到如何配置每个单独的微型Rubik立方体以组成图像。生成的图像的真实大小为45像素乘45像素,这意味着(45/3)*(45/3)= 15 * 15 = 225微型Rubik立方体将用于制作此图像。我不希望您像我一样用网格显示结果图像。 所以这是必需的: 此算法要处理的图像必须为x像素宽x y像素高,以使x和y为3的倍数。这有助于简化作为Rubik立方体镶嵌的一部分进行渲染的过程。如果图像很大,建议在处理之前将其缩小到45 x 45至75 x 75左右。请记住,此调整大小组件是可选的。 需要将图像转换为六色魔方的调色板,以创建马赛克。 处理后,生成的图像必须是有效的图形文件。为了证明您的代码有效,请将其与美利坚合众国总统之一或好莱坞著名名人的形象进行对比。在我的示例中,我已经使用过亚伯拉罕·林肯,因此不再可以使用此总裁。确保提供您使用的语言,字节数以及用于测试代码的主席/名人,包括拍摄前后。 每个条目都必须有一个唯一的总裁/名人作为测试用例。我不会重复。这将确保重复的结果不会用于测试不同的代码条目。可以说您的代码有效,这是另一回事。 5.最短的代码获胜。 我正在将其更改为一场人气竞赛...我宁愿看看谁能做到而不必在字节数上进行竞争...因此,我将在2014年2月28日之后颁发这笔赏金。

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

30
最小唯一数KoTH
创建一个机器人以选择最小的唯一编号。 (基于我多年前听说的一项心理学实验,但无法再次进行追踪。) 规则 每个游戏将由10个随机选择的机器人组成,每个机器人进行1000回合。 每回合,所有漫游器都会从1到10(包括10)之间选择一个整数。选择相同值的所有漫游器都将被排除,剩下的拥有最小值的漫游器将获得一个分数。 如果没有机器人选择唯一的值,则不会获得任何积分。 在1000回合结束时,得分最高的机器人(或所有得分最高的机器人)将赢得比赛。 比赛将持续200 *(玩家人数)游戏。 获胜百分比最高的机器人将赢得比赛。 技术指标 Bots必须是Python 3类,并且必须实现两个方法:select和update。 机器人将使用索引构建。 select不传递任何参数,并返回机器人在当前回合中的选择。 update传递了上一轮每个机器人所做选择的列表。 例 class Lowball(object): def __init__(self, index): # Initial setup happens here. self.index = index def select(self): # Decision-making happens here. return 1 def update(self, choices): # Learning about opponents happens here. # Note that …

30
随机选择plinko样式的字符
让我们看看您选择的语言在选择性随机方面的表现如何。 给定4个字符,A,B,C,和D,或4个字符的字符串ABCD 作为输入,具有以下概率的字符输出之一: A 应该有1/8(12.5%)的机会被选中 B 应该有3/8(37.5%)的机会被选中 C 应该有2/8(25%)的机会被选中 D 应该有2/8(25%)的机会被选中 这与以下Plinko机器布局一致: ^ ^ ^ ^ ^ ^ A B \ / ^ C D 您的答案必须真正地尝试遵守所述的概率。正确解释您的答案中的概率是如何计算的(以及为什么它们尊重规范,而忽略伪随机和大数问题)就足够了。 计分 这是代码高尔夫球,因此每种语言中最少的字节会获胜!

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.