Questions tagged «geometry»

该挑战旨在通过使用,操纵或创建形状或其他几何结构来解决。

12
这个多边形的面积是多少?
计算多边形的面积。 受此鞋带算法视频启发。 任务 您的工作是创建一个程序或函数来计算多边形的面积。程序或函数是根据meta中的默认定义定义的。 输入项 您将收到多边形每个顶点的X和Y坐标。您可以将输入作为元组列表([[x1, y1], [x2, y2], etc]),矩阵或平面列表([x1, y1, x2, y2, etc])。也允许分别包含x和y坐标的两个列表。顶点按逆时针编号,并且第一个顶点与提供的最后一个顶点相同,因此关闭了多边形。 如果需要,您可以输入没有最后一个顶点的输入(因此只接收一次每个坐标)。 您可以假定多边形的边缘不相交。您还可以假定所有顶点都具有整数坐标。 输出量 多边形的面积。允许所有标准输出方法。如果您的语言不允许进行浮点除法,并且解决方案不是整数,则可以返回分数。分数不必一定要简化,因此2/4将允许返回。 获奖标准 最短的代码胜出! 测试用例 [[4,4],[0,1],[-2,5],[-6,0],[-1,-4],[5,-2],[4,4]] 55 [[1,1],[0,1],[1,0],[1,1]] 0.5 1/2

2
折叠一些毛巾!
我在某处听说过技术尚无法做到的一件事就是折叠毛巾1。因此,现在要证明该声明为假! 给定一个作为输入的字符串,该字符串由矩形(毛巾)组成,如下所示,将每条毛巾对折两次。例如: +------+ +------+ +--+ | | | | | | | | | | | | | | -> +------+ -> +--+ | | | | | | +------+ 请注意,折叠一条毛巾后,首先将其折叠,然后再从左至右折叠。您的程序也必须模仿这种行为。另请注意,在测试用例中,毛巾停留在同一位置,但折叠了。 规则: 输入/输出的标准方法。 有标准漏洞。 输入和输出应为字符串。 只要毛巾相对彼此在正确的位置,就可以随便拖曳任何东西。 您可以假设毛巾两边的长度始终可以被2整除。 作为输入传递的毛巾将始终为矩形。 毛巾将始终分开-但是,它们可能会以可变的量分开。 代码高尔夫,所以最短的代码获胜! 测试用例: Input: +------+ | | | | | | | …

22
建立字母金字塔
今天,我们要用字母建造一座金字塔!这是前5个字母的示例字母金字塔: 在前5个字母之间写下一个空格,先升后降。 A B C D E D C B A 对上面一行的前四个字母执行相同的操作,但是要有两个额外的前导空格: A B C D C B A A B C D E D C B A 重复相同的步骤,直到最后一行只是'A' A A B A A B C B A A B C D C B A A B C D E …

5
是否有更多的硬物或软物
与假设分析书的开头相切。 输入是一个由空格组成的矩形,如字符串,字符串列表等,其对象由#内部组成: ######## # # ######## ### #### ### #### ### 对象将始终是非相交,非接触的矩形。软对象的定义是#中间没有用填充的对象,而只是边界,而硬对象则是填充的对象。具有宽度或高度的对象<=2被认为是坚硬的。所有对象都是硬的或软的。 如果输入,输出中有更多的硬对象"Hard",如果较软,则输出"Soft",如果相等则输出"Equal"。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 这些情况不是全部输入,而是每个对象应表征的内容。实际输入将类似于问题顶部的ascii艺术。 硬 # #### ## ## ########## ########## ########## 柔软的 ### # # ### ################### # # # # # # ################### #### # # # # # # # # # # # # …
19 code-golf  ascii-art  counting  code-golf  number  grid  decision-problem  chess  code-golf  grid  graph-theory  chess  code-golf  math  geometry  code-golf  arithmetic  roman-numerals  fastest-code  code-golf  math  geometry  code-golf  string  cryptography  code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

3
圆上的文字
编写一个程序或函数,在具有最小可能半径的离散圆周围打印输入字符串。例如,对于input This is an example,您的程序应输出: a si n s i e h x T a m p le 圈子产生 您应使用中点圆算法计算离散圆的每个点的坐标。您可以在Wikipedia页面上找到有关如何实现此算法的示例。 这是算法的伪代码(基于Wikipedia的C示例): integer x = radius integer y = 0 int decisionCriterion = 1 - x while y <= x point at coordinates (x,y) belongs to the circle // Octant 1 …

