Questions tagged «code-golf»

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

8
制作八角形文字
上周四,用户@SpookyGengar对他/她关于制作平方字的第一个挑战使我们感到高兴。如果我们将边数加倍怎么办? 挑战 以字符串形式使用您需要的任何合理格式的输入(string,chararray ...)并输出该输入的八角形表示形式(也可以使用任何合理的格式:string,strings的列表,charmatrix ...),如以下示例所示: Input: golf Output: golf o l l o f g l o o l g f o l l o flog Input: HelloWorld Output: HelloWorld e l l r l o o W W o o l r l l e d H l e …
14 code-golf  string 

5
计算曲线上一点的对映体
曲线是正方形网格上的一组点,这样,每个点在四个邻居的邻域中恰好有两个邻居,并且这些点形成单个连接的组件。即,由网格图上的点所引起的图对于单个周期是同构的。“感应”是指两个点在循环中不彼此相邻就无法触摸输入。 图中顶点V的对映体是距离V最远的顶点。对映体在偶数长度的循环中总是唯一的(并且网格图上的每个循环都是偶数长度的)。距离的测量应由循环本身引起,而不考虑下面的方格。 您的输入应为曲线图像。曲线将#在背景字符()之外的背景上用一系列数字符号()标记出来。曲线上的点之一将标记有P字符(“ pode”)。您的输出应与输入相同,除了一个曲线点应替换为A(“ antipode”)。 您可能会假设字符将被填充为矩形。您可以假设输入的第一行和最后一行和列将完全由空格组成(输入由背景填充)。或者,您可以假设第一行和最后一行和每一列都将包含一个曲线点(输入具有最小的填充)。 您可以作为单个换行符分隔的字符串,行的数组或单个字符的2D数组输入和输出此网格。输入和输出的选择应相同。如果您的语言允许,则可以通过在适当位置修改输入而不是返回修改后的字符串或数组来输出。 可能的输入: P# P## #P# ##### #####P# ####### #####P######### #####P######### ## # # # # # # # # # # # # # # ### ### ## ## # ### # # ### # # ### ### ### # # # ### # …

30
排序后获取数组的索引
今天的挑战是编写一个程序或函数,该程序或函数需要一个列表l并给出排序的l每个连续元素l出现的位置。 换句话说,输出最小值的索引,然后输出第二个最小值的索引,依此类推。 您可以假设输入数组仅包含正整数,并且至少包含一个元素。 测试用例: Input | Output (1-indexed) [7, 4, 5] | [2, 3, 1] [1, 2, 3] | [1, 2, 3] [2, 6, 1, 9, 1, 2, 3] | [3, 5, 1, 6, 7, 2, 4] [4] | [1] 当出现两个或多个具有相同值的元素时,它们的索引应从最小到最大依次出现。 这是代码高尔夫球,最少字节获胜!

