编程拼图和代码高尔夫

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

25
告诉我的朋友他们属于哪个“逗号俱乐部”
受到像这样的硅谷“三个逗号俱乐部”场景的启发,在这一挑战中,您将告诉十个人每个人所属的“逗号俱乐部”。 如果您不熟悉“逗号俱乐部”一词,请让我解释一下:如果您拥有的钱在$ 1,000.00到$ 999,999.99之间,则您就是一个逗号俱乐部;如果您的帐户价格在$ 1,000,000.00到$ 999,999,999.99之间,则您在两个逗号俱乐部中;这些“俱乐部”通过三逗号俱乐部重复出现,因为地球上没有一个人拥有超过一万亿美元的资产(日元很快就会变成另一个故事)。因此,根据美国和英国最常见的标记标准,您的银行帐户中的逗号数表示您所属的逗号俱乐部。相同的“逗号”规则适用于负数(尽管您不希望成为负逗号俱乐部):负数(包括在内)[-0.01,-999。 测试用例 Friend Amount John 100000 Jamie 0.05 Kylie 1549001.10 Laura 999999999.99 Russ 986000000 Karla 1 Reid 99.99 Mark 999.99 Manson 1000.01 Lonnie 999999999999.00 Nelly -123.45 正确的答案: John is in the 1-comma club. Jamie is in the 0-comma club. Kylie is in the 2-comma club. …
16 code-golf 

1
怀旧素数生成器
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 3年前关闭。 还记得过去的美好时光,因为打开一个简单的文档或网页非常缓慢,因为它占用了计算机的所有微薄资源?而如今,尽管您的处理器速度提高了数百倍,并且可以访问数千倍的内存,但是这样做的速度甚至还要慢? 为了模拟当前文档查看器和类似应用程序中的膨胀效果,编写一个程序,使其在功能更强大的计算机上运行时会出现明显的性能问题。 要使每个人都有共同的任务,请使其成为质数生成器。 该程序必须打印从2开始的连续素数,每个素数都换行。它应该永远这样做(或直到内存用完)。像这样: 2 3 5 7 11 13 17 在打印每行之间应该有足够的延迟,以使人类可以察觉到。 随着运行程序的计算机变得更快,此延迟应更长。机器速度越快,程序速度越慢。 我不会指定确切的基准,因为它可能会变得很主观,但是如果两台不同机器的性能之间存在显着差异,那么在两台不同机器上的速度应该存在可察觉的差异。 在创建的所有现有机器上,程序的速度不必单调降低。这将很难指定,甚至难以验证。我相信参赛者的常识是什么可以被认为是机器之间明显不同的性能,足以满足要求。 我也不会指定确切的时间上限或下限,但是应该在合理的范围内,因此请不要在打印两行之间间隔几天或几年。 从Eniac到现代,我都不会要求它运行,但是应该足够通用,例如,不允许它仅在两种特定的CPU类型上运行,并且专门检测一种特定的CPU名称。在其上将运行得更快或更慢。 该代码不应依赖编译器或解释器版本。如果在一台速度越来越慢的计算机上都安装了相同版本的编译器/解释器,或者即使二进制/字节码是在一台计算机上编译然后在两台不同的计算机上运行,​​它也应该可以工作。 请解释程序运行方式的原理。由于将难以再现结果,因此答案的有效性可能取决于该方法的可行性。 虽然我希望它能成为一场次比赛,但遗憾的是,此站点不再是“ Programming Puzzles&Code Golf”,而只是“ Code Golf”,因此最短的代码为准。

2
指定挑战中随机生成的方式
注意:根据对Meta的共识,挑战写作问题是此处的主题。 鉴于这种“编写挑战时要避免的事情”,我开始考虑涉及随机生成某些对象的挑战。 有时候,我想发布一个代码高尔夫挑战,其中涉及随机生成一个foo,其中 检查给定的东西是否是foo很容易,并且 快速生成“优质”随机foo会有点困难。 例如,一个foo可能是一个二进制矩阵,其中在任何方向上都没有4个相等位的段。检查给定的二进制矩阵是否为foo很容易,但是生成具有良好分布分布的随机foo似乎需要回溯算法或类似的算法。 无论如何,现在我需要客观地指定符合条件的随机foo,并且我希望它在我多次运行该程序时的直观含义是“不可预测的”。最严格的方法是要求输出一致地为随机数:所有有效foo的生成概率相同。这通常过于严格,因为我不知道如何保存生成所有有效的foo,删除重复项并选择一个乏味又缓慢的方法。 我的下一个想法是要求所有有效的foo都必须具有正的生成概率。但是,这意味着以下方法是有效的:生成类似foo的随机事物(在我们的示例中为随机二进制矩阵),如果它是foo,则将其返回,否则返回硬编码的foo(例如,恒等矩阵) )。这也有点无聊,因为它基本上只是添加到随机矩阵生成器的foo的识别器。 对于不可预测的随机foo是否可以有一个很好的通用定义? TL; DR 是否有一种很好的方法来指定一个“不可预测的”随机生成的对象,该对象不能固定发行版但不鼓励硬编码?