11
最大化平方差
考虑从1到的整数值的置换N。例如此示例N = 4: [1, 3, 4, 2] 我们将认为此列表是循环的,因此1和2被视为相邻列表。我们可以为这样的列表计算的一个量是相邻值的总平方差: (1-3)² + (3-4)² + (4-2)² + (2-1)² = 10 给定正整数,您的任务是找到一个最大化此数量的排列N。在N = 4上面的例子中不是最佳的(实际上,这是最小的)。18通过以下排列(以及其他几个排列),我们可以实现的总平方差: [1, 4, 2, 3] 您的算法必须在(的N)多项式时间内运行。特别是,您不能简单地计算所有排列的总平方差。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输出可以采用任何方便,明确,平坦的列表或字符串格式。您可以选择从与返回值的列表0,以N-1代替1向N。 适用标准代码高尔夫球规则。 测试数据 这个问题有一个很好的分析解决方案。例如,所有有效的解决方案N = 10均等效于以下列表(直至循环移位和反转): [7, 5, 6, 4, 8, 2, 10, 1, 9, 3] 我不想透露过多的信息(尽管足以找出模式),因此无需给出更多示例,您可以检查您的结果是否具有给定的总平方差N: N Total squared difference 1 0 2 …
19 code-golf  array-manipulation  permutations  restricted-complexity  code-golf  geometry  grid  code-golf  string  sorting  code-golf  simulation  code-golf  string  code-golf  arithmetic  code-golf  sorting  code-golf  string  code-golf  sorting  code-golf  interpreter  code-golf  number  kolmogorov-complexity  natural-language  conversion  code-golf  random  internet  code-golf  board-game  code-golf  number  sequence  code-golf  math  number  code-challenge  image-processing  classification  test-battery  code-golf  ascii-art  code-golf  tips  code-golf  arithmetic  code-golf  tips  code-golf  tips  javascript  code-golf  array-manipulation  code-golf  ascii-art  code-golf  string  binary  code-golf  arithmetic  linear-algebra  matrix  code-golf  sequence  code-golf  math  number  arithmetic  code-golf  primes  code-golf  math  code-golf  array-manipulation  counting  code-golf  arithmetic  code-golf  quine  code-generation  polyglot  code-golf  math  kolmogorov-complexity  trigonometry  code-golf  string  encryption 

15
超立方体元素
编写一个函数或程序,输出一个N维超立方体的每种类型的元素(顶点,边,面等)的数量。 例如,三维立方体具有1个像元(即1个3维立方体),6个面(即6个2维立方体),12个边(即12个2维立方体)和8个顶点(即8个0维)立方体)。 有关Hypercube元素的更多详细信息,请参见此处 您还可以查看以下OEIS序列。 输入项 您的代码将采用大于或等于0的整数作为输入(通过STDIN或函数参数或类似的东西),它是超多维数据集的维。 从理论上讲,您的代码必须对大于等于0的任何输入都起作用,而不考虑内存和时间问题(即,如果输入很大,速度和潜在的堆栈溢出对于您的答案来说就不是问题)。作为测试用例提供的输入将不超过12。 输出量 您将输出从“最高维度”元素开始的超立方体的所有元素的列表。例如,对于一个立方体(输入= 3),您将输出列表[1,6,12,8](1个像元,6个面,12个边,8个顶点)。 输出中列表的格式相对自由,只要看起来像列表即可。 您可以将结果输出到STDOUT或从函数返回。 测试用例 Input = 0 Output = [1] Input = 1 Output = [1,2] Input = 3 Output = [1,6,12,8] Input = 10 Output = [1, 20, 180, 960, 3360, 8064, 13440, 15360, 11520, 5120, 1024] Input = 12 …

2
在给定点列表的情况下确定正方形的旋转
在这项挑战中,您将获得要点列表。 这些点位于假想正方形的周长上。您的目标是: 如果可能,请打印出正方形的旋转度,该旋转度将是[0,90)中的值,其中0表示垂直和水平线的正方形。旋转应以逆时针计数。 如果正方形的旋转模棱两可(例如仅获得2分),则打印出“未知” 如果无法根据给定的点创建正方形,请打印“不可能” 您所获得的分数将保证是唯一的,并且没有特定的顺序。您可以使用任何希望输入列表的格式,但是对于我的示例,我的观点将采用格式x,y,并以空格分隔。这些数字是浮点数字,您可以假定它们在您的语言可以处理的范围内。您的输出应至少精确到小数点后三位,并假定您的语言以完美的精度处理浮点数。 这是一些测试用例(为了方便查看,我使用了大多数数字,但是您的程序应该处理浮点数): 未知: 0,0 0,0 1,0 0,0 1,0 0,1 0,0 1,0 0,1 1,1 0,1 0,2 1,0 1,3 2,0 2,3 3,1 3,2 不可能: 0,0 1,0 2,0 3,1 4,2 0,0 1,0 2,0 1,1 0,1 0,2 1,0 1,3 2,0 2,3 3,1 3,2 2,2 2,0 0,1 2,2 0,3 0,0 …

