编程拼图和代码高尔夫

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

11
历史作业助手
在阅读历史记录和做笔记时,我不禁厌倦了写下所有这些漫长的日子– 1784年是整个六个铅笔升降机!ǝǝ! 如您所见,我(就像该网站上的大多数挑战性海报一样)在写作方面很懒惰。因此,请您帮助我缩短一些日期。当然,您的解决方案必须尽可能地短,因为我的手已经很难写出键入测试用例的内容。 如何缩短日期? 好有趣,你应该问。这很简单: 以您想要的任何顺序((smallest, biggest)或(biggest, smallest))以两个整数作为输入。 取两个数字中的较大者,而不取较小数字中的一部分。 例如,给定2010, 2017,缩写2017为,-7因为201_两者都在同一数字位。 打印或返回较小的数字,后跟破折号,然后缩短的较大数字。 例如: Bonus brownies for you if you figure out these dates' significance :) 1505, 1516 -> 1505-16 1989, 1991 -> 1989-91 1914, 1918 -> 1914-8 1833, 1871 -> 1833-71 1000, 2000 -> 1000-2000 1776, 2017 -> 1776-2017 2016, …
12 code-golf  number 

12
回奎因
这里的挑战很简单,而不是字节数。您的工作是输出前一个quine源代码的前50个字符,并与您的前50个字符(从我在下面放置的50个字符开始)连接在一起: abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY 因此,让我们在这里举个例子,如果您要在05AB1E中回答,那么仅输出前50个字节的解决方案是: ži50£ 这意味着您需要输出: abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£ 如果您的程序较短,只需使用第一个x < 50字符即可。如果您的程序较长,则只能连接前50个字符,并以第50个字符结尾。然后,下一个人将必须输出您的Quine的前50个字符以及它们自己的代码。 您的代码可以是任意大小,但是您只能输出与前一个答案的代码的前50个字节末尾串联的代码的前50个字符。 限制条件: 除了使用适当的quine的定义外,还使用以下内容: 完全禁止评论。 请特别注意本节内容,如果滥用话语可能会引起注意 如何发布链接答案: 发布占位符: 提及您的答案号码和将使用的语言。 按日期排序,如果您发现其他人在您之前1毫秒发布了占位符: 删除您的,等下一次机会,对不起。 如果您已获得下一个位置,请在6小时内答复: 如果您无法回答,请删除您的保留空间。 如果空间已超过6小时。 投票删除保留空间,我来处理。 您的帖子格式: #[Answer #]:[Character Count] Characters, [Language Used] {TIO MARKDOWN} {LINE_SEPARATOR="---"} {ADDITIONAL EXPLANATION OR INFORMATION} 一些特定的注意事项(对于简化竞争很重要): 如果之前的人员在其来源中包含换行符或非ASCII字符,则可以将其删除。这就是说,x="a\nb"变成了ab哪里x[0]=a;x[1]=b;。 您必须声明您已应用于前一个来源的突变。 尽管有代码页或语言编码,所有字符都被视为单个字符。请不要使用字节计数,请使用字符计数。 接受的答案将是50th答案,仅仅是因为;我的意思是,毕竟是SE。

12
圆像零
目标 给定输入数字,将其四舍五入到一个有效数字。 要求 输入值 浮点数。 假设输入数字的结果在数据类型的限制之内(即忽略溢出错误)。 0是无效输入。 不必支持不能以浮点数据类型准确表示的数字(例如"0.35",存储为0.3499999)。 输出量 由一个非零数字和任意数目的零数字组成的最接近的数字。 结果必须支持负数和小数。 当输入恰好位于两个可能的输出之间时,请从零舍入。 介绍 重点是计算而不是表示。输出可以是浮点数据类型。它可以是完整或科学计数形式的文本。如果您发现一个漏洞,可以通过某种方式减少字节数,这对您来说是荣誉! 例子 9 -3000 .2 0.2 -.2 7e12 5e-15 1e0 测试用例 Input Output 1 1 10 10 17 20 99 100 54321 50000 56789 60000 -123 -100 -789 -800 0.23 0.2 0.25 0.3 -0.25 -0.3 4.56e23 5e23 …
12 code-golf  math 

