Questions tagged «geometry»

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

3
繁星点点的代码挑战
美利坚合众国的国旗在其州内包含50个星星,代表50个州。 过去,当州数减少时,当然会有更少的星星,而且它们的排列方式也有所不同。例如,从1912-1959年(在新墨西哥州和亚利桑那州进入之后,但在阿拉斯加之前),有48个6×8矩形排列的恒星。 1867-1877年(内布拉斯加州入场后,科罗拉多州之前)使用的37星旗帜具有不对称的星型。 万一将来增加第51个州,陆军纹章学院已经为新国旗开发了初步设计。 但是,没有用于排列星星的通用算法,所以让我们做一个吧! 挑战 编写一个程序,将给定数量的星星放置在美国国旗的州(蓝色部分)中,输出放置这些星星的最佳坐标。 坐标系由0≤x≤W和0≤y≤H 的州(而不是整个标记)定义。 出于这一挑战的目的,“最佳”布置被定义为使州中一个点与最近的恒星中心之间的平均(欧几里得)距离最小化的布置。 一个简单的(如果可能不是最优的)算法来近似该值是: def mean_distance_to_nearest_star(stars, width, height, point_density=100): """ Approximate the mean distance between a point in the rectangle 0 < x < width and 0 < y < height, and the nearest point in stars. stars -- list of (x, y) …

25
画一个规则的多边形
该代码高尔夫球的目标是在边数和半径(从中心到顶点的距离)下绘制一个规则的多边形(边长相等)。 边数和半径可以通过文件STDIN或仅是一个普通的旧变量输入。使用您语言中较短的内容。 如果实际绘制的是图像而不是ASCII图,则占字符/字节总数的-25%。

4
确定多边形是否凸出
编写程序以确定输入多边形是否为凸面。用包含N个(顶点数)的一条线指定多边形,然后使用包含每个顶点的x和y坐标的N条线指定多边形。顶点将从任意顶点开始顺时针列出。 例子1 输入 4 0 0 0 1 1 1 1 0 输出 convex 例子2 输入 4 0 0 2 1 1 0 2 -1 输出 concave 例子3 输入 8 0 0 0 1 0 2 1 2 2 2 2 1 2 0 1 0 输出 convex x和y是整数N <1000,| …

7
解释> <>(鱼)
虽然&gt; &lt;&gt;不是流行的语言,但它可能对打高尔夫球很有用,并且已在本网站上使用。它受到Befunge的启发,在指令上有一些相似之处。 所需命令: &gt; &lt; ^ v 更改指令指针的方向(右,左,上,下) / \ | _ # 。指针将根据其已有的方向改变方向。 x 随机方向。 + - * , % 加法,减法,乘法,除法和模。将A和B弹出堆栈,然后将B运算符A推入。除以0会引发错误。 0-9 a-f 将相应的值压入堆栈。a = 10,...,f = 15 = 从堆栈中弹出A和B,如果B = A,则按1,否则按0。 ) 比...更棒。将A和B弹出堆栈,如果B &lt;A ( 小于,则按1 。将A和B弹出堆栈,如果B&gt; A ' " 启用字符串解析,则按1 。字符串解析将找到的每个字符推入堆栈,直到找到结束引号为止。 ! 跳过以下说明。 ? 如果堆栈顶部为零或堆栈为空,则跳过以下指令。(注意:这不会从堆栈中弹出任何东西!) : 复制堆栈中的最高值。 …

14
这是一个截断的三角形数字吗?
相关OEIS序列:A008867 截断三角数 三角数的一个共同属性是它们可以排列成三角形。例如,取21并排列成os 的三角形: Ø OO oo oo oo oo 让我们定义一个“截断:”从每个角切割相同大小的三角形。截断21的一种方法如下: 。 。。 oo oo 。oo。 。。哦。。 (的三角形.是从原始三角形切出的)。 o剩下12 秒,因此12是一个截断的三角形数字。 任务 您的工作是编写一个程序或函数(或等效函数),该程序或函数采用整数并返回(或使用任何标准输出方法)数字是否为截断的三角形数字。 规则 没有标准漏洞。 输入是非负整数。 切口的边长不能超过原始三角形的一半(即,切口不能重叠) 切口的边长可以为零。 测试用例 真相: 0 1 3 6 7 10 12 15 18 19 虚假: 2 4 5 8 9 11 13 14 16 17 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

4
矩形差
在此挑战中,您将获得两个重叠的矩形,并且需要计算通过从另一个中删除一个而创建的矩形。 例如,如果您从黑色矩形中删除红色矩形: 您最终得到以下两个矩形集之一: 您还需要处理以下内容: 更明确地说: 您将输入两个矩形A和B的坐标。 您需要输出覆盖A的所有区域而没有B的最少的非重叠矩形。允许任何可能的覆盖 直角坐标作为4个整数传递。您可以将它们传递为两对(代表两个角点),也可以作为4个整数的元组/列表传递。您的输入和输出必须保持一致。 A和B不一定会重叠或接触,并且各自的面积至少为1 测试用例: [(0 0) (5 5)] [(3 4) (8 7)] -&gt; [(0 0) (5 4)] [(0 4) (3 5)] # or [(0 0) (3 5)] [(3 0) (5 4)] [(2 4) (10 11)] [(5 5) (6 6)] -&gt; [(2 4) (10 5)] …

4
分类四边形| 帮助我进行数学考试!
救命!我的数学考试即将上线,我没有学习!1考试的一部分是根据给定的顶点坐标对四边形进行分类,但不幸的是,我不知道该怎么做。2 因此,您面临的挑战是编写一个程序来为我执行此操作,这样我就不会失败! 挑战 给定四个顶点(其中三个顶点都不共线),确定由这四个顶点形成的四边形的最具体分类。 我所说的“最具体的分类”是即使所有正方形都是矩形,但如果形状是正方形,则应指出它是正方形而不是长方形。 输入值 输入将以四个(x,y)坐标给出。您可以将它们作为长度为4的列表/长度为2的元组的列表。或者,也可以将输入作为x坐标的列表和各个y坐标的列表。 例如,如果我的形状具有点顶点(0, 0),(5, 0),(6, 1),和(1, 1),你可以选择采取输入任一下列格式或类似的东西: [(0, 0), (5, 0), (6, 1), (1, 1)] ([0, 5, 6, 1], [0, 0, 1, 1]) 您可以假设四边形不是自相交的,并且点以正确的顺序给出(即,输入中的两个连续点将由四边形中的线段连接)。 输出量 以下四边形的每一个类别都需要一个唯一的输出: 广场 长方形 菱形 平行四边形 梯形/梯形 风筝 四边形 这可能是确切的名称本身,一个字符,一个整数等。 规则 适用标准漏洞 如果您的编程语言具有将执行此确切任务的内置程序,则不允许该内置程序。 允许使用内置函数查找两点之间的距离。 允许使用内置函数查找两条线之间的角度。 此时,如果您知道所有术语,就可以开始编程了!(测试用例在最后) 术语 本节适用于需要澄清不同形状定义的任何人。 广场 当且仅当四边形的所有边长相等且每对相邻边垂直(即,既是矩形又是菱形)时,四边形才是正方形。 长方形 …

7
六角形三角形!
您的任务:制作一个边长为的六边形三角形n,其中n正整数或0。 首先,让我定义一个六边形: / \ | | \ / (惊人的ASCII艺术,对吗?) 六边形可以通过共享边链接在一起: / \ / \ | | | \ / \ / / \ | | / \ / | | \ / 六角形三角形如下: / \ | | / \ / \ | | | \ / \ / 该六边形三角形的边长为2--制作一侧需要六边形。边长为1的六边形三角形仅是一个六边形,边长为0的六边形为空。 更正式地说,六边形三角形是由六边形连接在一起的三角形。顶部六角形在底部两个侧面链接到其下方的两个。左下角的三角形链接到其右侧和右上角的三角形,右下角的三角形链接到其左侧和左上角的三角形。边角之间有六边形,它们的相对侧相连,数量为n-2。三角形未填充。 …

14
我的三角形需要更多节点
考虑标准等边三角形,其节点使用重心坐标标记: 我们可以通过添加3个顶点的新线(比原来的3节点三角形的一侧多一个),将3节点三角形变成6节点三角形,删除任何内部边缘(但不包括内部节点),然后重新标准化坐标: 重复此过程,从6个节点的三角形变为10个节点的三角形,添加一行4个顶点(同样,比原始6个节点三角形的一侧多一个),删除所有内部边缘(但不包括内部节点) )并重新标准化坐标: 此过程可以无限期重复。挑战的目标是给一个整数,N代表执行此过程的次数,并在重心坐标中输出关联三角形的所有节点。 输入值 您的程序/函数应采用一个非负整数作为输入,该整数N代表已应用此过程的次数。请注意,对于N=0,您应该输出具有3个节点的原始三角形。 输入可以来自任何来源(功能参数,标准输入输出等)。 输出量 您的程序/函数应以归一化的重心坐标输出所有节点。节点的顺序无关紧要。可以将数字指定为分数(不需要减少分数)或浮点数。您也可以输出“缩放”向量来指定节点。例如,以下所有3个输出都是等效的并被允许: 0.5,0.5,0 1/2,2/4,0 [1,1,0]/2 如果使用浮点输出,则您的输出应精确到1%以内。输出可以是所需的任何接收器(stdio,返回值,返回参数等)。请注意,即使重心坐标唯一地由每个节点2个数字确定,您也应该输出每个节点所有3个数字。 例子 示例案例的格式为: N x0,y0,z0 x1,y1,z1 x2,y2,z2 ... 其中第一行是input N,所有随后的行形成一个节点x,y,z,该节点应在输出中恰好一次。所有数字均以近似浮点数形式给出。 0 1,0,0 0,1,0 0,0,1 1 1,0,0 0,1,0 0,0,1 0.5,0,0.5 0.5,0.5,0 0,0.5,0.5 2 1,0,0 0,1,0 0,0,1 0.667,0,0.333 0.667,0.333,0 0.333,0,0.667 0.333,0.333,0.333 0.333,0.667,0 0,0.333,0.667 0,0.667,0.333 3 1,0,0 0.75,0,0.25 0.75,0.25,0 0.5,0,0.5 …

30
画一个ASCII矩形
给定两个整数作为数组中的输入,使用第一个整数作为宽度,第二个作为高度,绘制一个矩形。 或者,如果您的语言支持,则可以将两个整数作为单独的输入给出。 假设宽度和高度永远不会小于3,并且始终会给出。 输出示例: [3,3] |-| | | |-| [5,8] |---| | | | | | | | | | | | | |---| [10,3] |--------| | | |--------| 这是代码高尔夫球,因此以字节数最少的答案为准。

3
将方钉放入方孔
我对《纽约时报》的这张图片的设计很感兴趣,其中每个美国州都由一个正方形的网格表示。我想知道他们是手动放置正方形还是实际上找到了一个最优的正方形放置(在某种定义下)来表示连续状态的位置。 您的代码将只承受一小部分挑战,即以最佳方式放置正方形来表示状态(或其他任意二维形状)。具体地说,它假设我们已经具有所有形状的地理中心或质心一种方便的格式,并且在这样的图中,数据的最佳表示形式是从形状的质心到代表它们的正方形中心的总距离最小,每个中最多一个正方形可能的位置。 您的代码将以任何方便的格式获取从0.0到100.0(含)之间的唯一的浮点X和Y坐标对列表,并将以最佳位置表示数据的网格中输出单位平方的非负整数坐标。 ,保持秩序。如果正方形的多个排列是最佳的,则可以输出任何最佳排列。将给出1至100对坐标。 这是代码高尔夫球,最短的代码获胜。 例子: 输入: [(0.0, 0.0), (1.0, 1.0), (0.0, 1.0), (1.0, 0.0)] 这是个简单的。在我们的网格中,正方形的中心位于0.0、1.0、2.0等处,因此这些形状已经完美地放置在此模式的正方形的中心处: 21 03 因此,您的输出应恰好是这些坐标,但以您选择的格式为整数: [(0, 0), (1, 1), (0, 1), (1, 0)] 输入: [(2.0, 2.1), (2.0, 2.2), (2.1, 2.0), (2.0, 1.9), (1.9, 2.0)] 在这种情况下,所有形状都在(2,2)处接近正方形的中心,但是我们需要将它们推开,因为两个正方形不能位于同一位置。最小化从形状的质心到代表该形状的正方形的中心的距离,可以得到以下图案: 1 402 3 因此,您的输出应为[(2, 2), (2, 3), (3, 2), (2, 1), …

2
曼哈顿最坏情况排除
想象一下W到H的正方形正方形网格,它们以环形环绕。将项目如下放置到网格上。 第一项可以放置在任何正方形上,但是后续项一定不能在任何先前项的曼哈顿距离 R内(也称为范围R的冯·诺伊曼邻域)。仔细选择位置可以在没有更多有效位置之前将大量项目装配到网格上。但是,请考虑相反的目标:可以放置的且没有其他有效位置的最少物品数是多少? 这是半径5的禁区: 这是另一个半径5排除区域,这次是在边缘附近,因此包裹行为很明显: 输入值 三个整数: W:网格宽度(正整数) H:网格高度(正整数) R:禁区半径(非负整数) 输出量 整数N,它是可以放置的最小项数,可以防止任何其他有效的放置。 细节 半径为零时,排除区域为1平方(放置该项目的区域)。 半径N排除了在N个正交步长中可以到达的区域(请记住边缘以环形方式缠绕)。 您的代码必须适用于琐碎的R = 0情况,但不需要适用于W = 0或H = 0。 您的代码还必须处理R &gt; W或R &gt; H的情况。 时限和测试用例 您的代码必须能够处理所有测试用例,并且每个测试用例必须在5分钟内完成。这应该很容易(示例JavaScript解决方案每个测试用例需要花费几秒钟的时间)。期限主要是为了排除极端暴力手段。示例方法仍然是蛮力的。 如果您的代码在一台计算机上在5分钟内完成,但在另一台计算机上没有完成,这将足够接近。 输入形式的测试用例:输出为W H R : N 5 4 4 : 1 5 4 3 : 2 5 4 2 : 2 …

3
删除通畅的矩形
该图像是通过将7个不同颜色的矩形彼此叠加而制成的: 黑色和栗色矩形不受阻碍,也就是说,上方没有其他矩形。 编写一个程序,以获取诸如此类的图像并删除任何单个无障碍的矩形,然后输出结果图像。 例 如果您在上面的图像上运行程序,并在输出上重新运行它,则程序可能会像这样进行。 运行1-黑色被移除(可能是栗色的): 运行2-栗色已移除(唯一选择): 运行3-删除黄色(唯一选择): 运行4-已删除蓝色(本来可以是绿色): 运行5-移除绿色(唯一选择): 运行6-移除棕色(唯一选择): 运行7-移除红色(唯一选择): 任何其他运行都应产生相同的白色图像。 希望Stack Exchange不会无损地压缩任何这些图像。 图像将始终具有白色背景,并且每个矩形都是唯一的RGB颜色,而不是白色。 您可以假定图像始终可以解释为一组重叠的矩形。具体来说,您可以假定,对于特定颜色,该颜色最接近图像顶部的像素是该颜色矩形的上边缘的一部分。底部,左侧和右侧边缘也是如此。 因此,例如,在此图像中,红色矩形的顶部边缘将恰好在黄色矩形的底部边缘下方,因为橙色矩形覆盖了旧的红色顶部边缘: 在此图像中,可以先删除红色矩形(以及黑色/栗色/橙色/灰色): 当下部矩形的顺序不明确时,可以给它们任何顺序。 例如,此处的左侧图像可能变为中间或右侧: 输出不应有矛盾的重叠(因此应该可以使用画家的算法来实现)。因此,在此图像中(感谢user23013),它必须在橙色矩形下为绿色: 额外细节 图像和矩形可以具有任何尺寸。 矩形可能会触及图像边框。 最多可能有256 3-1 个矩形。 如果输入是全白的,则输出也应该是白色。 您可以使用图像库。 输入应该是图像文件名或原始图像数据。它可以来自stdin或命令行。 可以将输出写入相同或另一个图像文件,将原始图像输出到stdout,或简单地显示。 允许使用任何常见的无损Truecolor图像文件格式。 字节最少的提交将获胜。

4
查找一组2D点的凸包
当您将一组钉子钉在木板上并用橡皮筋包住时,您会得到一个凸包。 您的任务(如果您决定接受)是找到给定2D点集的凸包。 一些规则: 作为函数编写,该点的列表坐标(任意格式)是参数 输出必须是顺时针或逆时针列出的凸包中的点列表,从任何一个开始 输出列表可以采用任何合理的格式,其中每个点的坐标都可以清楚地区分。(例如,不是一个模糊列表{0.1、1.3、4,...}) 如果凸包的一段中的三个或更多点对齐,则输出中仅应保留两个极端 样本数据: 样品0 输入: {{1, 1}, {2, 2}, {3, 3}, {1, 3}} 输出: {{3, 3}, {1, 3}, {1, 1}} (这些数字只是说明性的) 样品1 输入: {{4.4, 14}, {6.7, 15.25}, {6.9, 12.8}, {2.1, 11.1}, {9.5, 14.9}, {13.2, 11.9}, {10.3, 12.3}, {6.8, 9.5}, {3.3, 7.7}, {0.6, 5.1}, {5.3, 2.4}, …

27
计算正多边形的面积
给定一个整数,n其中3 &lt;= n &lt; 2^32,计算正n态为1的正多边形的面积;的公式是n * tan(π / n)。对于那些不知道Apothem是什么的人: 正多边形的质点是从中心到边之一的中点的线段。 输出n-gon 的区域作为浮点,且不少于8个小数位。 测试用例 3 5.1961524227 6 3.4641016151 10 3.2491969623 20 3.1676888065 99 3.1426476062 1697 3.1415962425 15000 3.1415926995 注意:上面的测试用例包含的数字比您输出的数字多2个。

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.