Questions tagged «code-golf»

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

6
查找二叉树的最深节点
编写一个程序,将二叉树作为输入,并输出最深的节点及其深度。如果存在平局,请打印所有涉及的节点及其深度。每个节点表示为: T(x,x) T(x) T 其中,T是一个或多个字母数字字符的标识符,每个x是另一个节点。 这是二叉树的简单定义: 二叉树的头是一个节点。 二叉树中的一个节点最多有两个子节点。 例如,输入A(B(C,D(E)))(下面)将输出3:E。 下面的树是5、11和4之间的三向关系,其深度也是3(从0开始): 输入2(7(2,6(5,11)),5(9(4)))(下面)将输出3:5,11,4。 这是代码高尔夫,因此以字节为单位的最短代码获胜。

24
生成Z_n的组表
组是数学中广泛使用的结构,并且在计算机科学中具有应用。此代码挑战涉及为累加组Z n创建组表的最少字符数。 表格的构造方式:对于Z n,元素为{0,1,2,...,n-1}。该表将具有n行和n列。对于表的第ij个条目,该值为i + j mod n。例如,在Z 3中,第1-2个条目(如果将起始行/列计算为1,则为第2行,第3列)为(1 + 2)%3 = 0(请参见示例输出)。 输入:一个正整数,n 输出:一个表,它是Z n的文本表示形式,如上所述构造,并在示例输出中显示如下。空格是可选的 输入样例: 3 样本输出: 0 1 2 1 2 0 2 0 1 输入样例: 5 样本输出: 0 1 2 3 4 1 2 3 4 0 2 3 4 0 1 3 4 0 1 …

4
寻找下一个“有趣的”时间
我今天恰好在11:11:11瞥了一眼手表(今天是1/11;可惜不是2011年),这让我开始思考:我知道!我应该对此提出一个编码问题!我是一个白痴。 无论如何,您面临的挑战是花费一个小时,一分钟和一秒作为输入,并输出下一个“有趣的”时间。在这里,我将定义有趣的步骤如下: 连接小时,分钟和秒。(例如,在4:14:14,则为41414。) 检查覆盖整个字符串长度的一组连续的1、2或3组。例如,我可以[41][41][4]在示例时间中找到(如果组无法通过字符串到达​​,请像在本示例中那样将其切断)。又如:在我的问题开始第一个例子的时候,这将是[1][1][1][1][1][1],[11][11][11]或[111][111]。 是否有一个连续的组贯穿整个字符串?如果是这样,那么时间是“有趣的!” 否则,不是。 输入可以采用任何合理的格式,但不得进行硬编码。输出也可以采用任何合理的格式,并且不必与输入采用相同的格式。 如果出于某种原因使用网络访问,则从网络下载的所有字节都将计入得分。 这是 代码高尔夫球; 以字节为单位的最短代码获胜。
9 code-golf  date 

13
计算字符,将它们转换为密码
问题: 您必须制作一个执行以下操作的程序: 接受一串大写的小写文本,并计算每个字母的所有出现次数。 然后按字母从高到低的顺序排列。 然后您将该列表转换为文本的编码器/解码器。 然后使用该密码对文本进行编码。 很难理解?请参阅以下示例: 例: 输入文本: Lorem ipsum dolor坐下来,一直保持良好的状态。Nunc euismod pellentesque ac sed enim的Nunc sed dui。Nullam auctor Justo quis diam faucibus,欧盟fringilla est porttitor。Pellentesque vel pharetra nisl。Vestibulum congue ultrices magna a fringilla。Quisque porttitor,risus suscipit pellentesque tristique,orci lorem accumsan nisi,scelerisque viverra turpis metus坐在amet sapien。Fusce facilisis diam turpis,nec lobortis dui …
9 code-golf 

8
Missy Elliot,XKCD和ASCII字节
受到以下XKCD漫画的启发: 在艾略特小姐的《 Work It》中,部分合唱内容如下: Is it worth it, let me work it I put my thing down, flip it and reverse it 考虑到这一点,我提出以下高尔夫挑战代码: 创建按以下顺序执行的代码: 从STDIN接受8位ASCII输入;例如n(十六进制6E或Bin 01101110) 将每个字节的8位向下移位1位(我相信这被称为逐位向下移位),例如01101110变为00110111(“放下我的东西”); 反转每个字节的位,例如00110111变为11001000(“翻转”); 反转每个字节的位,例如11001000变为00010011 (“ reverse it”); 如果字节的值小于32,则在转换回ASCII之前对该字节执行(95 + [byte value]),换句话说,(126-(31-[byte value]))对字节执行...如果字节的值仍小于32,则重复步骤5 如果字节的值大于126,则在转换回ASCII之前对该字节执行([byte value] - 95),换句话说,(32+([byte value]-127))对字节执行...如果该值仍大于126,则重复步骤6。 将新转换的字符串显示为ASCII。 此代码的一个实际示例: (输入,值得吗?) workit missy (“ missit”为输入,“ workit”为功能) …