10
打印选票!
众所周知,今天是选举日! 今天的任务是,在有输入的情况下打印选票。 如果输入为Hillary Clinton,则打印: Hillary Clinton ===-----===> Donald Trump === ===> ____________ === ===> 但是,如果输入为Donald Trump,则打印: Hillary Clinton === ===> Donald Trump ===-----===> ____________ === ===> 如果还有其他问题,请将其写在第三行: Hillary Clinton === ===> Donald Trump === ===> Oliver Ni ===-----===> (从技术上讲,我还不到18岁...) 请记住,这是code-golf,所以字节最少的代码将获胜。

13
可变价格收入!
介绍和信誉 假设你是一个调酒师。大多数时候,酒吧里有很多快乐的人,但是很多人只喝相同的饮料,很少喝到适合自己的口味,因此您想改变这种状况。因此,您引入了一种系统,其中饮料的价格是可变的,具体取决于已售出的饮料的数量,但价格永远不会超过某些阈值。出于某种奇怪的原因,您总是忘记正确记录所有售出的饮料和价格,因此您需要考虑一段简短的代码(=令人难忘!),它根据给定的饮料消耗量为您进行数学计算。 这个挑战已经在我的大学的函数编程课程的2012年期中考试中出现过,我的教授可以在这里发布它。我们已提供了考试语言的示例解决方案。 输入值 您的输入将是不包含空格的字符串列表-这些是所售饮料的名称。使用您惯用的首选输入法进行输入。 输出量 您的输出将是一个数字-这是您今晚产生的收入。使用您通常首选的输出方法给出输出。 该怎么办? 这分别适用于每种饮料: 起始价为10。 每次购买饮料时,下一个购买者的价格都会上涨1。 最高价格为50。如果以50的价格购买了饮料,那么新价格将再次为10。 您的任务是找到根据上述规则输入的饮料清单生成的总收入。 如果您想知道:“ 50美元真是太贵了!”,这是50分贝,所以50 * 0.1 *单位,但是我选择10-50来排除不包含浮点运算。 谁赢? 这是代码高尔夫球,因此以字节为单位的最短代码胜出!适用标准规则。 潜在的极端案例 如果输入列表为空,则输出应为0。 不能假定输入列表按饮料排序。 例子 [] -> 0 ["A"] -> 10 ["A","B"] -> 20 ["A","A","B"] -> 31 ["A","B","A"] -> 31 ["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> 1240 ["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D"] -> 1304 ["D","A","A","C","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","C"] -> 1304 ["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> …
16 code-golf  math 

10
生成所有长度为n的大括号
大括号字符串定义为由*()[]大括号正确匹配的字符组成的字符串: [brace-string] ::= [unit] || [unit] [brace-string] [unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]" 这是一个有效的大括号字符串: ((())***[]**)****[(())*]* 但是这些不是: )( **(**[*](**) **([*)]** 您的任务是编写一个程序(或函数),给定一个正整数n,该程序将一个数字作为输入并输出(或返回)所有有效的length括号n。 技术指标 您可以按任何顺序输出字符串。 您可以将其输出为列表或由不同字符分隔的字符串。 您的程序必须正确处理0。可能有1个长度为0的大括号字符串,即空字符串""。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 0. 1. * 2. ** () [] 3. *** ()* []* (*) [*] *() *[] 4. **** …

19
打ic一串
您面临的挑战是编写一个打乱字符串的程序或函数。它应该以字符串作为输入(通过任何标准方法),然后执行以下步骤: 生成一个(不一定是一致的)1到10之间(含1和10 )的随机整数n。 等待n秒。 打印输入的前/后n个字符,如果少于n 个字符,则打印其余的输入。 如果还有要打印的输入,请返回步骤1。 规则 输入将始终是仅包含ASCII字符(32-126)的非空字符串。 等待时间不必精确地是n秒,但是必须在n的 10%之内。 每次打印一段文本时,您都可以打印尾随换行符。 例 此处的空格表示1秒。如果输入为Hiccupinator!,则输出可能为: Hic cupin a tor! 计分 这是代码高尔夫球,因此最短的代码以字节为单位获胜。
16 code-golf  string 

3
完全可逆的子矩阵
(受到有关数学问题的启发) 定义 给定一个n x n方阵一个,我们可以把它invertible是否存在某些n x n方阵乙,使得AB = BA = 我ñ,与我ñ是大小的单位矩阵n x n(与主对角线的矩阵1S和别的0)和AB和BA代表通常的矩阵乘法(在此不做介绍-采用线性代数类)。 从这一点,我们可以称之为一个m x n矩阵C ^ totally invertible如果每一个k x k的子矩阵(定义见下文)Ç是可逆的所有k > 1,k <= (smaller of m,n)。 子矩阵定义为从原始矩阵删除任何数量的行和/或列之后的结果矩阵。例如,可以通过如下删除第一行和中间一列,将下面的3x3矩阵C转换为2x2子矩阵C':1 2 32 5 8 C = [[1 2 3] [4 5 6] --> C' = [[4 6] [7 8 9]] [7 9]] …

