Questions tagged «code-golf»

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

1
命名非环状碳链
(我不是化学家!我可能在某些方面写错了,我正在写我在高中学到的东西) 碳原子具有特殊的属性:它们可以与其他4个原子键合(不是很特殊),即使在长链中也保持稳定,这是非常独特的。因为它们可以通过许多不同的方式链接和组合,所以我们需要某种命名约定来命名它们。 这是我们可以制造的最小分子: CH4 叫做甲烷。它仅包含一个碳原子和4个氢原子。下一个是: CH3 - CH3 这称为乙烷。它由2个碳原子和6个氢原子组成。 接下来的两个是: CH3 - CH2 - CH3 CH3 - CH2 - CH2 - CH3 它们是丙烷和丁烷。问题始于具有4个碳原子的链,因为它可以用2种不同的方式构建。上面显示了一个,另一个是: CH3 - CH - CH3 | CH3 显然这与另一个不同。原子数和键数不同。当然,仅仅折叠结合物并旋转分子不会使它变得与众不同!所以这: CH3 - CH2 - CH2 - CH3 和这个: CH3 - CH2 | CH3 - CH2 是相同的(如果您从事图论,您可以说两个分子之间存在同构;它们是相同的)。从现在开始,我将不再写氢原子,因为氢原子对于这一挑战不是必需的。 当您讨厌有机化学并且要命名的碳原子很多时,您决定编写一个程序来为您完成此任务。您的硬盘驱动器上没有太多空间,因此程序必须尽可能小。 挑战 编写一个程序,将多行文本作为输入(碳链)并输出碳链的名称。输入将仅包含空格,大写的“ …

