编程拼图和代码高尔夫

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

4
最小成本块对角化
考虑二进制块对角矩阵,该矩阵在主对角线上具有1s的正方形块,而在其他各处均为0。让我们称此类矩阵为“有效”矩阵。 例如,以下是一些有效的4x4矩阵: 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 …

12
N-唯一加法集
请记住,集合是无序的,没有重复项。 定义长度为K的N个唯一加法集合S是一个集合,使得S中所有N个长度子集的总和为不同的数。换句话说,S的所有N个长度的子集的和都是不同的。 目标给定一个数组/集合作为输入,并N以任意合理格式给函数或完整程序提供一个数字,查找并返回或输出表示输入是否为N的真实或假值(错误为假)。独特的添加剂。 您可以假设每个元素最多只能出现一次,并且每个数字都在您语言的本机数据类型之内。如果需要,您还可以假设输入已排序。最后,您可以假设0 < N <= K。 例子 让我们考虑一下set S = {1, 2, 3, 5}和N = 2。这是所有唯一对的总和S(因为唯一对是唯一的总和): 1 + 2 = 3 1 + 3 = 4 1 + 5 = 6 2 + 3 = 5 2 + 5 = 7 3 + 5 = 8 我们可以看到输出中没有重复项,因此S是2唯一加法的。 现在让我们考虑集合T …

13
对角线点积
这个挑战非常简单。您将得到一个以任何理性方式表示的方阵作为输入,并且您必须输出该矩阵对角线的点积。 具体而言,对角线是从左上角到右下角以及从右上角到左下角的对角线。 测试用例 [[-1, 1], [-2, 1]] -> -3 [[824, -65], [-814, -741]] -> 549614 [[-1, -8, 4], [4, 0, -5], [-3, 5, 2]] -> -10 [[0, -1, 0], [1, 0, 2], [1, 0, 1]] -> 1

3
RegEx-golf:匹配字符串中的所有内容
您的任务是编写一个与字符串中的所有内容匹配的RegEx。 字符串定义为被两个未转义的包围(但不包括)的所有内容"。 A "可以通过进行转义\,也可以再次进行转义。 测试用例 string: ab\c"defg\\\"hi"jkl"mn\\\\"opqrst"" matches: ^^^^^^^^^^ ^^^^^^ ^ (the empty string) 计分 最短的解决方案获胜。 眼镜 请指定使用的风味。 输入将保持平衡"。 在\string-beginning-delimiter之前紧跟着没有。例如,您不需要处理abc\"def"