10
Bailey–Borwein–Plouffe迭代
Bailey–Borwein–Plouffe迭代 我们已经在PPCG上看到了几个pi挑战,但是没有一个挑战明确指出了您应该使用的算法。我想看看Bailey–Borwein–Plouffe算法在迭代之前使用任何语言的实现n。计算公式如下: 您的算法应将每次迭代最多输出n次,显示中间和以及最终结果以形成“三角形”。您也可以使用维基百科页面上显示的算法的简化多项式形式。运行示例n=50如下所示: 3 3.1 3.14 3.141 3.1415 3.14159 3.141592 3.1415926 3.14159265 3.141592653 3.1415926535 3.14159265358 3.141592653589 3.1415926535897 3.14159265358979 3.141592653589793 3.1415926535897932 3.14159265358979323 3.141592653589793238 3.1415926535897932384 3.14159265358979323846 3.141592653589793238462 3.1415926535897932384626 3.14159265358979323846264 3.141592653589793238462643 3.1415926535897932384626433 3.14159265358979323846264338 3.141592653589793238462643383 3.1415926535897932384626433832 3.14159265358979323846264338327 3.141592653589793238462643383279 3.1415926535897932384626433832795 3.14159265358979323846264338327950 3.141592653589793238462643383279502 3.1415926535897932384626433832795028 3.14159265358979323846264338327950288 3.141592653589793238462643383279502884 3.1415926535897932384626433832795028841 3.14159265358979323846264338327950288419 3.141592653589793238462643383279502884197 3.1415926535897932384626433832795028841971 3.14159265358979323846264338327950288419716 3.141592653589793238462643383279502884197169 3.1415926535897932384626433832795028841971693 3.14159265358979323846264338327950288419716939 3.141592653589793238462643383279502884197169399 3.1415926535897932384626433832795028841971693993 …
16 code-golf  math  pi 

19
N维圈!
编写一个以两个数字为输入的程序。第一个是尺寸数-0代表点,1代表直线,2代表圆,3代表球体。第二个数字是对象的半径,如果是一维,则是数字本身。输出0表示0尺寸。输出是对象的长度/面积/体积。 如果我们调用第一个数字n,第二个数字r和输出x,我们将得到: 对于n = 0,x = 1 对于n = 1,x = 2×r 对于n = 2,x = r 2 ×π 对于n = 3,X =(4 / 3)×R 3 ×π 依此类推...不过,如果需要的话。 笔记: 一个或两个数字均为负数或第一个数字不为整数的情况无需覆盖。 该程序不得从任何文件中读取,唯一的输入就是这两个数字。 输出应仅使用数字(例如,不使用“ 14 * pi”),并且至少应精确到两位十进制数字。 对于n = 0,如果它使代码更短,则可以输出0。 额外的赃物甚至可以覆盖4个或更大尺寸的“球体”! 这是代码高尔夫球,因此最短答案以字节为单位! 例子: 1 1 -> 2 2 3 -> 28,27 3 …
16 code-golf  math 

