编程拼图和代码高尔夫

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

13
模制ASCII艺术
系统会为您提供一个不包含换行符的可打印ASCII字符串,以及一个包含空格()和哈希(#)的多行“ mold” 。 您必须在字符串中一个接一个地输入字符,并使用字符串中的字符按从左到右,从上到下的顺序替换哈希。如果字符串太短而无法填充模具,则停止输出;如果字符串太长,则截断字符串以准确填充模具。 示例字符串/模具(字符串太长,被截断): Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula. ########################################################### ##### ############## ###### ###### ###################### ##### ## ###### # ##### ###### ######## ###### ###### # # #### #### ##### ###### ####### ###### ##### ###### ### ### ##### ###### ####### ####### ##### ###### ##### ### ########### ###### ####### ### ###### ###### ###### ### ########## …

10
下一个公众假期
澳大利亚人喜欢公共假期和饮酒。昨天,1月26日是澳大利亚国庆日,这是一个公共假期。我很高兴昨天没上班,并渴望知道下一次我的公共假期!不幸的是,我喝太多了,我自己也无法解决。 编写一个程序,该程序将采用澳大利亚日期/时间表示法(dd / mm)的日期作为输入,并输出直到下一个公共假日的天数。因为我是昆士兰(QLD)居民,所以我只对影响昆士兰人的公共假期感兴趣: 25/03 | 耶稣受难日 26/03 | 复活节星期六 28/03 | 复活节星期一 25/04 | 安扎克纪念日 02/05 | 劳动节 03/10 | 女王生日 25/12 | 圣诞节 26/12 | 节 礼日27/12 | 圣诞节假期 请注意网站上的以下内容: 圣诞节假期 当元旦,圣诞节或节礼日为周末时,将添加一个额外的公共假日。 因为圣诞节在星期天,所以有一个额外的公共假期。圣诞节仍然是公众假期。 因为我是早起的人,所以您应该将当前日期包括在内(因为这是我将在下一个公共假期检查程序的最可能的时间)。也就是说,如果输入了公众假期的日期,则输出应为0; 如果输入公共假期的前一天,则输出为1。 我只对从现在(27/01)到年底的日期感兴趣。您需要考虑的最终日期是31/12,这是您的输出结果1(元旦)。 禁止出现标准漏洞。 输入值 输入将始终为5个字符:4个字母,以连字符-或斜杠分隔/ 输入的日期只能是27/01到31/12之间的日期 输出量 直到下一个澳大利亚昆士兰州公众假期的天数,包括输入日期:应为0和之间的数字153(最长的间隔) 没有新行或错误 例子 01-05 = 1 02-05 …
18 code-golf  date 

3
评估滑手
介绍 Skat是一款传统的德式纸牌游戏,可容纳3位玩家。副牌由32张牌组成:王牌,王牌,王后,杰克,10套,9套,8套,7套所有4套服(俱乐部,黑桃,心,钻石)。 在每个回合中,有一个玩家独奏,而另外两个则与他对抗。在回合开始时,每位玩家被发10张牌,剩下的2张牌称为skat,并面朝下放在中间。独奏者由投标阶段确定。这是您在此挑战中必须处理的游戏部分,有关此内容的更多信息,请参见下文。 赢得竞标阶段的玩家将成为独占玩家。他拿起小号,然后放下两张牌(可能是相同的,另一支球队不知道),拿下王牌,然后回合开始。 一轮包括十个技巧。赢得花样的玩家将领导下一张,直到玩完所有纸牌为止。我不会在这里解释这些规则,但是您应该知道拥有很多王牌是很好的。如果您想了解规则,请查看我在本文开头链接的Wikipedia文章,但对于本挑战而言并不需要。 挑战 您想教您的两个儿子如何打skat。这些规则并不难,因此很快就会被采纳。唯一给他们带来困难的是出价,特别是计算他们手牌的游戏价值。因此,您决定编写一个小程序,输出给定当前手牌可以出价的最大游戏值。 计算游戏价值 每只手都有一定的游戏价值。它由您所拥有的连续千斤顶的数量和您要选为王牌的西装决定。让我们从第一个因素开始吧! 杰克因素 千斤顶总是王牌,他们击败其他所有王牌。四个千斤顶之间的强度顺序为: 俱乐部杰克(最高) 黑桃杰克 杰克之心 钻石杰克(最低) 在进一步的说明中,我将使用此处分配给他们的编号来引用它们。 您还记得从您手中的Jacks获得的某种因素是游戏价值的一部分吗?大!这是您的获取方式: 该千斤顶系数是依次排列的最高千斤顶数(请参阅上面的顺序),再加上1。因此,如果您拥有全部4个千斤顶,则为4 +1 =5。如果只有前2个千斤顶,则为2 +1 = 3。 另外,为了使事情更复杂一点,杰克因数也可以是您所缺少的按顺序排列的最高杰克数加1。因此,如果您缺少第一个杰克,则为1 +1 = 2。缺少他的前3个,即3 + 1 =4。下面是使用上面的编号的示例: [1, 4] -> 1 + 1 = 2 [1, 2, 4] -> 2 + 1 = 3 [2, 3, 4] …

4
一周中压缩的天数
输入星期几列表,则输出列表中最短的排序表示形式。 输入的格式是由一个或多个双字符子串的字符串Su(星期日), Mo(星期一), Tu(等), ,We,Th, Fr和Sa。输入不一定必须以排序的顺序给出。 要将输入转换为输出格式, 从星期天开始按星期几对输入进行排序(例如ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 如果不引起歧义,请将缩写词减少到一个字母。例如,之所以SuMoTuWe成为,SMTW是因为第一个S不可能在星期六,因为这样会使输出未排序(与T相同)。但是,ThFrSa应该成为ThFS,因为星期二和星期四都在星期五之前,并将其减小以TFS产生歧义。 如果输出为now MTWTF,则D改为输出(代表“ 工作日 s”)。同样,SS应该成为E一周结束。最后, SMTWTFS应该成为A对所有天。 输入和输出都必须是单个字符串。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu …

6
将RNA解析为密码子
介绍 RNA是DNA的近亲。其主要目的是通过称为翻译的过程控制细胞中蛋白质的产生。在这一挑战中,您的任务是实施该过程的一部分,其中将RNA分成密码子。 这项挑战与主题相关,但集中在翻译过程的另一部分。 密码子 我们将RNA视为碱基对字母上的长字符串AUCG。在翻译中,RNA被分为三个碱基对的非重叠片段,称为密码子。该过程开始于一个起始密码子,AUG以及在端部一终止密码子的一个UAA,UAG或UGA。每个密码子(终止密码子除外)都对应一个氨基酸,并且所形成的氨基酸串形成蛋白质。 输入值 您输入的是非空的RNA字符串。 输出量 您的输出是将RNA分割成任何合理格式的密码子列表。在此简化模型中,过程从最左侧的起始密码子开始,该密码子AUG包含在输出中。当遇到终止密码子或我们用完RNA时,它结束。如果输入不包含起始密码子,则输出应为空列表。 例子 考虑输入顺序 ACAUGGAUGGACUGUAACCCCAUGC 解析从的最左边出现AUG在索引2 开始。它继续如下: AC AUG GAU GGA CUG UAA CCCCAUGC * ^ ^ ^ + 标*有的密码子是起始密码子,标^有的密码子也是输出的一部分。终止密码子标有+。正确的输出是 AUG,GAU,GGA,CUG 对于较短的输入 ACAUGGAUGGACUGU 过程进行 AC AUG GAU GGA CUG U * ^ ^ ^ 这次,没有遇到终止密码子,所以当我们用完碱基对时,该过程停止。输出与上面相同。 规则和计分 您可以编写功能的完整程序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 GGUACGGAUU -> GGCGAAAUCGAUGCC -> AUG …

2
三角网格上的对齐
六边形网格最近已成为应对二维数据挑战的一种相当流行的方法。但是,到目前为止,似乎同样忽略了同样有趣的三角形网格。我想通过一个非常简单的挑战来纠正这一问题。 首先,我们如何表示三角形网格?考虑以下示例(暂时忽略正确的图表): 单元整齐地落在常规网格上(与常规网格的区别仅在于哪些单元被视为相邻单元): 1234567 89abcde fghijkl mnopqrs 现在,如右图所示,三角形网格具有三个主轴:水平轴和两个对角轴。 在ASCII网格中突出显示这些内容: AVAVAVA VAabcAV fVAiAVl mnVAVrs 挑战 您将获得一个代表三角形网格的矩形字符串(其中左上角是一个向上的三角形)。大部分带有be的单元格.,但只有两个单元格是#,例如: ....# .#... ..... 确定两者#是否沿网格的三个轴中的任何一个对齐(即,它们是否沿上面突出显示的三个方向中的任何一个方向位于一行上)。对于此示例,答案为“否”。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输入可以是由换行符或其他方便字符分隔的单个字符串,也可以是字符串列表。您可以使用任意两个(一致的)可打印ASCII字符代替.和#。 输出应该是一个truthy如果突出显示的细胞对准值和falsy否则值。 适用标准代码高尔夫球规则。 测试用例 真实网格: .#..#. # # ........... ...#....... ........... ........... ........... .......#... ........... ........... .......#... ........... ........... ........... ...#....... ........... .#......... ........... ........... ........... ........... .......#... ........... ........... …

4
不断增长的奎因序列
您将编写一个p1 p2 ... p10满足以下属性的10个程序的序列: pK打印pK+1为K从1到9 p10 版画 p10 当第一个K程序连接在一起,产生的程序p1...pK打印p1...pK。 每个程序的pK字节大小必须大于以前的程序pK-1。 所有程序必须使用相同的语言。 Q允许内置的奎因功能(例如,多种语言)。 您的分数是10个程序的字节数之和。由于只有十个程序,因此您必须使代码尽可能短。祝好运。

1
最大子串构造
在此挑战中,您通过了两件事: 字符串长度 N 字符串列表L,每个都有一个指定的点值。任何未传入的字符串的点值为0 您需要构造一个长度字符串N,以使所有子字符串点的总和尽可能大。 例如: 5 [("ABC", 3), ("DEF", 4), ("CDG", 2)] 应该输出 ABCDG 因为带有点(ABC和CDG)的两个子字符串总共有5个点,所以其他任何可能的构造都不能给出5个或更多点。 子字符串可以在字符串中多次使用,并且可以重叠。您可以假设这些点将始终为正,子字符串的长度将在1到N字符长之间,并且那个N > 0。如果最多有多个构造,请打印其中任何一个。 您的程序必须在合理的时间内运行(每个示例的时间不得超过一分钟): 1 [("A", 7), ("B", 4), ("C", 100)] => C 2 [("A", 2), ("B", 3), ("AB", 2)] => AB 2 [("A", 1), ("B", 2), ("CD", 3)] => BB 2 [("AD", 1), …

4
一个简单的DNA模拟器
您的代码将永远生成DNA的非常简单的ASCII表示形式。它会以您想要的任何格式将两个数字作为输入:作为列表,作为函数的参数,在stdin等上。 I介于0.0到1.0(含)之间的浮点间隔(以秒为单位) 缩放级别Z,从1到64(含)的整数 您的代码将每秒钟将一行输出到stdout或等价的行,从而I产生一个无限的输出,看起来像这样(缩放级别4): A T-----a G-------c G-----c g t-----A a-------T c-----G T A-----t C-------g ... 具体地,我们的DNA的表示是一对由连字符连接的正弦波,一个由字符a,c,g,和t,其他字符的A,C,G,和T。如果x是我们当前正在打印的行的0索引编号,则小写波中字符的从0开始的位置由给出(sin(πx / Z) + 1) * Z,而大写波中的字符从0开始的位置由给出(-sin(πx / Z) + 1) * Z,两者都四舍五入(但没有下限)整数。更多细节: 如果两个波浪重叠,则需要从大写波浪开始,交替选择哪个波浪在前面。(从小写波开始,我们会得到一个不存在的双螺旋!) 忽略大小写,A总是与T配对,C总是与G配对,就像在真实的DNA中一样。线对本身应随机选择,并在四种可能性上均匀分布。在代码的连续运行中,对的选择是相同还是不同并不重要。只要输出没有明显的模式并且周期至少在十亿之内,随机选择的统计质量就不成问题了(像RANDU这样有缺陷的PRNG 很好。) 您必须没有尾随空格,或者必须在该缩放级别将每一行都填充到波浪的最大位置(在上面的示例中为九个字符)。出于数学原因,缩放级别1可能有一个可选的附加尾随空格。 由于DNA很小,因此您的代码将需要尽可能短。 更多示例: 缩放等级8: T C-----g A-----------t C-------------g G---------------c T-------------a T-----------a T-----a c g-----C t-----------A g-------------C a---------------T ... …

6
金伯林序列
介绍 当然,我们遇到了很多序列挑战,因此这是另一个挑战。 金伯林序列(A007063)如下: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ... 这是通过改组常规迭代产生的: [1] 2 3 4 5 6 7 8 序列的第一项是1。之后,我们将重新排列序列,直到使用了左侧的所有术语。改组有规律right - left - right - left - ...。由于的左侧没有术语1,因此没有改组。我们得到以下内容: 2 [3] 4 5 6 7 8 9 在第i 次迭代中,我们丢弃第i 个项目并将其放在我们的序列中。这是第二次迭代,因此我们丢弃第二项。序列变为:1, 3。对于我们的下一个迭代,我们将使用上面的模式对当前迭代进行洗牌。我们从第i …

2
被遗忘的领域日期计算器
为了平衡具有内置日期库的语言和没有内置日期库的语言之间的竞争环境,让我们使用虚拟日历。“被遗忘的境界”是“龙与地下城” 的(the?)广告系列设置。当然,每个人都有自己的日历。 Harptos日历 方便地,在“被遗忘的领域”中的一年也有365天。此外,日历也有12个月。但是,这才变得有趣。每个月正好是30天。剩下的5天是假期,介于两个月之间。以下是月份和节假日的顺序(节假日缩进): 1 Deepwinter Midwinter 2 The Claw of Winter 3 The Claw of the Sunsets 4 The Claw of the Storms Greengrass 5 The Melting 6 The Time of Flowers 7 Summertide Midsummer [Shieldmeet] 8 Highsun 9 The Fading Highharvestide 10 Leaffall 11 The Rotting The Feast …

2
长跑赛车
系统将为您提供两个输入:一个以游程长度编码格式定义运行轨迹的字符串,以及一个大写字母,表示从其开始的车道。例如,字符串“ 3a4A6b5B”扩展为“ aaaAAAAbbbbbbBBBBBBB”。然后,使用扩展的字符串来创建轨道,如下所示: A) aaaAAAA B) bbbbbbBBBBB 这是一条有两条车道的赛道。小写字母代表空气。你不能在空中跑!大写字母表示可以行驶的道路。您的挑战目标是给定大写字母,输出从该车道开始行驶的赛车手能跑多远。如果赛车正上方或正下方有一条道路,则允许赛车手转换车道。他们也被允许倒退!在此特定轨道上,任何字母输入的输出均为0,因为这两个轨道都在位置1处没有可行驶的道路。 例子: 输入: “ 4A5B4c3C”,“ A” 此代码扩展为如下所示的轨道: A) AAAA B) BBBBB C) ccccCCC 此示例的输出为7,因为从车道A开始的跑步者可以向下移动至车道B,然后下降至车道C,最后到达第7位。 输入: “ 4A2B3D”,“ D” 跟踪: A) AAAA B) BB C) D) DDD 输出为3,因为从D道开始的跑步者无法进入B道或A道 输入: “ 4A4a4A3b6B5C”,“ A” 跟踪: A) AAAAaaaaAAAA B) bbbBBBBBB C) CCCCC 输出为12,因为A上的跑步者可以切换到B,然后最后返回A。“ C”的最大距离也是12。对于“ B”,最大距离是0。 输入: “ …