2
在Stack Exchange上反补代码片段
您的目标是输入任意文本,例如: This is some text 并输出该格式的文本,以作为Stack Exchange上帖子(SE风格的Markdown)和注释(迷你Markdown)的代码,例如: `This is some text` `This is some text` 但是,它变得更加棘手。考虑输入: Perl has a variable called $` 输出必须是 `` Perl has a variable called $` `` `Perl has a varaible called $\`` 格式化的完整规则是: 完整帖子(完整的SE Markdown) 第1步:计算字符串中没有连续多少个反引号的最小数字。让我们称之为n。(例如,对于字符串potato,n为1,对于this is a backtick: `,n为2,对于` `` ``` ````` ``````,n为4。) 步骤2:将字符串包装在n反引号中。如果字符串以反引号开头或结尾,则还必须使用空格换行。(例如,potato成为`potato`,this …
9 code-golf 

2
检查15个拼图是否可解决
在十五谜题的特别之处在于只有一半安排的可能的状态是可以解决的。如果翻转14和15瓦片,则无法滑动块以使其向后翻转。 您的任务是构建一个程序,该程序接受您选择的格式的整数列表(恰好包含从0到15的每个数字的一​​个实例,其中0为空白)代表瓦片中的排列状态。 4x4网格,并输出一个布尔值,确定该网格是否可求解。 以任何语言执行此操作的最短代码都会胜出。

5
printf样式的字符串格式
挑战 编写一个实现C printf样式字符串格式的函数。 规则 你必须至少实现%%,%c,%s,%d和%f。 您不得使用内置的字符串格式化方法。 您不得运行外部程序或从程序连接到Internet。 由您决定如何处理无效输入,但是您的程序不得异常终止。 如果可能,您应该编写一个可变参数函数。 本文档中的关键字“必须”,“不得”,“必须”,“应”,“应禁止”,“应”,“不应”,“推荐”,“可以”和“可选”是按照RFC 2119中的描述进行解释。

3
解析Python字符串文字
挑战在于像Python一样解析字符串并打印字符串的内容。 输入(命令行参数或标准输入):字符串文字(例如"hello")(或多个文字,请参见下面的字符串文字串联) 输出(stdout):字符串的内容(例如hello) 解析字符串的规则: 字符串文字包含在匹配的单引号('a'),双引号("a"),三重单引号('''a''')或三重双引号("""a""")的匹配对中。打开字符串的引号类型的第一次再次出现将结束字符串。 反斜杠转义: \'字符串中的成为',\"成为"和\\成为\。您不需要实现任何其他反斜杠转义。不在转义序列中的反斜杠保留为反斜杠。 字符串文字串联:串联相邻字符串文字的内容。例如,"hello" 'world'变为helloworld。 输入中可能包含不属于任何文字的空格。 无论文字内外,您都不需要支持任何其他类型的空格。 附加规则: eval,exec并且不允许使用类似的内容来解析其文字或部分内容。 您可以假设输入有效。 您可以假设最大输入长度为1023个字符。 例子: "hello" ' world' -> hello world """\"""'\\\A""" -> """'\\A ( '''"""'''"""'''""" ) (不带括号,但带空格)-> """''' 最短的代码胜出。

9
写一个数字作为斐波那契总和
让我们将斐波那契数列定义为 F(1) = 1 F(2) = 2 F(n) = F(n - 2) + F(n - 1) 因此,我们有无限的序列1,2,3,5,8,13,...众所周知,任何正整数都可以写成某些斐波纳契数的总和。唯一的警告是,这种求和可能不是唯一的。总有至少一种将数字写成斐波纳契数之和的方法,但可能还有更多的方法。 您的挑战是编写一个完整的程序,该程序使用stdin接受一个介于1到1百万之间的正整数,然后使用stdout输出所有可能的斐波纳契数之和,这些总和等于输入。总而言之,斐波那契数不能重复,并且包括该数1。在任何求和中,如果1存在,则必须仅存在一次,因为在我对上述序列的定义中,1仅出现一次。仅包含项的求和是有效的,因此,如果输入数字本身是斐波那契数,则该数字本身是有效的求和并且必须打印。如果有多个总和,则在任意两个总和之间必须有一个空白行才能轻松区分它们。 这是一些样品。 ./myfib 1 1 这样的总和只有一个,并且只有一个术语,所以这就是所有要打印的内容。 ./myfib 2 2 请注意,这1+1是无效的总和,因为会1重复。 ./myfib 3 1+2 3 两个总和,并且两者之间都打印有空白行。 ./myfib 10 2+8 2+3+5 ./myfib 100 3+8+89 1+2+8+89 3+8+34+55 1+2+3+5+89 1+2+8+34+55 3+8+13+21+55 1+2+3+5+34+55 1+2+8+13+21+55 1+2+3+5+13+21+55 真正的代码高尔夫。以任何语言中最短的代码为准。请发布您的代码,并附上一些测试用例(我上面给出的测试用例除外)。如果是平局,我至少要等待两周甚至更长的时间才能选择最高票数。因此,社区请随时支持您喜欢的任何解决方案。代码的巧妙/美观远不如谁先发布。 编码愉快!

8
一个简单的逻辑门计算器
如果您选择接受,那么您的任务就是为以下逻辑运算符构造一个简单的真值评估器: ---------------------------------------------------------------------------------- Logical Name | Gate Name | Symbol | Symbol Name | Truth Table ---------------------------------------------------------------------------------- Identity | is | | (none) | 10 Negation | not | ~ | tilde | 01 Conjunction | and | & | ampersand | 1000 Disjunction | or | | | pipe | …

4
割草机模式
取自Google Code Jam 2013资格赛问题B: 爱丽丝(Alice)和鲍勃(Bob)在他们的房屋前有一块草坪,形状像N米x M米的矩形。每年,他们都尝试以某种有趣的方式修剪草坪。他们过去常常用剪刀剪东西,这很费时间。但是现在他们有了一个具有多种设置的新型自动割草机,他们想尝试一下。 新的割草机具有一个高度设置-您可以将其设置为1到100毫米之间的任意高度h,并且将所有比其遇到的h高的草剪成高度h。您可以通过在草坪边缘的任何部分进入草坪来运行它;然后割草机沿一条直线移动,垂直于它进入的草坪的边缘,以1m宽的草条割草,直到割草机从另一侧离开草坪为止。仅当割草机不在草坪上时才能设置其高度。 爱丽丝和鲍勃在草坪上可以放多种草。对于每个人,他们想知道是否有可能用他们的新割草机将草切成这种图案。通过在草坪的每1m x 1m正方形上指定草的高度来描述每种图案。 最初,草在整个草坪上高100毫米。 编写一个函数,该函数采用2D整数高度的数组,并确定是否可以相应地修剪草坪。 这是Google Code Jam的100个测试用例。 前35例应该通过,其余的不应该通过。 最短的代码胜出。
9 code-golf 

1
编写ASP / Prolog / SAT流程求解器
Flow Free是一款令人上瘾的android游戏,您必须通过不重叠的蛇将成对的元素连接在一起并填充整个网格。有关说明,请参见此处: https://play.google.com/store/apps/details?id=com.bigduckgames.flow&hl=zh_CN 我有一个ASP(答案集编程)解决方案,它只有几个规则,并且我认为不可能像SAT实例那样简洁地表达相同的解决方案,但是我有兴趣证明自己是错误的。 任何语言都可以,但是我怀疑无需运行某种求解器就可以做到简洁,这就是为什么我将其标记为ASP / Prolog / SAT 获胜者是最少的角色。 您可以假定问题是使用谓词定义的: v(V). % A vertex a(V,W). % V and W are adjacent c(C). % A color s(V,C). % V is an endpoint of color C 此外,输入满足 a(W,V) :- a(V,W) % Adjacencies are bidirectional 2{s(V,C) : v(V)}2 :- c(C). % Every …
9 code-golf 

5
任意长度三进制Squarefree词
如果字符串连续两次不包含子字符串,则该字符串是无平方的。 可以使用3个字母的字母来包含任意长的squarefree单词。 写接受来自标准输入的正整数n和打印长度的任何无平方字N,使用字符的程序A,B和C。 最短的代码胜出。

3
建立一个杀手数独解算器
您以为普通数独很难,现在尝试杀手数独! 在Killer Sudoku游戏中,根本没有任何数字。取而代之的是,您会得到据说相加一定数量的区域。考虑以下来自维基百科的示例: 及其解决方案: 您编写的程序将采用以下格式:由代表区域的81个字母组成的序列,再由数字序列组成。然后,序列中的每个数字代表每个字母区域中数字的总和,从“ A”,“ B”等开始。 然后它将输出代表解决方案的81位数字序列。 例如,上面的示例难题将具有以下输入: AABBBCDEFGGHHCCDEFGGIICJKKFLMMINJKOFLPPQNJOORSPTQNUVVRSTTQWUUXXSYZWWaaXXSYZWbbbcc 3 15 22 4 16 15 25 17 9 8 20 6 14 17 17 13 20 12 27 6 20 6 10 14 8 16 15 13 17 结果输出为: 215647398368952174794381652586274931142593867973816425821739546659428713437165289 您可以假设输入有效,并且区域将始终按A,B,...,Y,Z,a,b,...,z的顺序显示。 (最有效的代码胜出。)

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.