1
Starry打高尔夫球的秘诀
您在Starry打高尔夫球有哪些一般提示??我正在寻找可以应用于代码高尔夫球问题的想法,并且这些想法至少也特定于Starry(例如,“删除评论”不是答案)。 请为每个答案发布一个提示。
16 code-golf  tips  starry 

14
总和链序列
顺序: 我们从开始1。 我们首先将当前的1索引值添加到序列中的前一个数字。 然后,如果它们适用于此当前值,则按顺序应用以下数学运算: 可除以2?=>加法 可除以3?=>减法 可除以4?=>(加和)相乘 不是没有除尽2,3也没有4?->继续当前的总和结果 输出: 按以下顺序输出前100个数字: 1, 1, 21, 25, 30, 216, 223, 223, 2169, 2179, 2190, 2202, 2215, 2215, 2245, 2261, 2295, 2295, 2333, 2353, 2395, 2417, 56649, 56649, 56699, 56725, 1533033, 1533061, 1533090, 45993600, 45993631, 45993631, 1517792001, 1517792035, 1517792070, 1517792106, 1517792143, 1517792143, 1517792221, 1517792261, …

30
打印四边形
表示为的滴定a^^b重复进行幂运算。例如,2^^3is 2^2^2,即16。 给定两个数字a和b,请打印a^^b。 测试用例 1 2 -> 1 2 2 -> 4 5 2 -> 3125 3 3 -> 7625597484987 etc. 科学记数法是可以接受的。 请记住,这是code-golf,所以字节数最少的代码将获胜。
16 code-golf  math  number 

12
这个问题有多少个答案?
编写一个程序或函数,输出该问题具有的整数答案。添加更多答案后,您的解决方案仍然可以使用。 在此页面上时,可以从js控制台运行在浏览器中运行的语言。否则,您可能必须下载此页面。多语言解决方案,例如wget使用该页面解析页面grep是可以的。只需总结命令行和所有使用的源即可。 这是代码高尔夫;以字节为单位的最短答案获胜。 编辑: 让我们最多不考虑此页面的URL的出现,无论是作为输入还是作为源。没有url缩短器,没有数据存储为get参数等。url周围的引号(如果需要)仍然有效。将url作为输入也可以。如果要删除url的某些部分,例如/how-many-answers...,可以,但是可能无济于事。

13
找出多边形的质心
从维基百科: 由n个顶点(x 0,y 0),(x 1,y 1),...,(x n-1,y n-1)定义的非自相交闭合多边形的质心是点(C x,C y),其中 其中A是多边形的有符号区域, 在这些公式中,假定顶点按照沿多边形周长的出现顺序进行编号。此外,假设顶点(x n,y n)与(x 0,y 0)相同,这意味着在最后一种情况下i + 1必须循环到i = 0。请注意,如果按顺时针顺序对点进行编号,则按上述方法计算的面积A将带有负号;但是即使在这种情况下,质心坐标也将是正确的。 给定顶点列表的顺序(顺时针或逆时针),找到由顶点表示的非自相交封闭多边形的质心。 如果有帮助,您可以假定输入仅是CW或仅是CCW。如果需要,请在回答中说出这一点。 坐标不需要为整数,并且可以包含负数。 输入将始终有效,并且至少包含三个顶点。 只需要处理适合您语言的本机浮点数据类型的输入即可。 您可以假设输入数字将始终包含小数点。 您可以假设输入整数以.或结尾.0。 您可以使用复数进行输入。 输出应精确到最接近的千分之一。 例子 [(0.,0.), (1.,0.), (1.,1.), (0.,1.)] -> (0.5, 0.5) [(-15.21,0.8), (10.1,-0.3), (-0.07,23.55)] -> -1.727 8.017 [(-39.00,-55.94), (-56.08,-4.73), (-72.64,12.12), (-31.04,53.58), (-30.36,28.29), (17.96,59.17), (0.00,0.00), …

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.