Questions tagged «code-golf»

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

12
从排序的整数列表中创建平衡的BST
给定一个唯一的,排序的整数列表,创建一个平衡的二进制搜索树,表示为数组而不使用递归。 例如: func( [1,2,3,5,8,13,21] ) => [5,2,13,1,3,8,21] 在开始之前,有个提示:我们可以将这个问题简化很多,这样我们实际上就不必考虑输入整数(或者与此有关的任何可比较对象!)。 如果我们知道输入列表已经排序,则其内容无关紧要。我们可以简单地根据原始数组的索引来考虑它。 输入数组的内部表示将变为: func( [0,1,2,3,4,5,6] ) => [3,1,5,0,2,4,6] 这意味着我们不必编写必须处理类似对象的东西,而只需要编写一个将[0,n)范围映射到结果数组的函数。获得新订单后,我们可以简单地将映射应用于输入中的值以创建返回数组。 有效的解决方案必须: 接受零元素数组并返回一个空数组。 接受长度为n的整数数组并返回整数数组 长度在n与2的下一个最高幂减1之间。(例如,对于输入大小13,返回13到15之间的任意值)。 表示BST的数组,其中根节点位于位置0,高度等于log(n),其中0表示丢失的节点(null如果您的语言允许,则为类似值)。空节点(如果存在)必须仅存在于树的末尾(例如[2,1,0]) 输入整数数组具有以下保证: 值是大于零的32位有符号整数。 价值观是独一无二的。 值从零位置开始按升序排列。 值可能很稀疏(即彼此不相邻)。 以ascii字符数表示的最简洁的代码胜出,但是我也希望看到针对任何特定语言的优雅解决方案。 测试用例 简单数组的输出,包含1to的nfor n。如上所述,尾随0s是可选的。 [] [1] [2,1,0] [2,1,3] [3,2,4,1,0,0,0] [4,2,5,1,3,0,0] [4,2,6,1,3,5,0] [4,2,6,1,3,5,7] [5,3,7,2,4,6,8,1,0,0,0,0,0,0,0] [6,4,8,2,5,7,9,1,3,0,0,0,0,0,0] [7,4,9,2,6,8,10,1,3,5,0,0,0,0,0] [8,4,10,2,6,9,11,1,3,5,7,0,0,0,0] [8,4,11,2,6,10,12,1,3,5,7,9,0,0,0] [8,4,12,2,6,10,13,1,3,5,7,9,11,0,0] [8,4,12,2,6,10,14,1,3,5,7,9,11,13,0] [8,4,12,2,6,10,14,1,3,5,7,9,11,13,15]

5
实现SHA-1哈希算法
此代码高尔夫球的目标是创建一个将字符串作为输入的程序,并且必须将SHA-1哈希值输出为十六进制数。您可以在这里找到SHA-1的伪代码 其他规则: 没有网络访问 您不允许运行外部程序 您不允许使用内置方法对输入进行散列 最短的代码胜出 只需要处理ASCII输入 输出可以是小写或大写 可以使用以下命令提供输入: 提示输入 使用命令行参数 使用STDIN 测试用例: Input: The quick brown fox jumps over the lazy dog Output: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 ---------------------------------------------------------- Input: The quick brown fox jumps right over the lazy dog Output: 1c3aff41d97ada6a25ae62f9522e4abd358d741f ------------------------------------------------------------ Input: This is a code golf challenge Output: f52ff9edd95d98e707bd16a7dead459cb8db8693

