Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

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立方体模型类。 测试用例

7
创建自己的健身运动并遵循irl
让我们一起做运动吧?只需跟随火柴人的动作。你问什么火柴人?我们将要创建的那个! 制作一个程序,只允许输入一个包含整数的字符串,并输出以下九个数字,它们之间的间隔为: @ \@/ |@_ _@| @/ \@ |@| \@\ /@/ /|\ | | | | | | | | / \ / \ / \ / \ /|\ /|\ / \ / \ / \ 1 2 3 4 5 6 7 8 9 这将产生一个动画,然后我们可以跟随irl。 这是输入为“ 123245762” 时创建的输出的示例: 一些规则: …

11
他要完成N个工作单元最少需要多少天?
一个人必须完成N工作单元;工作的性质是相同的。 为了控制工作,第一天他只完成一个工作单元。 他希望庆祝工作的完成,因此他决定在最后一天完成一个工作单元。 他只被允许完成x,x+1或x-1在一天的工作单位,在那里x是工作完成前一天的单位。 您的任务是创建一个程序或函数,以计算完成工作单元所需的最少天数N。 样本输入和输出: input -> output (corresponding work_per_day table) -1 -> 0 [] 0 -> 0 [] 2 -> 2 [1,1] 3 -> 3 [1,1,1] 5 -> 4 [1,1,2,1] or [1,2,1,1] 9 -> 5 [1,2,3,2,1] 13 -> 7 [1,2,2,2,3,2,1] 输入可以通过STDIN或作为函数参数,或以任何适当的方式进行。 输出可以被打印或作为功能的结果,或以任何适当的方式打印。 这是代码高尔夫球。最短的解决方案获胜。

3
420 <s> Blaze </ s> Golf It
这是一个非常简单的挑战,但是(我希望)是一个有趣的挑战。 任务 如果现在现在是月4,日是20,小时(在12小时制上)是4,分钟是20,或者分钟是4,第二秒是20,则打印此ascii艺术: . .:. :|: .:|:. ::|:: :. ::|:: .: :|:. .::|::. .:|: ::|:. :::|::: .:|:; `::|:. :::|::: .:|::' ::|::. :::|::: .::|:; `::|::. :::|::: .::|::' :::|::. :::|::: .::|::; `:::|::. :::|::: .::|::;' `::. `:::|::. :::|::: .::|::;' .:;' `:::.. `;::|::. :::|::: .::|::: ::::; `:::::. ':|::. :::|::: .::|:' ,::::;' `:::::. ':|:::::|:::::|:' :::::;' …

5
排序单词以适合给定的字符串
给定一个字母字符串和一组单词,输出单词的顺序,以便可以通过删除不需要的字母在字符串中找到它们。在单词集中单词可能出现多次。输入字符串和所有单词将分别包含1到1000个小写字母。要放置的字母可能出现在单词内部或单词之间。 您的程序或函数可以接受字母字符串和单词作为列表,字符串或来自STDIN,并且必须以正确的顺序输出所有单词作为列表或字符串输出。如果有多个正确的解决方案,请仅输出其中之一。如果没有正确的解决方案,请输出一个空列表或一个空字符串。 例子: dogcatfrog cat frog dog -&gt; dog cat frog xxcatfixsxhingonxgrapexxxfishingcxat cat grape catfish fishing -&gt; catfish grape fishing cat dababbabadbaccbcbaaacdacdbdd aa bb cc dd ba ba ba ab ac da db dc -&gt; da ab ba ba ba cc bb aa ac dc db dd flea antelope -&gt; …
10 code-golf  string 

2
分区列表!
在此挑战中,您需要对列表进行分区,其中分区具有最大大小,最小大小和首选大小。我将使用该符号(min,pref,max) 来表示此挑战中的大小。 对于不熟悉分区的人,以下列表已分为三部分: [0..9] -&gt; [[0,1,2],[3,4,5],[6,7,8]] 当列表不能被均等分割时,您需要使分区尽可能地接近首选大小:[0..10], (2,4,5) -&gt; [[0,1,2,3],[4,5,6],[7,8,9]]。[[0,1,2,3],[4,5,6,7],[8,9]]即使该分区具有更多的首选长度,该分区也比首选。正式地,我们需要最小化(partitionLength-preferredSize)^2每个分区的总和。 分区长度的顺序无关紧要:对于[0..5], (2,3,3),[[0,1,2],[3,4]]或者[[0,1],[2,3,4]]有效。如果没有分区,则返回一个空数组:[0..7], (4,4,5) -&gt; []。 您可以假定1&lt;=min&lt;=pref&lt;=max,并且传递给您的数组是一个非空的整数数组。数组将始终是第一个参数。您可以以任何顺序,以元组或单独的参数接受min,max和pref。 您的程序必须在几秒钟内运行。基本上,不允许在边界内遍历所有可能的分区大小。 测试用例: [1], (1,3,4) -&gt; [[1]] [100], (1,2,3) -&gt; [[100]] [1,2], (1,1,2) -&gt; [[1],[2]] [1,2], (1,2,2) -&gt; [[1,2]] [1,2], (1,3,3) -&gt; [[1,2]] [1,2,3], (1,2,3) -&gt; [[1,2],[3]] or [[1,2,3]] [1,2,3,4], (1,3,4) -&gt; [[1,2,3,4]] [1,2,3,4,5], (3,3,4) …

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.