2
架桥
您的任务是建立一座桥梁,以连接两个峭壁d(在一定距离的情况下输入)。d将永远是偶数 但是,桥需要列来支撑它。每列每侧最多可容纳6个空格。 对于此示例: ________ ________ | | A | | B |----------------------| d = 22 的桥d = 20应该看起来像这样,有两列。列不计入d。 _____|__________|_____ 12345|1234554321|12345 | | 规则: 必须有足够的立柱站立。 必须具有站起来所需的最少列数。 必须对称 最低字节赢率 示例:(#仅用于帮助您计算空格。不应包含在您的输出中) d = 10 _____|_____ 12345|12345 | d = 32 _____|___________|___________|_____ 12345|12345654321| | | | | d = 8 ____|____ 1234|1234 | d …

1
如何在f(item)最小的列表中找到该项目?
我有一个清单l和一个函数f。f不是严格增加或减少。如何在列表中找到f(item)最小的项目?例如,假设列表为: l = [1, 2, 3, 4] 并且list(f(x)for x in l)是: [2, 9, 0, 3] f(3)小于其他任何一个的f,因此应打印“ 3”。最简单的方法是什么?我最初尝试: min(f(x) for x in l) 但是,这0不能3。如果我是为了提高可读性而不是为了简洁起见,我会这样做: index = 0 smallest = f(l[0]) for i in range(len(l)): value = f(l[i]) if value < smallest: smallest = value index = i 很好,但是对于代码高尔夫球来说太可怕了。即使打了高尔夫球 i,s=0,f(l[0]) for x …
10 code-golf  tips  python 

25
计算相对论速度
在狭义相对论中,移动物体相对于另一个在相反方向移动的物体的速度由以下公式给出: s = v + u1 + v u / c2。s=v+ü1个+vü/C2。\begin{align}s = \frac{v+u}{1+vu/c^2}.\end{align} s = ( v + u ) / ( 1 + v * u / c ^ 2) 在这个公式中,和是物体速度的大小,是光速(大约是,对此非常接近挑战)。vvvüüuCCc3.0 × 108米/ 秒3.0×108米/s3.0 \times 10^8 \,\mathrm m/\mathrm s 例如,如果一个对象在移动v = 50,000 m/s,而另一个对象在移动u = 60,000 m/s,则每个对象相对于另一个的速度大约为s = 110,000 m/s。这就是您在伽利略相对论(速度简单地相加)下所期望的。但是,如果v …

30
重复项目组
挑战说明 给定一个项目列表/数组,显示所有连续重复项目的组。 输入/输出说明 您的输入是一个列表/项目数组(您可以假设所有项目都是同一类型)。您不需要支持您的语言所拥有的每种类型,而必须支持至少一种int类型(最好是,但是像这样的类型boolean,虽然不是很有趣,但是也可以)。样本输出: [4, 4, 2, 2, 9, 9] -> [[4, 4], [2, 2], [9, 9]] [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4] -> [[1, 1, 1], [2, 2], [3, 3, 3], [4, 4, 4, 4]] [1, 1, 1, 3, 3, 1, 1, 2, …

2
这是唯一可串联的吗?
在关于前缀代码的挑战中,我们了解到前缀代码是唯一可串联的。 这意味着它们可以在没有分隔符且没有歧义的情况下连接在一起。 例如,由于[1,2,45]是前缀代码,因此我可以将它们连接在一起而无需使用分隔符,例如1245245112145,这样就不会产生歧义。 然而,相反的情况并不总是正确的。 例如,[3,34]不是前缀代码。但是,我可以这样做:3333434334333,并且不会有任何歧义。您只需要一个更智能的解析器即可。 但是,[1,11]不是唯一可串联的,因为1111可以用5种方式解释。 目标 您的任务是编写一个将字符串列表(ASCII)作为输入的程序/函数,并确定它们是否是唯一可串联的。 细节 重复计数为假。 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。 测试用例 真正: [12,21,112] [12,112,1112] [3,4,35] [2,3,352] 假: [1,1] [1,2,112] [1,23,4,12,34] [1,2,35,4,123,58,8]
10 code-golf 

9
关于密码的主题
在Keep Talking和Nobody Explodes中,玩家需要根据其“专家”(其他人提供的手册)中的信息来消灭炸弹。每个炸弹都是由模块组成的,其中一个可以是密码,其中会为专家提供此可能的密码列表,所有密码长度均为五个字母: about after again below could every first found great house large learn never other place plant point right small sound spell still study their there these thing think three water where which world would write 并为玩家提供了密码中每个位置可能包含的6个字母的列表。给定可能的字母组合,输出正确的密码。输入可以采用任何合理的格式(2D数组,用换行符分隔的字符串等)。您可以减少用于压缩/生成列表/字符串/数组/任何密码的代码。(感谢@DenkerAffe) 注意:密码不区分大小写。您可能会假设输入只能解决一个密码。 示例/测试用例 此处的输入将表示为字符串数组。 ["FGARTW","LKSIRE","UHRKPA","TGYSTG","LUOTEU"] => first ["ULOIPE","GEYARF","SHRGWE","JEHSDG","EJHDSP"] => large ["SHWYEU","YEUTLS","IHEWRA","HWULER","EUELJD"] => …
10 code-golf 

1
它会漂浮吗?
挑战 给定代表船只底部的2d字符串作为输入,您必须确定船只是否会漂浮。该2D字符串可以采用最方便的任何格式。(带换行符的字符串,字符串列表,字符列表列表等。)如果真值浮动,则打印真实值,如果不正确,则打印假值。 如果底部的密度不一致,则船将翻倒,因此,每个字符都必须相同。另外,如果船上有大洞(用空格表示),它将下沉,因此您的船上不得有面积大于4的洞。这是一个示例: ######## # #### ######## # ## ## # ##### ######## 这艘船是有效的,因为其中最大的孔的面积为4。这艘船: ######## ######## # ## # ##### ######## 无效,因为它有一个面积为7的孔。您可以放心地假设每个输入的外部都是没有孔的实心矩形。这是更多测试: $$$$$$$$ ***$$$$$ ***$$$$$ ***$$$$$ $$$$$$$$ Invalid density. Sink. %%%%%%%% % % % %%%%% % % % % %%%%%%%% None of the holes are larger than 4. Float. OOOOOOOO …

8
Golf K-means算法
K-means是一种标准的无监督聚类算法,在给定一组“点”和多个K聚类的情况下,它将将每个“点”分配给K个聚类之一。 K均值的伪码 注意,K-means有很多变体。您必须实现我在下面描述的算法。只要给定相同的初始点,您可以获得与该算法相同的结果,就可以对算法进行一些更改或使用内置函数。 在此挑战中,所有输入将是2D平面上的点(每个点由其在x和y中的坐标表示)。 Inputs: K, the number of clusters P, the set of points Choose K points of P uniformly at random Each chosen point is the initial centroid of its cluster Loop: For each point in P: Assign to the cluster whose centroid is the nearest (Euclidean distance) …

1
这幅图中有多少个形状?
孩子们非常擅长对物体进行分类和计数。电脑似乎有更多麻烦。这是此问题的简化版本。您可以编写一个可以对图像中的对象进行分类和计数的小程序吗? 问题:给定一张图像包含一个或多个圆形和矩形,则返回2个整数,其中包含圆形和矩形的数量。 规则 输入图像将是您选择的任何位图格式的白色背景上的黑色图形。 图像的宽度和高度将在100到1000像素之间。 图形将完全包含在图像中。 数字将具有1像素的线宽。 图像将不使用抗锯齿功能。它们只会是白色的黑色。 人物可能会接触,相交或在另一个人物内部。 相交的图形最多具有4个公共像素。 圆的直径为20像素或更大。 矩形边的长度将为10个或更多像素。 您不得使用任何可识别形状的内置程序或库,也不得使用任何其他使此挑战变得微不足道的功能。 返回或打印2个带有圆形和矩形计数的整数。 例子1 答案:3 4 范例2: 答案:4 13 这是一场代码挑战赛,因此每种语言中最短的程序或功能将获胜。

4
Winnable纸牌Mancala板
曼卡拉(Mancala)是一系列棋盘游戏的名称,通常涉及一系列杯子,杯子中装有玩家操纵的珠子。该挑战将为游戏的单人纸牌变体使用特定的规则集。 该板的一端是一个“篮子”,然后是无数个杯子(从1开始编号)。某些杯子中会有一些珠子。如果n杯子中恰好有n珠子,则可以从中“撒出”珠子。播种是指将所有n珠子从杯子中取出,然后一次将它们在每个杯子中​​朝篮子放置。最后的珠子将进入篮子。当棋盘上的所有珠子都在篮子中时,玩家获胜。 显然,有许多棋盘无法胜出,例如,第二个杯子中恰好有一个珠子。没有合法玩法,因为不能播种所有带有0个珠子的杯子,并且第二个杯子没有要播种的珠子。显然这没什么好玩的,所以您的任务是创建可赢得的棋盘。 任务 给定表示多个珠子的正整数,将输出一个非负整数的列表,该非负整数表示应放入每个杯子中​​以制成如上所述的可取下的棋子的珠子的数量。此列表不应包含任何尾随零。 对于任何给定数量的珠子,始终只有一种可胜任的棋盘配置。 示范 这是演示如何玩可赢局并输入4的示例[0, 1, 3]。可赢局是。我们从唯一可用的举动开始,从第三个杯子中播出珠子,得到[1, 2, 0]。现在我们实际上有一个选择,但是唯一正确的选择是播下第一个杯子,得到:[0, 2, 0]。然后,我们播种第二个杯子[1, 0, 0],最后我们再次播种第一个杯子,以得到所有空杯子。 测试用例: 1 => [1] 2 => [0, 2] 3 => [1, 2] 4 => [0, 1, 3] 5 => [1, 1, 3] 6 => [0, 0, 2, 4] 7 => [1, 0, 2, 4] …

3
画一个简单的立方体
关于绘制真实的3D多维数据集,我们没有一个单一的挑战,所以就这样: 挑战 您的任务是绘制带有透视图的旋转立方体。它可以在单独的窗口中或作为图像。 输入值 您输入的是3个介于0和359.99之间的数字...这些数字表示围绕x,y和z轴的旋转(以度为单位)。 0 0 0 30 0 40 95 320 12 输出量 您可以在单独的窗口中显示它或保存图像。您可以使用任何类型的显示(基于矢量,光栅化等)。 编辑:也允许ASCII,以仅显示文本输出来允许高尔夫语言。 光栅化或ASCII图形的输出必须至少为50 * 50(光栅化像素,ASCII字符) 附加信息 正Z轴从窗口指向,x轴为水平,y轴为垂直。基本上是OpenGL标准。 如果沿特定轴的负方向查看多维数据集,则逆时针旋转,例如向下看y轴。 相机应位于z轴上,在负z方向上与多维数据集相距一段合理的距离,该多维数据集应位于(0; 0; 0)。的。立方体还需要完全可见,并至少占据绘图框的50%。相机应在z轴正方向看立方体。 立方体的旋转按x-> y-> z顺序应用。 立方体绕其中心旋转,不移动。 要在2d空间中投影多维数据集,您需要将多维数据集的x和y坐标除以与点和相机之间与z轴平行的距离。 规则 允许使用渲染库,但需要在代码中定义顶点。没有3D立方体模型类。 测试用例

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.