1
大声说出从0到9的数字
受到来自electronic.SE的这个问题的启发,这对您来说是一个挑战: 编写一个程序或子程序,该程序或子程序使用一个十进制数字序列(0到9)并大声说出来,而无需使用现有的语音合成工具。 输入: 您可以要求以任何合理的格式提供输入数字,例如,以ASCII数字字符串,整数数组,BCD编码的数字等形式提供。如果您的解决方案是可执行程序,则可以将输入作为命令行参数,从标准输入中读取它,或以任何其他合理的方式获取它。 您的程序每次调用必须至少能说八位数。您可以假设第一个数字不为零,除非它是唯一的数字。 输出: 您的程序可以使用音频设备直接说出数字,也可以输出可播放的声音文件。输出文件(如果有)可以采用任何标准音频格式,也可以包含原始样本数据。如果输出原始样本数据,请注意适当的回放参数(采样率,每个样本的位数,字节序,有符号/无符号,通道数)。aplay支持的格式是首选。 您可以自由决定如何说出数字的细节,但是您的输出应包括以典型英语使用者可以理解的方式说出的英语数字,并且应该足够清晰,以使听者能够准确地转录八位数的随机数字。不,只鸣响n次不算。不要忘记在数字之间包含停顿。 得分: 适用标准的代码高尔夫评分规则:得分是代码的长度(以字节为单位),或者,如果代码是用Unicode文本编写的,则是Unicode字符。最低分获胜。任何语言都可以。 作为关于电子学的最初问题,SE是关于嵌入式编程的,我认为使用低级语言向作者扔骨头是合适的:如果您的解决方案是用编译语言编写的,则可以选择计算语言的长度。已编译的可执行文件(以字节为单位)作为您的分数。(是的,预编译的字节码,例如Java .class文件也是可以的。)如果您选择使用此选项,请在答案中包括已编译的可执行文件的副本(例如,作为十六进制转储)以及源代码。以及用于生成它的编译器版本和选项。 的荣誉奖,与50代表沿奖金,将被授予第一个答案也能满足该的标准原来的问题,即,能够与闪光灯的4 kb和SRAM的1kb的上的嵌入式微控制器运行。 限制条件: 除非您将上述文件或资源的长度计入分数,否则您不得使用不属于所选语言的标准运行时环境的任何文件或网络资源。(这是不允许的,例如从网络上加载音频样本。) 您也可能不使用任何预先存在的语音合成工具或库或音频数据的汇编(除非您也将它们的大小计为分数的一部分),即使它们已包含在所选语言的标准运行时环境中也是如此。
15 code-golf  audio 

12
Tcl打高尔夫球的秘诀
您在Tcl打高尔夫球有哪些一般秘诀?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上特定于Tcl(例如,“删除评论”不是答案)。请为每个答案发布一个提示。
15 code-golf  tips 

8
图灵机模拟器
编写一个图灵机模拟器。 为简单起见,我们可以假设状态为整数,符号为char,空白符号等于空格 当前状态,输入符号,下一个状态,输出符号,方向(左或右)形式的5元组不是强制性的,而是指定是否交换 达到未知状态时,机器必须停止,不允许其他停止条件。 磁带在两个方向上都是无限的,您始终可以读取一个空字符。 输入:初始磁带,初始状态和程序。您可以随意从任何地方以自己喜欢的格式读取数据 输出:程序执行后的录像带 必需:在模拟器顶部运行的示例程序 这是一个代码集,因此最短的代码获胜。 我将在接下来的几个小时内发布实现和一些示例程序。