23
计算矩阵向量
给定一个至少包含两个元素的整数数组,输出该数组的矩阵向量(定义如下)。 为了计算Matrix-Vector,首先旋转通过nsize - input数组以创建一个size的矩阵n x n,该数组的第一个元素位于主对角线之后。这形成矩阵部分。对于向量,垂直翻转输入数组。然后执行普通矩阵乘法。输出向量是结果。 例如, a = [1, 2, 3] 首先,将阵列向右旋转两次,以获得[3, 1, 2]和[2, 3, 1],然后将它们堆叠以形成3x3矩阵 [[1, 2, 3] [3, 1, 2] [2, 3, 1]] 接下来,垂直翻转数组以形成向量 [[1, 2, 3] [[1] [3, 1, 2] x [2] [2, 3, 1]] [3]] 执行通常的矩阵乘法 [[1, 2, 3] [[1] [[1+4+9] [[14] [3, 1, 2] …

20
递增和递减,同时递增一倍
输入: 非空列表/向量,其中每个元素包含一个值/字符,表示如果你能指望向上 或向下。我将使用1和-1,但是您可以选择任何喜欢的东西。您只能使用两个值,而不能分别使用1,2,3...和-1,-2,-3...来表示向上和向下。 挑战: 您将使用几何序列1、2、4、8、16、32 ...中的数字。每次开始计数向上或向下,都可以在增量计数1,然后2,然后4上等等。如果更改并开始计数的其他方式,那么你就减1,然后2,然后4等。输出将是最后得到的数字。 例子: 在下面的示例中,第一行是输入,第二行是您要递增/递减的数字,第三行是累积总和,最后一行是输出。 范例1: 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1 3 7 15 31 63 127 255 511 1023 1023 范例2: 1 1 1 1 1 1 -1 -1 -1 …

1
突变硬化的奎因
您的任务是制作一个打印出自己的源代码的程序。 “嘿,我们已经面临这个挑战,而且挑战无穷!您为什么要再挑战一个?” 您可能会问,但这将是最困难的一项(希望如此)。 您的quine必须经过“突变强化”,这意味着即使在其中的任何一个字符被复制的地方,quine也必须输出原始程序的源代码。 例如,如果您有一个quine(以下示例不是用任何语言编写的,那只是伪代码): abcd 这些程序必须全部输出abcd: aabcd abbcd abccd abcdd (在每一个这些方案,a,b,c和d各自就地复制,这意味着复制的字符在原始字符后直接放置。) 规则: 适用标准标准规则。 多字节字符算作一个字符,并且重复时该字符不会“拆分”为相应的字节。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

6
用倍数覆盖一组
让我们一组整数大于1,并称之为X。我们将S(i)定义为X被i整除的所有成员的集合,其中i> 1。想从这些子集中选择一组集合,以便 他们的联合是集合X X的元素不在两个集合中。 例如,我们可以重新组合{3..11}为 {3,4,5,6,7,8,9,10,11} S(3): {3, 6, 9, } S(4): { 4, 8, } S(5): { 5, 10, } S(7): { 7, } S(11):{ 11} 有些集合不能用这种方式表达。例如,如果我们采用{3..12},12则是3和4的倍数,以防止我们的集合相互排斥。 某些集合可以多种方式表达,例如 {4..8}可以表示为 {4,5,6,7,8} S(4): {4, 8} S(5): { 5, } S(6): { 6, } S(7): { 7, } 但也可以表示为 {4,5,6,7,8} S(2): {4, …

6
n * k = dd0d00d其中d =…?
给定正整数n≤500: 找出最小的正整数k,以使n * k的十进制表示形式中的所有数字均为0或d,且1≤d≤9。 在不到30秒的时间内打印或返回d(有关“说明和规则”部分的详细信息,请参阅d)。 简单的例子 这是d的前30个值。 +----+-------+---------+---+ +----+-------+---------+---+ | n | k | n * k | d | | n | k | n * k | d | +----+-------+---------+---+ +----+-------+---------+---+ | 1 | 1 | 1 | 1 | | 16 | 5 | 80 | 8 …

6
您可以循环播放而不会崩溃吗?
我们很多人都熟悉Tron游戏。您可以控制放置在网格上的“ lightcycle”。灯光周期总是向前移动(尽管您可以控制方向),并在其后面留下永久的痕迹。如果碰到一条小路,就会崩溃! 此处的目标是确定给定路径是否为有效循环,也就是说,它返回到其起始点而不会“崩溃”。为此,我们假设我们从这一点开始(0,0)。输入形式为N2E1S2W1,具有一系列基本方向(Nis north,Eis east,依此类推),每个方向后跟移动该方向的距离。在此示例中,您将旅行 N2 : North 2 to (0,2) E1 : East 1 to (1,2) S2 : South 2 to (1,0) W1 : West 1 to (0,0) 如果一条路径在(0,0)不重复访问任何其他坐标的情况下结束,则该路径被认为是有效的(它(0,0)精确地访问了两次,一次在起点,一次在终点)。请记住,与上例相比,从(0,0)到(0,2),我们也必须访问(0,1)。 其他例子: input -> output N1E1S1W1 -> true N1E1N1E1S2W2 -> true N1S1E1W1 -> false // Visits (0,0) 3 times N4E2S2W4S2E2 -> …

3
计算树宽
无向图的树宽是图论中一个非常重要的概念。发明了许多图算法,如果您分解出具有小树宽的图,则该算法运行很快。 树宽通常根据树分解来定义。这是一个图以及该图的树分解,由维基百科提供: 树分解是一棵树,其中每个顶点与原始图的顶点子集相关联,具有以下属性: 原始图中的每个顶点都在至少一个子集中。 原始图中的每个边都在至少一个子集中拥有两个顶点。 分解中所有子集包含给定原始顶点的顶点都已连接。 您可以检查上述分解是否遵循这些规则。树分解的宽度是其最大子集的大小减去一。因此,以上分解为二。图的树宽是该图的任何树分解的最小宽度。 在此挑战中,将为您提供一个连接的,无向的图,并且您必须找到其树宽。 虽然很难找到树分解,但还有其他方法可以计算树宽。Wikipedia页面上有更多信息,但是此处未提及的计算树宽的一种方法(最小消除顺序宽度)是算法中常用的一种计算树宽的方法。有关此事实的论文,请参见此处。 在消除顺序中,一次消除一个图形的所有顶点。消除每个顶点后,将添加边,以将该顶点的所有邻居彼此连接。重复此操作,直到所有顶点消失。消除顺序宽度是此过程中要消除的任何顶点具有的最大邻居数。树形宽度等于消除顺序宽度的所有顺序中的最小值。这是一个使用此事实来计算树宽的示例程序: import itertools def elimination_width(graph): max_neighbors = 0 for i in sorted(set(itertools.chain.from_iterable(graph))): neighbors = set([a for (a, b) in graph if b == i] + [b for (a, b) in graph if a == i]) max_neighbors = max(len(neighbors), max_neighbors) graph = …

9
创建茎叶图
相关:验证茎叶图 输入值 一个非空的正整数列表。如果需要,可以将它们视为字符串。您不能假定它已排序。 输出量 一茎和叶情节的数字。在一个这样干和叶情节,数字排序为茎数十,那么适合的干所有的数字有他们的人值放入干,然后将所有的排序。在此挑战中,换行符将茎分开,而空格将茎和叶子分开。 您可以包括或排除非空词干之间的所有空词干。 测试用例 (列表可以采用您所用语言的默认列表,我在下面使用了JSON) 包括空茎: [1, 2, 3, 3, 3, 3, 3, 10, 15, 15, 18, 1, 100] 0 11233333 1 0558 2 3 4 5 6 7 8 9 10 0 [55, 59, 49, 43, 58, 59, 54, 44, 49, 51, 44, 40, 50, 59, …
14 code-golf  number 

14
短日期转换为英语长日期
将短日期格式转换为英文长日期(尽可能少的字节)。 输入值 输入将采用格式为的字符串形式,yyyy-mm-dd所有值都可选零填充。您可以假设这在语法上是正确的,但不一定是有效日期。负年份值不需要支持。 输出量 您必须将日期转换为英语长日期格式(例如14th February 2017)。此处不允许零填充。 如果日期无效(例如2011-02-29),则必须以某种方式进行识别。允许引发异常。 可以在下面看到更多示例。 测试用例 "1980-05-12" -> 12th May 1980 "2005-12-3" -> 3rd December 2005 "150-4-21" -> 21st April 150 "2011-2-29" -> (error/invalid) "1999-10-35" -> (error/invalid)

3
绘制ASCII长方体
给定三个> = 2的整数,在正交(柜)投影中创建一个ASCII立方体。这三个整数表示包括边角的高度,宽度和深度(以可见字符为单位)。拐角应为“ o”或“ +”,自由选择。 w:10,h:5,d:4因此,得出: o--------o / /| / / | o--------o | | | o | | / | |/ o--------o 现在,要使其稍微难一点,所有的面孔都可以是坚固的,透明的或缺失的。我们像这样订购面孔: o--------o / /| / 2 / | o--------o 3| | | o | 1 | / | |/ o--------o --- |2| ------- |5|1|3| ------- |4| --- …

10
让我们学习一些土壤pH值化学!
安德鲁是一位化学家,对溶液的酸度和农业感兴趣。经过数月的研究(Google不是他的朋友),他提出了以下表格*,其中涉及人类可读的pH值(氢势)酸度: 面额| pH范围 | ------------------------- + ------------------------ ----- 超酸性| 3.5以下 ------------------------- + ------------------------ ------ 极酸性| 在3.5和4.4之间 ------------------------- + ------------------------ ------ 极强酸性| 在4.5和5.0之间 ------------------------- + ------------------------ ------ 强酸性| 在5.1和5.5之间 ------------------------- + ------------------------ ------ 中度酸性| 在5.6和6.0之间 ------------------------- + ------------------------ ------ 微酸性| 介于6.1和6.5之间 ------------------------- + ------------------------ ------ 中立| 在6.6和7.3之间 ------------------------- + ------------------------ ------ …

23
交换字母和数字
给定仅包含字母数字ASCII字符并以字母开头的输入字符串,请将每个字母运行与后面的数字运行交换。 一个运行是连续的字母或数字序列。注意,在输入字符串以字母结尾的情况下,该行程保持不变。 演练示例 例如,给定输入字符串uV5Pt3I0: 字母和数字分开运行: uV 5 Pt 3 I 0 确定运行对: (uV 5) (Pt 3) (I 0) 交换运行对: (5 uV) (3 Pt) (0 I) 串联: 5uV3Pt0I 例子 uV5Pt3I0 -> 5uV3Pt0I J0i0m8 -> 0J0i8m abc256 -> 256abc Hennebont56Fr -> 56HennebontFr Em5sA55Ve777Rien -> 5Em55sA777VeRien nOoP -> nOoP 这是代码高尔夫球,因此最短的答案以字节为单位。鼓励解释。
14 code-golf  string 

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.