6
找出有理生成函数的系数
如果我们写一个数字序列作为幂级数的系数,则该幂级数称为该序列的(普通)生成函数(或Gf)。也就是说,如果对于某些函数F(x)和整数系列,a(n)我们有: a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x) 然后F(x)是的生成函数a。例如,几何级数告诉我们: 1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x) 因此,的生成函数1, 1, 1, ...为1/(1-x)。如果我们对上面方程的两边求和并乘以x得到以下等式: x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2 因此,的生成函数1, 2, 3, ...为x/(1-x)^2。生成函数是一个非常强大的工具,您可以使用它们来做很多有用的事情。在这里可以找到简短的介绍,但是要获得真正彻底的解释,请参见惊人的图书生成功能学。 在此挑战中,您将有理函数(两个具有整数系数的多项式的商)作为两个整数系数数组的输入作为输入,首先是分子,然后是分母。例如,功能f(x) = x …
12 code-golf  math  integer  polynomials  code-golf  math  abstract-algebra  restricted-time  code-golf  math  primes  code-golf  math  number  arithmetic  code-golf  quine  code-golf  number  sequence  code-golf  string  number  code-golf  array-manipulation  code-golf  number  code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

16
弹跳取模两个数字
模运算()的图形如下所示:ÿ= x模ķy=xmodky = x \mod k 这是一个非常有用的功能,因为它允许我们创建“包装”行为。但是,当我要使用它在两堵墙之间创建“反弹”外观时,这非常麻烦。“反弹”功能的图形(ÿ= 反弹(x ,k )y=bounce(x,k)y = \text{bounce} (x, k))如下所示: 的图的周期为。的图的周期为,因为在返回到起点之前,它向上移动单位,然后向下移动另一个单位。对于这两个函数,的最小值均为0,最大值为(实际上,对于具有积分输入的模数函数,其)。另外,对于这两个函数,值为0。k y = 跳动(x ,k )2 k k k y k k − 1 x = 0ÿ= x模ķy=xmodky = x \mod kķkkÿ=bounce(x,k)y=bounce(x,k)y = \text{bounce} (x, k)2k2k2kkkkkkkyyykkkk−1k−1k-1x=0x=0x=0 挑战 给定一个整数和一个正整数,返回的整数或浮点近似值。k y = 跳动(x ,k )xxxkkky= 反弹(x ,k )y=bounce(x,k)y …

10
Lehmer-Comtet序列
Lehmer-Comtet序列是这样的序列,即a(n)是f(x)= x x相对于x的第n个导数,如在x = 1处求值。 任务 以一个非负整数作为输入并输出Lehmer-Comtet序列的第n个项。 这是代码高尔夫球,因此您应该最小化源代码的文件大小。 测试用例 OEIS 5727 这是顺序中的前几个术语(从OEIS复制) 1, 1, 2, 3, 8, 10, 54, -42, 944, -5112, 47160, -419760, 4297512, -47607144, 575023344, -7500202920, 105180931200, -1578296510400, 25238664189504, -428528786243904, 7700297625889920, -146004847062359040, 2913398154375730560, -61031188196889482880

17
顶绳梯
给定一个字符串s和一个正整数N,逐渐将每个字符逐渐重复,直到N重复为止,然后停留在N重复位置,直到N字符远离结尾,然后再次下移。 例如,给定abalone和3: a we start with 1 copy bb then 2 copies aaa then 3 copies, which is our second parameter lll so we continue using 3 copies ooo until we reach the end nn where we use 2 copies e and then finally 1 copy 结果将是abbaaalllooonne。 保证字符串的长度大于2N并且仅包含字符从a到z。 更多测试用例: N …
12 code-golf  string 

