编程拼图和代码高尔夫

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

1
工作时间计算器
这是基于我公司如何处理每个员工的工作时间监控。我们每个人都有一张可以在传感器前通过的卡,这样一来,时钟便记录了员工签到或签出办公室的时间。每次寄存器都链接到一个代码: 代码0:员工到达(或返回)办公室。 代码1:员工离开办公室吃午餐。 代码2:员工在一天结束时离开办公室。 代码3:员工出于工作原因离开办公室。 代码4:员工出于个人原因离开办公室。 代码0寄存器有时将被称为“零寄存器”,代码1至代码4寄存器有时将被称为“非零寄存器”。 因此,对于工人来说,正常的一天会生成如下的注册表: Code/Time ------------ 0 8:17 // The employee arrives at the office 4 11:34 // The employee leaves the office to smoke 0 11:41 // The employee returns to the office 1 13:37 // The employee leaves the office to have lunch 0 …

5
挑战6:运输码头重新贴标!
<<上一页 下一页>> 感谢PPCG社区,圣诞老人成功地将礼物分类到正确的顺序,以便搬进运输码头。不幸的是,运输码头的标志坏了,所以他不知道把所有礼物放在哪里!礼物全部归为一组,而不是按照范围分组,Santa承认这是一个更好的主意。 现在,给定礼物的排序顺序,确定所有可能的最小范围配置,以使礼物的顺序正确。也就是说,找到所有最小范围的配置,以使根据挑战#5中的算法对礼物进行排序不会改变顺序。 挑战 最小范围配置是范围的列表,以使范围各自尽可能小。也就是说,如果指定范围覆盖礼物的特定子集,则该范围的最小值和最大值必须与该子集的最小值和最大值相同。换句话说,缩小封面的任何范围将导致它不再是封面。 挑战在于找到适用于当前尺寸的所有可能的最小范围配置。让我们举个例子:[3, 1, 2, 5, 4, 7, 6] 有一个简单的情况,那就是要占据整个当前配置的范围。在这种情况下,[[1, 7]]将是一个解决方案。 对于具有唯一元素的示例,另一种琐碎的情况是[[3], [1], [2], [5], [4], [7], [6]](因为不需要对范围进行排序)。 在此示例中,我们还看到[[1, 3], [4, 7]]和[[1, 3], [4, 5], [6, 7]]以及与[[1, 3], [5], [4], [6, 7]]和也可以[[1, 3], [4, 5], [7], [6]]。 的最终答案[3, 1, 2, 5, 4, 7, 6]是[[[3], [1], [2], …

1
来临挑战2:当前的保险库突袭!
<<上一页 下一页>> 挑战 现在,圣诞老人终于弄清楚了如何进入他现在的保险库,他意识到,精灵们以某种方式进入了他的仓库并偷走了他的一些礼物!他们还没有弄清楚如何离开金库,所以圣诞老人必须设法抓住他们。圣诞老人和小精灵都有无限的运动能量,但不幸的是,小精灵具有更高的无限能量,因此,如果最终他们到处循环运行,那么小精灵就会获得自由。 给定一个n节点和e边的图形,任意两个节点之间都存在游走,以及精灵和圣诞老人​​的位置,确定圣诞老人在累之前可以抓到多少只精灵。 追逐是基于回合的。在每个周期中,精灵都首先同时移动(它们可以彼此移动并移动到同一节点上),然后圣诞老人将移动。如果圣诞老人移动到与小精灵相同的节点上,那么他已经抓住了那个小精灵。每个小精灵只能在一个步骤中从一个节点移动到其邻居。一开始圣诞老人也是如此,但是对于他遇到的每个精灵,圣诞老人都可以采取进一步的措施。因此,如果圣诞老人抓到了一个小精灵,那么他可以从一个节点移动到其邻居的邻居。这意味着他可以移动到某个节点然后再返回。但是,由于圣诞老人在此期间的运行速度过快,因此他不会抓到任何在中间步骤中经过的精灵(因此,如果他在A上,A与B连接,B与C连接,则有一个小精灵B,然后圣诞老人从A-> B-> C移出,尚未捕获小精灵)。但是,圣诞老人不必一次移动那么多步骤。他每回合最多移动1 +(被抓住的精灵数量)。 请注意,所有小精灵每转一圈都必须移动,如果一个小精灵移动到圣诞老人的节点上,就会被抓住。 一开始,所有实体(精灵,圣诞老人)都会位于不同的节点上。 规格和规则 理论上,您的程序应可用于任何大小的输入。输入将以图形,精灵的位置和圣诞老人​​的位置给出。您可以采用任何合理格式的图形(节点列表+边列表,边列表,邻接矩阵,循环符号等),并且可以以与您的图形输入格式一起使用的任何合理格式来放置位置(索引在节点列表等中)。输出应为单个正整数,指示圣诞老人可以抓到的最大精灵数量。 测试用例 这些是作为边的列表和位置的节点编号给出的。 Input -> Output [(0, 1), (1, 2)], [0, 2], 1 -> 2 # Easy win for Santa, the elves get themselves caught :P [(0, 1), (1, 2), (2, 3), (3, 0)], [0, 1], 2 -> …