6
调整椅子
挑战 您刚买了一把新椅子!问题是,您不知道如何控制它,因此您需要编写一个程序来为您做。 您只能在未调整的椅子上坐很长时间。因此,您的代码将需要尽可能短。 例子 5,3,2,2,1 O | | | _ | | |_|_ | | O 3,5,2,3,5 O | _ | | |__|__ | | __|__ OOOOO 2,13,1,1,13 O | _ |______|______ ______|______ OOOOOOOOOOOOO 我是唯一认为这架飞机看起来像飞机的人吗? 椅子零件 椅子具有各种组件: O | | <- Backrest | _ <- Armrest | | |__|__ <- …

9
希尔伯特·普里姆斯高尔夫
希尔伯特数被定义为形式的正整数4n + 1的n >= 0。希尔伯特的前几个数字是: 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97 希尔伯特数序列由OEIS序列A016813给出。 相关的数字序列,希尔伯特质数,被定义为H > 1不能被任何希尔伯特数(k例如)整除的希尔伯特数1 < k < H。希尔伯特素数的前几个是: 5, 9, 13, 17, 21, 29, 33, 37, 41, 49, 53, 57, …

1
计算多边形的边数
计算多边形的边数 多边形计数机器人已决定在不通知任何人的情况下环游​​世界,但至关重要的是,多边形计数的过程不要停留太长时间。因此,您需要执行以下任务:给定多边形的黑白图像,您的程序/ Funtoin应该返回边数。 该程序将被送入一台旧的打孔卡计算机,并且由于当今的打孔卡非常昂贵,因此您最好尝试使程序尽可能短。 边缘的长度至少为10个像素,并且两个相邻边缘形成的角度至少为10°但不大于170°(或再次大于190°)。该多边形图像中完全包含和多边形,以及它的补连接(没有孤立的岛屿),所以这个投入将不会是有效的: 计分 这是代码高尔夫,这意味着以字节为单位的最短提交胜出,您的提交必须为每个测试用例找到正确的边数。(提交也应适用于其他情况,不允许仅针对那些测试用例进行优化。) 如果您希望提交的解决方案每次都找不到正确的编号,您也可以提交该解决方案,但是它将在所有性能更好的提交中排在后面。 请在提交标题中包括总数。(总误差为实际边数与每个输出之间的绝对差之和)。 测试用例 n = 10 n = 36 n = 7 n = 5 这不是一个测试用例,只是出于好奇:您为该输入获得了多少优势?

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.