6
该字符串有效吗?
挑战 编写一个程序或函数,该程序或函数将字符串输入作为函数参数或从stdin输入并确定它是否为有效的FEN字符串。 输入值 您可以假定输入将仅包含以下字符(区分大小写) pkqrbnPKQRBN12345678/ 输入的长度将始终为最小1个字符和最大100个字符 输出量 输出应为真/假值。这些值可以是您希望的任何值,只要它们是一致的即可(所有真实结果具有相同的输出,所有虚假结果具有相同的输出)。您应该有两个截然不同的可能输出。 什么才算有效 小写字母代表黑色,大写字母代表白色。 您应该确保在象棋游戏中可能存在处于当前位置的棋子。 每个玩家将始终只有一个国王(k / K) 每个玩家最多只能有8个棋子(p / P) 每个玩家通常不会超过1 *王后(q / Q) 每个玩家通常都不会有更多少于2 *名新手(r / R) 每位球员通常不超过2 *名骑士(n / N) 每名球员通常不超过2 *名主教(b / B) *合法的“将“兵”提升为这四个部分中的任何一个。 每位玩家的棋子,皇后,新手,骑士和主教的总数永远不会超过15 每个等级的总件数加上空方(以数字表示)应始终正好等于8。并且应该始终有8个等级,中间用正斜杠分隔。 您可以忽略的事情 您不必担心自己是否有可能发挥指定的位置,或者如果该位置是合法的,仅需保证所给定的数量即可存在。 您可以忽略FEN琴弦的进一步复杂性,例如演奏者回合,铸造权和传球权。 这是代码高尔夫。以字节为单位的最短程序获胜。通常存在漏洞和规则。 测试用例 输入 rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / …

30
什么是标准刮擦?
在高尔夫中,使用以下公式计算球场的标准划痕: (3*num_of_3_par_holes + 4*num_of_4_par_holes + 5*num_of_5_par_holes) - difficulty_rating 给定这4个输入,您的任务是计算高尔夫球场的标准刮擦度。 您应该以任何标准格式输入格式 [num_of_3_pars, num_of_4_pars, num_of_5_pars], difficulty rating 但是如果保存字节,那么许多人会以不同的方式接受输入。 您应该通过meta上任何可接受的方法(例如从函数返回)输出最终结果。 最短的代码获胜,因为这是代码高尔夫!
12 code-golf  math  number 

4
为儿童玩机器人-我会收到哪一封信?
TL; DR:给定一个字符数组,并且在该数组的起始位置有一个机械手,编写一种算法,该算法可以读取具有运动的字符串(F“向前”,R“向右旋转90度”和L“ 向右旋转90度”左”),然后计算机器人的结束位置。全文中有更多详细信息。 我们在家中有一个非常简单的面向儿童的可编程设备:带有按钮的小型车辆,可以使车辆前进,向左转90度或向右转90度。类似于以下内容: 我们也有一个泡沫垫,上面写着这样的字母: 所有这些的目的是一次教孩子们字母和编程的基础。 挑战 假设我们像这样随机安排泡沫垫: +---+---+---+---+---+---+---+ | E | R | L | B | I | X | N | +---+---+---+---+---+---+---+ | O | A | Q | Y | C | T | G | +---+---+---+---+---+---+---+ | F | W | H | P | …

11
将列表列表解析为悲伤列表
在此挑战中,您必须将列表列表解析为更简单的列表格式。 这项挑战基于我的sadflak解析器。在我的sadflak解析器中,它删除了所有(),并在列表的开头替换为()的总和,以使程序运行更快。 要解析为悲伤列表,您必须执行以下操作(Python实现的事情,使用一个元组的元组): def sadlistfunc(list): new-sadlist = [0] for i in list: if i == (): new-sadlist[0]+=1 else: new-sadlist.append(sadlistfunc(i)) 这是一个递归函数。对于列表,请从列表输入中的()数量开始创建一个新列表,然后该列表的其余部分依次是每个列表的悲伤列表版本,而不是列表输入中的()。返回列表。 输入: 您可以采用几种不同的格式输入: 您可以将其作为列表 你可以把它当成元组 你可以把它当作一个字符串 如果将其作为字符串使用,则应使用一些括号,如出现在脑筋急转弯中的括号。您不能使用字符1和2 只是合理 输入将始终在一个列表内,但是您的程序可能会在输入之外假设一个隐式列表层,即()()()=(()()()),或者可能选择不包含。示例将带有明确的外部列表 输出: 可以是列表,元组或字符串,或其他任何形式。您可以使用任何合理的输出格式,例如元共识。 例: (()()()) = [3] (((()))) = [0,[0,[1]]] ((())()(())) = [1, [1], [1]] () = invalid input, if the outside bracket …