1
五字符ASCII映射
注意:在本文中,术语“字符”和“颜色”本质上是同一件事 这个图片: 可以表示为 ....'''333 .eeee'''3e ..dddd33ee %%%dd####e (将颜色映射为ASCII字符) 四种颜色定理指出:“在将平面分成相邻区域的任何情况下,生成一个称为图的图形,对地图区域进行着色所需的颜色不超过四种,因此,两个相邻区域的颜色都不相同。两个如果这些区域共享不是角的公共边界,则这些区域称为相邻区域,其中角是三个或更多区域共享的点。” -维基百科(链接) 这意味着应该可以使用四种颜色为地图着色,以使没有两个共享边的部分共享一种颜色。 仅使用四种颜色为地图着色的算法很复杂,因此在此挑战中,您的程序仅需要使用五种或更少的颜色为地图着色。 重新着色的先前地图可能看起来像这样: 可以表示为 ....'''333 .eeee'''3e ..dddd33ee 333dd....e 或同等 @@@@$$$!!! @^^^^$$$!^ @@<<<<!!^^ !!!<<@@@@^ 挑战: 给定一个由ascii字符组成的“地图”(每个字符代表不同的颜色),请对该地图“重新着色”(使用不同的ascii字符代表地图),使其仅使用五种或更少的颜色。 例: 输入: %%%%%%%%%%%%##########$$$$$$$$%% *****%%%####!!!!!!!%%%%%%%%%#^^^ (((((((***>>>>??????????%%%%%%%% &&&&&&&&$$$$$$$^^^^^^^))@@@%%%%% ^^^^^^%%%%%%%%%%%%############## 可能的输出: 11111111111122222222223333333311 44444111222255555551111111112444 22222224441111444444444411111111 55555555222222255555553355511111 22222211111111111122222222222222 说明: 输入映射将始终使用六个或更多字符 您可以在输出中使用任何五个不同的字符 您可以在输出中使用少于五个不同的字符 您可以采用任何合理的格式输入(包括数组数组或字符串数​​组) 这是代码高尔夫球,因此最短的答案为准。 沙盒链接
9 code-golf 