2
大二分法
给定一个和弦列表,将其标记为“大”或“小”。 输入值 输入将是和弦列表,每行一个,由3个音符隔开。每个便笺将由大写的便笺名称(A- G)和可选的偶然的(#或b)组成。和弦可以以任何反转(即音符可以以任何顺序)。 输出量 如果和弦是大和弦,则输出“ Major”。如果和弦较小,则输出“ Minor”。如果和弦既不是大和小,则输出空白行。 例 输入值 C E G F Ab C C Eb Gb E G B Db F Ab Bb G D D A Gb 输出量 Major Minor Minor Major Minor Major 测试脚本 就像我过去的一些问题一样,我再次选择了一些最初由Joey和Ventero创建的测试脚本,以针对该问题提供一些测试用例: 重击 电源外壳 用法: ./test [your program and its arguments] 奖赏 …
15 code-golf  music 

30
偶数或奇数:三人
这是一个三人游戏,一只手玩。 同时,每个玩家伸出0到5个手指来展示自己的手。 如果所有玩家都显示相同类型的(偶数或奇数)数字,则没有获胜者。但除此之外,玩家表现出不同的种类,而另外两个则获胜。 P l a y e r s A B C Winner Even Even Even No winner Odd Odd Odd No winner Even Odd Odd Player A Odd Even Even Player A Even Odd Even Player B Odd Even Odd Player B Odd Odd Even Player C Even …
15 code-golf  number  game 

15
高尔夫球的子总和问题
任务 给定以空格分隔的整数列表作为输入,请输出这些数字的所有唯一非空子集,每个子​​集的总和为0。 测试用例 输入: 8 −7 5 −3 −2 输出:-3 -2 5 获胜标准 这是代码高尔夫球,因此以字节为单位的最短代码胜出!
15 code-golf  math 

4
创建GUI钢琴[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 挑战 用最少的字符创建一个GUI键盘。 例 因为这是我的一门课程中的一项作业,所以我无法显示源代码。但是,这是我的键盘的屏幕截图。 在此示例中,我的键属于类型JButton,我使用Midi合成器产生声音(具有默认的ADSR包络值)。 规则 你被允许使用标准的外部库。 发挥您的声音创意。您可以使用8位,西塔琴等。 为简单起见,您可能有五个键;黑白,从C到E(键盘上的前五个键)。 最重要的是……展示您的作品! 注意:根据您选择使用的语言,这可能是一项相当大的任务。 这是我对SE Code Golf的第一个问题。如果不清楚,请询问更多细节。 编辑:此挑战的截止日期将为9/22/12。如果您在此日期之后发布答案,无论如何(可能对其+1),我都会对其进行检查。
15 code-golf  music 

4
留在基督教青年会很有趣
“ YMCA”是乡村人民流行的迪斯科歌曲,有着著名的舞蹈。编写最短的程序,以输出与歌曲的合唱同步的大写字母“ Y”,“ M”,“ C”和“ A”。 通常,发送到标准输出的每一行都有一个字母。这主要是为了简化受C标准库的输出缓冲限制的程序(打印换行符会刷新输出缓冲区),因此,如果省略这些换行符会使您的程序更短,则可以省略其中的任何或所有换行符。 您的程序(与音乐同时启动)必须在启动后每隔0.125 s内输出字母“ Y”(以秒为单位;这是我从YouTube上发布的音乐视频中确定的)。 45.766 49.611 60.889 64.661 109.816 113.591 124.810 128.687 173.830 177.620 188.950 192.724 204.013 207.739 219.057 字母“ M”,“ C”和“ A”分别在每个“ Y”之后分别为0.930 s,1.395 s和1.628 s。出于测试目的,通过将这些相对时间加到前面的“ Y”时间中,可以将它们转换为绝对时间。 我已经用C语言编写了一个测试程序和相应的示例程序,假定每个字母后都有一个换行符(尽管这不是竞争规则)。它是为Linux编写的,如果不使用Cygwin,将无法在Windows上运行。如果您无法使用测试程序测试提交的内容,请至少根据YouTube视频来检查提交的内容。 如果您的提交要求使用特殊的命令行选项才能正常运行,则该命令行选项将在计算分数时计算在内。但是,任何解释器的启动时间都不会影响您,可以根据需要修改测试程序以适应该要求。 尽管我怀疑存在,但我必须说禁止使用专门为此任务设计的编程语言功能或库。
15 code-golf  music 

20
生成求和网格
生成一个7 x 7的网格,其中填充了随机数。但是,在具有奇数行和列编号(从0开始)的单元格中,必须使用周围单元格的总和。这是一个3 x 3网格的小示例(加粗平方和): 2 2 2 2 16 2 2 2 2 这是一个7 x 7网格的示例: 6 5 4 3 7 2 5 6 43 3 50 8 43 8 4 7 8 8 9 3 1 4 36 1 43 6 40 5 3 3 6 1 4 …

12
从二进制转换为负二进制
给定一个介于0和之间的二进制整数1111111111111111(即16位无符号整数)作为输入,请在negabinary中输出相同的整数。 输入可以采用最适合您的语言的格式;例如,如果程序更容易处理16位数字(例如0000000000000101而不是)的输入,而不是简单地101输入,则可以编写程序以仅接受这种方式的输入。 样品I / O > 1 1 > 10 110 > 1010 11110 > 110111001111000 11011001110001000 > 1001001 1011001 这是我编写的一个示例程序,该程序可以进行基数转换,包括负数和非整数基数。您可以使用它来检查您的工作。

8
实施Rijndael的S-box
Rijndael的S-box是AES加密和解密中经常使用的操作。它通常实现为256字节查找表。这很快,但是这意味着您需要在代码中枚举256字节的查找表。我敢打赌,鉴于基本的数学结构,这种人群中的某人可以用更少的代码来完成这项工作。 用您喜欢的语言编写一个实现Rijndael的S-box的函数。最短的代码获胜。

25
计算pi到5位小数
这来自http://programmers.blogoverflow.com/2012/08/20-controversial-programming-opinions/ “鉴于可以使用函数4 *(1 – 1/3 + 1/5 – 1/7 +…)来估计Pi,更多的项可以提供更高的精度,因此编写一个函数可以计算出Pi的精度为小数点后5位。 ” 注意,必须通过计算上面给出的顺序来完成估算。
15 code-golf  pi 

14
在CodeGolf.SE上计算用户的特权
挑战 您的目标是编写尽可能短的程序,该程序将获取事件列表(例如upvote,downvote等),并返回用户的声誉和所获得的特权。 什么样的事件? 这是事件的图表,按赢得信誉的顺序列出: -15 answer unaccepted -10 answer unupvoted -5 question unupvoted -2 answer downvoted -2 question downvoted -2 unaccept answer -1 downvote answer +1 join website +1 undownvote answer +2 accept answer +2 question undownvoted +2 answer undownvoted +5 question upvoted +10 answer upvoted +15 answer accepted +100 …

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.