9
联锁支架
编写一个程序或函数,该程序需要一个八个字节的字符串,其中包含()[]{}<>以任何方式排列的每个字符之一,从而使四个相应的括号类型匹配。例如,]<([){}>输入无效,因为方括号不匹配(尽管所有其他方括号都匹配)。 打印或返回从0到的整数,该整数6表示四种括号类型的六种可能的配对中有多少对是互锁的。如果一种类型的支架恰好出现在另一种类型的支架之间,则认为支架类型对是互锁的。所以([)]和[(])互锁但是()[],[](),([]),和[()]不是。 以字节为单位的最短代码获胜。 输入/输出示例 ()[]{}<> : 0 ([{<>}]) : 0 <>{[]}() : 0 {<>([])} : 0 <(>)[{}] : 1 <[({)}]> : 1 [{<}]>() : 2 {<>([}]) : 2 <{(>})[] : 3 [(]<){>} : 3 <([>{)}] : 4 (<{[>})] : 4 (<[{)>}] : 5 <{[(>})] : 5 [{<(]}>) : 6 (<{[)>}] …

17
莫兹金数
第n个Motzkin数是从(0,0)到(n,0)的路径数,其中每个步骤的形式为(1,-1),(1,0)或(1,1),以及路径永远不会低于y = 0。 这是上述链接中n = 1、2、3、4的这些路径的说明: 所需序列为OEIS A001006。OEIS具有该序列的其他一些特征。 您将得到一个正整数n作为输入。您应该输出第n个Motzkin编号。 以下是莫兹金数1到10: 1, 2, 4, 9, 21, 51, 127, 323, 835, 2188 允许所有标准输入和输出方法。有标准漏洞。 这是代码高尔夫。最少的字节数获胜。

1
魔术:聚会高尔夫
魔术:聚会是一种交易纸牌游戏,除其他事项外,玩家玩代表生物的卡,然后可以攻击另一位玩家,或通过阻挡来防御另一位玩家的攻击。 在此代码高尔夫挑战赛中,您的程序将代替魔术玩家来决定如何在战斗中封锁。 每个生物都有两个相关属性:力量和韧性。生物的力量是战斗中所能造成的伤害,其韧性是摧毁它所必需的伤害。功效始终至少为0,韧性始终至少为1。 在Magic战斗中,轮到该玩家的玩家宣布其一些生物要攻击对手。然后,另一个被称为防御方的玩家可以将其生物指定为阻挡者。一个生物每次战斗只能阻挡一个生物,但是多个生物可以全部阻挡同一个生物。 宣布阻止者后,攻击者将为每个被阻止的攻击生物决定该生物对阻止它的生物所造成的伤害(等于其力量)的分配方式。 然后,造成损害。每个生物造成的伤害等于其力量。如前所述,被阻挡的攻击生物造成伤害。畅通无阻的攻击生物对防御牌手造成伤害。阻挡生物对其阻挡的生物造成伤害。属于防御者的未被阻挡的生物不会造成伤害。(不需要阻止生物。) 最后,任何受到等于或大于其韧性的伤害的生物都会被摧毁,并从战场上移出。小于生物韧性的任何伤害均无效。 这是此过程的示例: 具有力量P和韧性T的生物表示为 P/T Attacking: 2/2, 3/3 Defending player's creatures: 1/4, 1/1, 0/1 Defending player declares blockers: 1/4 and 1/1 block 2/2, 0/1 does not block. Attacking player distributes damage: 2/2 deals 1 damage to 1/4 and 1 damage to 1/1 Damage is dealt: …

17
在SE帖子上显示前5条评论分数
Stack Exchange脚本通过在站点上的投票数来确定最初在站点主页上看到的关于问题或答案的五个评论。将显示投票数最高的五个评论。您的任务是重新创建此行为。 编写完整的程序或函数,通过STDIN,命令行参数或函数参数输入,然后打印或返回前五个注释分数。输入将是一个整数数组,代表某个帖子的评论中的投票数。例如,输入 0, 2, 5, 4, 0, 1, 0 表示第一个评论没有投票,第二个评论有2票,第三个评论有5票,第四个有4票,依此类推。评论分数的顺序在输出中应该保持不变。 如果输入内容包含五个或更少的评论分数,则输出内容应只包含给定的分数。如果两个或更多评论分数相同,则应显示第一个分数。您可以假设输入数组将至少包含一个评论分数。 输出中的数字应易于区分(因​​此情况1的02541无效)。否则对输出格式没有限制;数字可以用空格或换行符分隔,也可以采用列表格式,等等。 测试用例: [0, 2, 5, 4, 0, 1, 0] -> [0, 2, 5, 4, 1] [2, 1, 1, 5, 3, 6] -> [2, 1, 5, 3, 6] [0, 4, 5] -> [0, 4, 5] [1, 1, 5, 1, …

30
实施“ TAC”:从文件反向打印行
在小猫问题和在U&L看到有关sed魔术的问题之间,如何实施tac? 目的 实现一个程序,该程序将反转并打印文件中的行。 输入值 作为名称或通过标准输入提供的文件 输出量 线颠倒了,以标准输出。 计分 源代码字节。
30 code-golf  string 

7
我可以将所有的电线和适配器绑在一起吗?
假设有一天,您正在翻阅一大盒未使用的计算机线和适配器(USB到USB mini,VGA到DVI等)。到处都有缠结的电线,使情况变得一团糟,您想知道是否可以通过将所有电线绑成一长串然后将其卷起来来简化事情。 问题是,是否可以像这样将所有电线和适配器连接成一条长线?显然并非总是可能的,例如,如果您只有两条完全不同的插头的电线,则它们无法连接在一起。但是,如果您有第三条可以同时连接到它们的电线,则可以将所有电线捆扎在一起。 您不必担心全绳线末端的插头类型。他们不需要互相插入就可以形成一个循环。您只想知道是否可以制作全绳缆绳,如果可以,如何做。 挑战 编写一个包含多行字符串的程序或函数,其中每行都描述您拥有的一根电线。电线由一个或多个破折号(-)组成,两端均带有插头。插头始终是8个字符之一()[]{}<>。 因此,以下是一些有效的方法: >-> (--[ }-{ <-----] (---) 但是这些不是: --> (-- )-- [{ --- 连接电线时,只能将支架类型完全相同的插头连接在一起。 因此,以下是一些有效的电线连接: ...---((---... ...---))---... ...---]]---... ...---{{---... ...---<<---... 这些是无效的: ...---()---... ...---)(---... ...---{]---... ...---{[---... ...---><---... ...--->)---... 如果输入中的所有软线都可以重新排列并连接成一长串,则将其输出到一行上的stdout(带有可选的尾随换行符)。如果有多种解决方案,则可以选择其中一种进行输出。如果无法制作单条链,则不输出任何内容(或输出带有可选尾随换行符的空字符串)。 例如,如果输入是 [--> {---] >----{ 输出可能是 [-->>----{{---] 所有的电线都缠绕在一起。 但是如果输入是 [--> {---] 电源线无法连接,因此没有输出。 请注意,电线可以尽可能多地翻转以进行连接。例如[-->,<--]并且实际上是同一根电线,因为它们可以进行相同类型的连接。某些输出可能取决于翻转输入线。 例如 (-[ }--] 可能有输出 (-[[--{ …
30 code-golf  string 

1
绘制旋转风车
还记得您吹过的那些有趣的风车,它们一圈又一圈旋转吗?让我们编写一个! 风车将具有\ | / _绘制其中心和手臂的一组字符。一个可能的风车可能看起来像这样: | | |_ ___ ___|_| | | | 但是什么是不旋转的风车呢?没有乐趣!我们可以通过重新排列符号来使其旋转: / \ / \ / \/\ \/\ / \ / \ / 挑战在于创建一个程序,该程序需要三个整数并输出如下所示的风车。其中第一个是它具有的臂数,第二个是风车的臂的长度,第三个是它将顺时针旋转八分之一圈的次数。 您可以假设以下内容: 臂数始终为0、1、2、4或8。 所有的手臂将彼此等距隔开。 风车的初始位置将具有如下中心: _ |_| 如果臂数为1,则可以决定臂指向哪个方向。 如果臂数为2,则可以决定使臂垂直或水平指向。 您可以编写通过STDIN或命令行参数接受输入的完整程序,或通过函数参数接受输入的函数。您的程序必须显示一系列显示风车旋转的输出,每个输出至少由一个空行分隔。风车的中心不应移动超过一个空间。您可以根据需要输出任意数量的前导和尾随空格。 这里有些例子: 0 2 1 _ |_| /\ \/ 1 3 2 | | |_ …

29
每行的奎因
您的目标是创建一个可以无限打印的程序,并在每行之后添加一个新行。因此,如果您的程序是单行程序,那么它将在输出的每一行上重复执行。 例 程序: A 输出: A A A ... 规则 它必须是完整的程序,而不是摘要或功能。 该程序应永远循环,而不会出现堆栈溢出或递归限制错误。 输出是标准输出或最接近的替代输出。 不接受任何程序输入。 不允许出现标准漏洞,例如打开程序的文件或访问外部资源。空程序不允许作为标准漏洞。 如果您的程序代码以尾随换行符结尾,则这不算作成对字符之间的必要换行符,您必须打印另一个。 codegolf-最短的代码胜出!
30 code-golf  quine 

10
正弦文字
目标:编写一个程序或函数,以正弦形状打印输入字符串。 ASCII正弦波 这是正弦曲线的一个周期: ....... ... ... .. .. . . . . . . . . . . . . . . . .. .. ... ... ....... 请注意,每一列上只有一个点。 输入字符串中的每个字符将从左到右替换上面形状中的一个点。 输入中的空格必须像普通字符一样输出,代替点。 起始字符对应于上图中最左边的点。 这只是一个周期,输入的长度可能大于上面的点数。 输入值 输入是ASCII字符串,仅包含ASCII十进制32(空格)和ASCII十进制126(波浪号〜)之间的字符。 输入将始终仅是一行(没有换行符)。 可以通过STDIN,函数参数,命令行参数或任何类似方式进行输入。 输出量 输出必须完全按照给定的测试用例打印。 允许在行上使用尾随空格,只要具有这些尾随空格的行的长度不超过最长行(在其上最后一个字符的行)的长度即可。 不允许前导/尾随线。 测试用例 输入: ................................................. 输出: ....... ... ... .. .. …

7
哪些“朋友”角色确实是最好的朋友?
美国情景喜剧之友的六个主要演员均同意,在整个系列的整个过程中(至少在第二季之后),他们将获得相同的薪水。但这并不意味着他们都具有相同的播放时间,也不意味着它们在屏幕上彼此交互的时间相同。 在这个挑战中,您将编写一个程序来帮助确定哪些Friends朋友确实是最好的。 设定 考虑观看“ 朋友”的情节或场景,并准确记录每次相机拍摄期间谁在屏幕上显示多长时间。 我们将缩写每个字符的名称: C是钱德勒的 J是给乔伊的 M是给莫妮卡的 P是给菲比的 R是给瑞秋的 S是给罗斯的 然后,对于每个相机镜头(或角色每次进入/退出镜头),我们都会列出屏幕上的人物。例如: 504 CRS 200 J 345 MP 980 2000 CJMPRS 这就是说: 在504毫秒内,钱德勒,雷切尔和罗斯出现在屏幕上。 然后持续200毫秒,乔伊就呆了。 然后持续345毫秒,莫妮卡和菲比都在。 然后持续980毫秒,屏幕上没有显示6个主要角色。 然后两秒钟,所有的人都。 (这不是来自实际剪辑,而是由我组成的。) 请注意,以下内容是等效的: 504 CRS 1 J 199 J 345 MP 980 2000 CJMPRS 为了分析哪些字符组合具有最大的屏幕显示时间,我们查看了6个字符的所有64个可能子集,并总计了它们的屏幕显示时间。如果在拍摄镜头期间某个子集中的每个人都出现在屏幕上,即使其中的字符比该子集中的人物更多,该镜头拍摄的时间也会添加到该子集的总屏幕时间中。 空子集有一个例外-仅计算不包含6个主要角色的场景。 因此,以上示例的分析将是: 980 2504 C 2200 J 2345 …

30
在乘法表中对唯一数字进行排序
今天非常简单的挑战: 编写一个程序或函数,该程序或函数采用正整数N,并打印或返回出现在乘法表中的唯一数字的排序列表,该唯一表的行和列被乘数均在1到N之间(含1和N)。 该列表可以按升序(最小到最大)或降序(最大到最小)排序,并且可以任何合理的格式输出。 以字节为单位的最短代码胜出! 例 当N = 4时,乘法表如下所示: 1 2 3 4 ----------- 1| 1 2 3 4 | 2| 2 4 6 8 | 3| 3 6 9 12 | 4| 4 8 12 16 表格中的唯一编号为1, 2, 3, 4, 6, 8, 9, 12, 16。这些已经排序,所以 1, 2, 3, 4, 6, …

30
2个字符串的最长公共前缀
编写一个程序,将2个字符串作为输入,并返回最长的公共前缀。这是code-golf,所以最短字节的答案会获胜。 Test Case 1: "global" , "glossary" "glo" Test Case 2: "department" , "depart" "depart" Test Case 3: "glove", "dove" ""
30 code-golf  string 

15
保证金太窄
大约在1637年左右,Pierre de Fermat在他的算术副本的空白处写道: It is impossible to separate a cube into two cubes, or a fourth power into two fourth powers, or in general, any power higher than the second, into two like powers. I have discovered a truly marvelous proof of this, which this margin is too narrow to …
30 code-golf  number 

6
使用斜线绘制希尔伯特曲线
的希尔伯特曲线是可以被表示为空间填充的分形Lindenmayer系统与连续世代看起来像这样: 由于http://www.texample.net/tikz/examples/hilbert-curve/用于图像。 目标 编写尽可能短的程序(以字节为单位),该程序从stdin取一个正整数n并仅使用正斜杠,反斜杠,空格和换行符将n阶Hilbert曲线绘制到stdout。 例如,如果输入是1输出,则必须为 \ \/ 如果输入是2输出,则必须为 / \/\ /\ \ / /\/ \ \ \/ 如果输入是3输出,则必须为 \ /\/ / /\ \/\ \ \ /\ / / / / / \/ \/\ \ \/\ /\ \ \/ / / / /\/ /\/ / \ \ \ \/\ \/ \/\ …

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.