9
来临挑战3:是时候重新制作礼物了!
<<上一页 下一页>> 不幸的是,圣诞老人无法及时赶上精灵!他现在必须回到制造礼物。由于精灵绝对不是圣诞老人的奴隶,所以他必须弄清楚要付多少钱给他们。 挑战 给定一些有关礼物的信息,确定所有礼物的制造成本。 每个礼物都放在一个纸板箱中,并用包装纸包裹,最后用缎带包裹。包装纸很神奇,不需要重叠,因此包装纸的使用量正好等于盒子的表面积。所有礼物都是矩形棱柱,因为这样圣诞老人可以更紧凑地存放它们。色带沿所有三个方向缠绕(因此,用于包装的色带的长度等于三个不同周长的总和)。 幸运的是,礼物本身的成本是已知的。纸板每平方米1美元,包装纸每平方米2美元。(提示:您可以将表面积乘以3:P)。碳带每米收费1美元。 格式规格 输入将作为礼物清单给出,其中每个礼物都包含实际物品的成本和礼物盒的三个维度。您的输出应该是所需的总成本。 准确的说,对于单个存在的关于项目成本的成本公式c和尺寸x,y和z是c + 6 * (x * y + y * z + z * x) + 4 * (x + y + z)。 测试用例 [[7, 8, 6, 7], [7, 7, 5, 5], [8, 9, 6, 7], [6, 5, 10, 10], [5, …

6
输出向量的所有不同排列
挑战: 输出一个可能很长的正整数列表的所有不同排列。您可能会假设测试时向量的数目少于1,000,但是从理论上讲,该过程应适用于任何一个数目大于一个的向量,而不论大小。 限制条件: 您必须将内存使用量限制为O(n ^ 2),其中n是输入向量中元素的数量。您不能拥有O(n!)。这意味着您无法将所有排列存储在内存中。 您必须将时间复杂度限制为O(result size * n)。如果所有数字相等,则为O(n);如果所有数字均不同,则为O(n!* n)。这意味着您无法创建一个排列并将其与所有其他排列进行检查以确保唯一性(这将是O(n!^ 2 * n))。 可以接受表明满足时间和内存限制的经验度量。 您实际上必须打印/输出排列(因为不可能存储它们)。 如果您运行程序足够长的时间,那么所有排列都应输出(理论上)! 不同的排列: 列表[ 1,1,2 ]具有三个排列,而不是六个:[ 1,1,2 ],[1,2,1]和[2,1,1]。您可以选择输出的顺序。 可管理的测试用例: Input: [1, 2, 1] Output: [1, 1, 2] [1, 2, 1] [2, 1, 1] Input: [1, 2, 3, 2] Output: [1, 2, 2, 3] [1, 2, …

23
来临挑战5:将礼物搬到运输码头!
<<上一页 下一页>> 多亏了PPCG社区,Santa设法重新制造了他所有的礼物,并且在装配线之后,现在就可以将这些礼物搬到运输码头了! 圣诞老人的每个运输码头都只能容纳一定范围的当前尺寸,因为运输雪橇是专门针对特定尺寸的(任何较轻的雪橇都会很浪费,更重的雪橇将无法承受负荷)。因此,他需要您帮助他拿礼物并将其分类到正确的运输码头中。 挑战 根据清单和运输码头范围,将礼物稳定地组织成正确的顺序。 让我们以这个为例:礼物是[5, 3, 8, 6, 2, 7],码头范围是[[1, 5] and [6, 10]]。 礼物5,3以及2进入第一对接和礼物8,6和7进入第二平台。可以显示为[[5, 3, 2], [8, 6, 7]]。此列表将比输入更接近排序,但stably意味着在每个扩展坞中,礼物的顺序必须与输入的顺序相同(否则,您可以对整个列表进行排序)。 在这种情况下,您的最终输出将是[5, 3, 2, 8, 6, 7](作为固定列表)。 格式化规格 你将被给定输入作为整数的平面列表,并且在任何合理的格式范围的列表(例如,用于上述情况的范围内,可以给定为[[1, 5], [6, 10]],[1, 5, 6, 10],或[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])。您的输出应该是任何合理格式的整数整数列表。 输入可以包含重复值;在这种情况下,您需要返回它们的所有实例。当前所有尺寸均在一个尺寸范围内,并且您可以假定这些范围永远不会重叠。只要覆盖所有当前尺寸,范围就可能存在差距。 规则 适用标准漏洞 这是 代码高尔夫球,因此以字节为单位的最短答案会获胜 …

7
火车穿过一座标有商标的桥
考虑由标有级联的正整数的数字的图块形成的长度为B的桥。例如,如果B为41,则它将如下所示: ----------------------------------------- 12345678910111213141516171819202122232425 现在想象一列长度为T的火车过桥。火车的最左端开始于位置X(1索引)。为了更好地理解问题,让我们为事件制定一个方案,其中B = 41,T = 10,X = 10。使用等号(=)和线绘制火车: __________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 火车在每一步中都可以通过其所在的唯一图块的总和来前进。例如,火车在上面站立的磁贴为:[1, 0, 1, 1, 1, 2, 1, 3, 1, 4],唯一(重复数据消除)磁贴为:[1, 0, 2, 3, 4],其总和为10。因此,火车可以前进10。我们应该再次绘制它并重复该过程,直到火车的最左边的点通过最后一个图块: __________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 唯一区块的总和:1 + 5 + 6 + 7 + …

5
椭圆系统
介绍 给定平面中的五个点,您的任务是计算通过这些点的椭圆的面积。 您可以假设可以使用给定的输入值构造一个完全不变的椭圆。 规则 输入是10任何方便形式的整数,与点的x和y坐标相对应。例如,您可以将输入作为10整数列表[x1, y1, x2, y2, ..., x5, y5]或[[x1, y1], [x2, y2], ..., [x5, y5]],等等。您也可以处理十进制数字,但只需要整数。 输出是椭圆面积的表示。这可以是一些符号表达式,也可以8是精度至少为十进制的十进制值。 这是代码高尔夫球,因此最短的答案以字节为单位。 输入和输出示例 输入: [-2、3、2、5、5、3、4、0、1,-3 输出: 62.15326783788685 通过这些点的椭圆的描述: 更多示例: f(60, -92, -31, -10, 78, -19, -27, -35, 91, -37) = 9882.59540465108 f(-9, -4, 7, 7, 10, 1, -7, -10, 0, 7) = 269.5966648188643 …

7
打假素!
简介/背景 在最近一次关于加密聊天的讨论中,我被挑战去讨论/帮助Fermat素数测试和Carmichael数字。该测试基于a^(p-1) mod p==1始终适用于素数p而不适用于复合材料的前提。现在,carmichael号码本质上是Fermat考验的最大敌人:您必须选择一个号码,a以使其不与素数p相抵a^(p-1) mod p!=1。现在,如果a不是互质,则基本上可以发现一个非平凡的因子p众所周知,保理可能相当困难。特别是在所有因素都足够大的情况下。您现在可能已经意识到,为什么在实践中不经常使用Fermat测试(还有更好的算法),这是因为作为防御者(在安全性方面)您需要为某些数字做与攻击者(即数量)。 因此,既然我们知道为什么这些数字有些引人入胜,我们将以最短的方式生成它们,因此只要需要,我们就可以记住生成的代码! Carmichael编号在OEIS上也称为A002997。已经 存在一个相关的挑战,但是这里的条目没有竞争力,因为它们是针对速度而非大小进行了优化的。同样的论点也适用于反方向,此处的输入可能会在速度上做出取舍,而有利于大小。 规格 输入项 这是一个标准 序列挑战,因此您将正整数或非负整数n作为输入。n可以根据需要选择0或1的索引(请指出)。 输出量 根据需要,您的输出将是n-th carmichael数或第一个ncarmichael数(请指出)。 规格 一个整数x是卡迈克尔数当且仅当x是复合材料和所有的整数y与gcd(x,y)=1,它认为y^(x-1) mod x==1。 谁赢? 这是 代码高尔夫球,因此以字节为单位的最短代码获胜!适用标准IO和漏洞规则。 测试用例 前几个carmichael号码是: 561,1105,1729,2465,2821,6601,8911,10585,15841, 29341,41041,46657,52633,62745,63973,75361,101101, 115921,126217,162401,172081,188461,252601,278545, 294409,314821,334153,340561,399001,410041,449065, 488881,512461
9 code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

13
扩大比较链
与大多数语言不同,Python a<b<c会像在数学中一样进行评估,实际上是比较三个数字,而不是将布尔值a<b与进行比较c。用C(以及许多其他语言)编写此代码的正确方法是a<b && b<c。 在这个挑战中,您的任务是将这样任意长度的比较链从Python /直观表示扩展到如何用其他语言编写。 技术指标 您的程序必须要处理运算符:==, !=, <, >, <=, >=。 输入将具有仅使用整数的比较链。 不用担心一路比较的真实性,这纯粹是语法/语法上的挑战。 输入将没有任何空格,以防止答案因分割空格而使解析变得琐碎。 但是,您的输出可能只有一个空格,要么仅包含&&,要么包含比较运算符和&&,或者两者都不包含,但是要保持一致。 测试用例 Input Output --------------------------------------------------------------- 3<4<5 3<4 && 4<5 3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9 3<5==6<19 3<5 && 5==6 && 6<19 10>=5<7!=20 10>=5 && 5<7 && 7!=20 15==15==15==15==15 …
9 code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

3
n位精度的近似浮点数
我们有一个r介于0和1之间的浮点数和一个整数p。 查找具有最小分母的整数分数,其分数近似r至少为- p位数。 输入:(r一个浮点数)和p(整数)。 输出:a和b整数,其中 a/b(以浮点数表示)近似r到p数字。 b 是可能的最小此类正整数。 例如: 如果r=0.14159265358979和p=9, 那么结果是a=4687和b=33102, 因为4687/33102=0.1415926530119026。 任何解决方案都必须在理论上适用于任意精度类型,但是由实现的固定精度类型引起的限制并不重要。 精度表示在“ 0.” 之后的数字位数r。因此,如果r=0.0123和p=3,a/b则应从开始0.012。如果的p小数部分的第一位数字为r0,则可以接受未定义的行为。 获胜标准: 算法上最快的算法获胜。速度以O(p)为单位。 如果有多个最快的算法,则最短者获胜。 我自己的答案被排除在可能的获胜者之外。 ps数学部分实际上看起来似乎容易得多,我建议您阅读这篇文章。

17
素数分解中的素数
我看到了PPCG 面临的另一个主要挑战,而且我确实爱我一些主要挑战。然后,我误读了介绍性文字,想知道这里的创造力是什么。 事实证明,提出的问题是微不足道的,但我想知道我(误读)的问题是否也是如此: 6可以用2 ^ 1 * 3 ^ 1表示,而50可以用2 ^ 1 * 5 ^ 2表示(其中^表示指数)。 你的任务: 编写程序或函数,以确定此数字表示形式中有多少个不同的质数。 输入: 通过任何常规方法获取的整数n,使得1 <n <10 ^ 12。 输出: 表示 n 的唯一素数所需的不同素数的数量。 测试用例: Input Factorisation Unique primes in factorisation representation 24 2^3*3^1 2 (2, 3) 126 2^1*3^2*7^1 3 (2, 3, 7) 8 2^3 2 …

4
Badugi,谁赢了?
受到这一挑战的启发并与此相关。 背景 Badugi [bæduːɡiː]是低球平局扑克变种。 Pokerstars世界杯在线扑克$ 1K赛事在3小时内开始,我需要知道我的手牌有多好! 该游戏使用52张标准卡组,其中包含四张西服和13张等级。西服是无序的,应加标签cdhs; 从最高K到最低的等级A是KQJT98765432A。因此,整个甲板可以表示如下(以空格分隔): Kc Kd Kh Ks Qc Qd Qh Qs Jc Jd Jh Js Tc Td Th Ts 9c 9d 9h 9s 8c 8d 8h 8s 7c 7d 7h 7s 6c 6d 6h 6s 5c 5d 5h 5s 4c 4d 4h 4s 3c 3d …

7
日期在范围内?
给定MM/DD日期(12/24)和开始/结束日期范围(11/01 - 06/24),请确定日期是否在列出的日期范围内。 日期范围可以是连续的(05/01 - 11/01)或环绕到下一年(11/01 - 05/01)。 例子: 12/24在11/01 - 06/24=真 06/24在11/01 - 06/24=真 06/24在06/24 - 06/24=真 06/24在11/01 - 06/23= False 07/24在11/01 - 06/24= False 07/24在05/01 - 11/01=真 07/24在07/23 - 07/20=真 岁月不老。假定日期和/或日期范围适用于过去或将来的任何一年。 结束日期将始终在开始日期之后。如果结束日期在数值上小于开始日期,则假定我们要绕到下一年。 这三个输入变量可以通过任何方法(args,HTTP,stdin等)以及任何格式(字符串,JSON,数组等)使用。 响应可以是boolean或是/是/否/正确/等字符串的任何形式。最短的代码胜出。 您不能简单地将args传递给内置函数。

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.