19
进行查找索引
给定一个字符串,返回一个表,其中第一列按出现的顺序具有该字符串的唯一字母,随后的列使用零或基于一的索引列出该字母在字符串中的索引。只要最左边的列垂直对齐,水平空格就没有关系。索引必须按从左到右的升序排列。 例子 使用从零开始的索引并给定“ abracadabra”,返回 a 0 3 5 7 10 b 1 8 r 2 9 c 4 d 6 使用基于一个的索引并给定“ 3141592653589793238462643383279503”,返回: 3 1 10 16 18 25 26 28 34 1 2 4 4 3 20 24 5 5 9 11 32 9 6 13 15 31 2 7 …

22
ASCII魔方
灵感来自这和以下聊天: 您的任务是输出以下内容: _ _ _ /_/_/_/\ /_/_/_/\/\ /_/_/_/\/\/\ \_\_\_\/\/\/ \_\_\_\/\/ \_\_\_\/ 允许额外的前导或尾随空格,只要它不会更改多维数据集的外观即可。与往常一样,允许从函数返回上面的内容或字符串列表。 这是代码高尔夫球,因此最短答案以字节为单位!

3
级联加倍
首先,简短的数学插曲值得您注意: 如果为0 < a < 4,则逻辑函数 f(x) = ax(1-x)将在其内部映射间隔[0,1]。这意味着可以玩迭代游戏;例如,如果a = 2,则初始值0.3变为0.42,然后为0.4872,依此类推。 随着参数的a增加,二次函数f在以下意义上变得更加复杂: 0 < a < 1 所有初始值都向0迭代。 1 < a < 3 0变成排斥,但是有一个新的不动点(a-1)/ a吸引了所有迭代。 3 < a < 1+sqrt(6) 新的固定点变得令人反感,但出现了两个吸引点的循环。 3.44949... < a < 3.54409... 2个周期变得令人排斥,但出现了4个吸引点的周期。 等等 费根鲍姆注意到,这些参数区间的长度在那越来越接近的速度下降4.6692...时,费根鲍姆常数。奇妙的发现是,此2期分叉序列是任何函数(如二次抛物线)先增大后减小的普遍现象。这是有关混沌普遍性的第一批报告之一。 现在迎接挑战!编写最短的代码来计算 Feigenbaum常数,以达到您选择的精度。这里的重点不是通过编码您搜索过的数字来欺骗系统,而是实际上让计算机找到该值。作为参考,这是30位数的常数: 4.669201609102102990671853203821578
12 code-golf  math  number 

13
有几种方法可以将数字写成平方和?
任务 给定两个整数d和n,找到表示n为d平方和的方式数。也就是说,,对于所有整数n == r_1 ^2 + r_2 ^2 + ... + r_d ^2,r_m都是一个整数1 ≤ m ≤ d。请注意,交换两个不同的值(例如r_1和r_2)被认为与原始解决方案不同。 例如,数字45可以写为2平方和的8种不同方式: 45 == (-6)^2 + (-3)^2 == (-6)^2 + 3^2 == (-3)^2 + (-6)^2 == (-3)^2 + 6^2 == 3^2 + (-6)^2 == 3^2 + 6^2 == 6^2 + (-3)^2 == 6^2 + …

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.