15
每日随机高尔夫#4:贝特朗悖论
关于系列 首先,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心系列赛。但是,在所有挑战中都有排行榜。您可以在第一篇文章中找到排行榜以及有关该系列的更多信息。 尽管我在本系列中有很多想法,但未来的挑战还没有定下来。如果您有任何建议,请在相关的沙箱帖子上让我知道。 第4洞:贝特朗悖论 该贝特朗悖论是一个有趣的问题,它显示了在一个圆圈采摘随机和弦可以产生和弦,它们的中点和它们的长度的不同分布如何不同的方法。 在这一挑战中,您应该使用“右”方法生成单位圆的随机和弦,即产生在分布和平移下不变的和弦分布的方法。在链接的Wikipedia文章中,“方法2”就是这样的方法。 确切的规则如下: 您应该使用一个正整数N,该整数指定应返回多少个和弦。输出应该是一个N和弦列表,每个和弦都指定为单位圆上的两个点,以其弧度的极角表示。 您的代码应该能够为两个角度中的每个角度至少返回2 20个不同的值。如果可用的RNG范围较小,则必须首先在内置的RNG之上构建具有足够大范围的RNG,或者必须实现自己合适的RNG。此页面可能对此有所帮助。 和弦的分布必须与链接的Wikipedia文章中“方法2”产生的和弦没有区别。如果您采用其他算法来选择和弦,请提供正确性证明。无论您选择实施哪种算法,从理论上讲,它都必须能够在单位圆中生成任何有效的和弦(不包括基础PRNG或有限精度数据类型的限制)。 您的实现应使用并返回浮点数(至少32位宽)或定点数(至少24位宽),并且所有算术运算都应在16 ulp以内准确。 您可以编写完整的程序或函数,并通过STDIN(或最接近的替代方案),命令行自变量或函数自变量接受输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数产生输出。 输出可以采用任何方便的列表或字符串格式,只要可以清楚地区分各个数字并且它们的总数始终为偶数即可。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。当然,每位用户最短的提交时间也将进入该系列的整体排行榜。 可视化 您可以使用以下代码段渲染生成的线并检查其分布。只需将成对的角度列表粘贴到文本区域即可。该代码段应该能够处理几乎所有列表格式,只要这些数字是简单的十进制数字(无科学计数法)即可。我建议您至少使用1000行来了解分布情况。我还提供了以下文章中介绍的不同方法的一些示例数据。 显示代码段 function draw() { document.getElementById("output").innerHTML = svg } function drawLines() { lines = document.getElementById("lines").value; var e = prefix; //e += '<circle cx="' + offset + '" + cy="' + offset + '" …

11
在编号的多维数据集上输出面
您可以根据需要将数字0到7分配给多维数据集的8个顶点。必须为每个顶点分配一个确切的数字。 例如,您的顶点可能像这样分配: 3-----1 /| /| 4-----2 | | | | | | 5---|-0 |/ |/ 6-----7 编写一个使用0到5之间的整数的程序。这6个数字中的每个数字都以您喜欢的任何方式与立方体的一个面相关联。输入这些数字之一时,必须将相关面的4个顶点数字以2×2平方的数字打印到标准输出。该面应从立方体外部直接观看。所有4个面旋转都是有效的。 例如,如果0与上面的示例多维数据集的正面相关联,则这将是input的有效输出0: 42 67 可以在任何90°旋转角度下观看人脸,因此这些也是有效的: 27 46 76 24 64 72 此输出(及其旋转)无效,因为它们是从人脸的错误侧面看的: 24 76 同样的想法也适用于所有其他面孔。例如,如果1与背面相关联,则输入1可能会产生输出13[newline]05(并且31[newline]50将是无效的)。 因此,真正的挑战是选择顶点数和旋转度,以便将输入转换为其4个顶点数既简单又简短。 以字节为单位的最短代码获胜。Tiebreaker是较早的帖子。(方便的字节计数器。) 笔记 您可以编写函数而不是程序。它应该是0到5之间的整数,并打印或返回2×2位数的网格字符串。 从标准输入,命令行或函数arg中获取输入。您可以假设输入有效。 输出可以选择包含尾随换行符。 请务必告诉我们您选择的顶点和面数。

13
谢尔宾斯基层
首先,/\您可以通过在下面添加一条线来创建类似于Sierpinski三角形的图案,从而... 任何松散的分支/或\再次分裂为两个分支:/\。 分支的任何碰撞都将\/死,其下无任何东西(只有空格)。 重复这些规则将产生 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ etc... (ViHart的启发) 编写一个程序或函数,该程序或函数接受一个正整数N,并将此模式的前N行打印到stdout,且前导或尾随空格不超过所需数量。 例如,如果输入是1输出,则必须为 /\ 如果输入是2输出,则必须为 /\ /\/\ 如果输入是8输出,则必须为 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ /\ /\ /\ /\ /\/\/\/\/\/\/\/\ 等等。 字节最少的代码获胜。

2
两个三角形的交点
给定的2D平面4点A, B, C, D,计算三角形的交叉区域的面积OAB和OCD,其中O是该平面的中心,具有坐标(0, 0)。 鼓励以恒定时间复杂度(就算术运算而言)运行的算法,但不强制执行。 规则 每个点都用两个实数表示,分别表示它们的X和Y坐标。 (可选)如果您的编程语言(或某种编程语言库)具有内置Point类型或等效类型,则允许将Point对象作为输入。 输入以4点的形式给出,格式包括但不限于: 8个坐标的列表。 4点的列表,每个点都可以任何方便的格式表示。 2点的两个清单。 等等 您不能假设这些点的特定顺序(逆时针顺序或顺时针顺序) 您不能假定该点O已作为输入传递。换句话说,程序不得使用和使用无关的输入。 您不能假设所有要点都不同。换句话说,三角形可以退化。您还需要处理该案例(请参见下面的测试案例) 绝对或相对差必须小于下面的样本测试用例。10-3 获奖标准 这是代码高尔夫,以字节为单位的最短答案! 样本测试用例 Ax Ay Bx By Cx Cy Dx Dy area 5 1 1 3 -1 0 0 -1 0 5 1 1 3 -1 0 0 0 0 5 1 …

9
这条线是否穿过那个正方形?
将第一个象限(包括正x轴,正y轴和原点)划分为1x1网格,每个网格均由其左下角的坐标标记,如下所示: 请注意,每个网格都包含其边界和顶点。使用数学符号,标为(m,n)的网格将代表正方形{(x,y) | m ≤ x ≤ m+1, n ≤ y ≤ n+1}。 鉴于形式的直线ax+by+c=0与整数a,b以及c,和由下式表示的网格(m,n)线是否通过网格,即,在给定网格中的任何点是否是上线,输出。 a b c m n output 1 1 0 0 0 true 1 1 0 1 1 false 1 1 0 0 2 false 1 1 -3 0 1 true 1 1 -3 0 0 false …

9
将网格划分为三角形
目标 挑战的目标是产生一个函数,n该函数计算将n X 1网格划分为三角形的方式的数量,其中三角形的所有顶点均位于网格点上。 例 例如,有14种方法来划分2 x 1网格,因此f(2) = 14通过以下分区 ,其中分区分别具有2、2、2、2、4和2个不同的方向。 计分 这是代码高尔夫球,因此最短的代码获胜。

8
这是四边形周期性的吗?
在数学中,循环四边形是一个顶点都位于同一圆上的四边形。换句话说,每个顶点都位于其他三个顶点的外接圆上。有关更多信息,请参见MathWorld文章。 例子 这些四边形是循环的: 该梯形不是周期性的。 (图片来自维基百科) 目的 给定形成凸四边形的四个顶点的逆时针坐标,确定四边形是否为循环的。 坐标将是整数(但是,请注意,圆心坐标和外接半径不一定是整数。)如上一段所隐含,没有三个点是共线的,也没有两个重合的点。 输入输出 您可以使用任何合理的格式进行输入。特别是[[x1,x2,x3,x4],[y1,y2,y3,y4]],[[x1,y1],[x2,y2],[x3,y3],[x4,y4]]和复数无一不精。 使用true和false的任何不同一致值进行输出。 测试用例 真正: [0,0], [314,0], [314,1], [0,1] [-5,5], [5,-5], [1337,42], [42,1337] [104, -233], [109, -232], [112, -231], [123, -224] 假: [0,0], [314,0], [314,100], [0,99] [31,41],[59,26],[53,58],[0,314]

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.