Questions tagged «geometry»

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

6
二维凸包的面积
您将得到一个整数对的数组/列表/向量,这些整数对表示2D欧几里得平面上点的笛卡尔坐标(x ,y)(X,ÿ)(x, y);所有坐标都在− 104-104−10^4和10410410^4,允许重复。找到这些点的凸包的面积,四舍五入到最接近的整数;确切的中点应四舍五入为最接近的偶数整数。您可以在中间计算中使用浮点数,但前提是可以保证最终结果始终正确。这是代码高尔夫球,因此最短的正确程序将获胜。 点集合P的凸包是包含P的最小凸集。在欧几里得平面上,对于任何单个点(x ,y ),它都是该点本身。对于两个不同的点,它是包含它们的线,对于三个非共线的点,它是它们形成的三角形,依此类推。PPPPPP(x ,y)(X,ÿ)(x,y) 关于凸包的视觉效果最好的可视化解释,最好是将所有点想象成钉子在木板上,然后在它们周围拉伸橡皮筋将所有点围起来: 一些测试用例: Input: [[50, -13]] Result: 0 Input: [[-25, -26], [34, -27]] Result: 0 Input: [[-6, -14], [-48, -45], [21, 25]] Result: 400 Input: [[4, 30], [5, 37], [-18, 49], [-9, -2]] Result: 562 Input: [[0, 16], [24, 18], [-43, 36], [39, …

20
月球两点之间的距离
给定的两个点的纬度/经度在月球(lat1, lon1)和(lat2, lon2),计算两个点之间的距离以公里,通过使用任何式给出相同的结果haversine公式。 输入值 四个整数值lat1, lon1, lat2, lon2(度)(角度)或 ϕ1, λ1, ϕ2, λ2以弧度表示的四个十进制值。 输出量 两点之间的距离(以公里为单位)(十进制任意精度或四舍五入整数)。 Haversine公式 哪里 r 是球体的半径(假设月球的半径为1737公里), ϕ1 点1的弧度(弧度) ϕ2 点2的弧度(弧度) λ1 点1的经度(弧度) λ2 点2的弧度 d 是两点之间的圆形距离 (来源:https : //en.wikipedia.org/wiki/Haversine_formula) 其他可能的公式 d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1)) @miles的公式。 d …

2
六角坐标:极地直角坐标
Wikipedia谈到极坐标: 在数学中,极坐标系是二维坐标系,其中平面上的每个点由距参考点的距离和距参考方向的角度确定。 这似乎非常适合描述六角形网格。以以下六角形网格为例: A B C D E F G H I J K L M N O P Q R S 我们的参考点将是六边形('J')的中心,我们的参考角将是六边形('A')的左上角。但是,我们将根据从该点开始围绕六边形外部的顺时针台阶数(而不是角度)来描述角度。因此,我们将其称为“步数”而不是角度。 例如,“ C”在(2,2)处,因为它的半径为2(因为距中心“ J”有两个环),并且步数为2(从“ A”向前顺时针走了2个步) ')。类似地,“ O”位于(1、3),因为它距中心一圈,并且从“ E”(在参考角上)向前顺时针走了三步。 为了完整起见,“ J”位于(0,0),因为您需要0步和顺时针0步才能到达。 现在,您还可以使用笛卡尔坐标来描述六边形,但是由于偏移,这有点奇怪。就像极坐标一样,我们将中心设为(0,0)。每个空间也占据一个坐标,因此“ K”位于(2,0),而不是(1,0)。这会将“ A”置于(-2,2),将“ O”置于(1,-1)。 挑战 给定极坐标六边形坐标,以笛卡尔坐标输出相同的坐标。您可以采用这些坐标,并以任何合理的格式输出答案。这意味着您可以根据需要颠倒输入的顺序。这也意味着您可以将坐标输出为(Y,X),但是如果这样做,请在答案中提及这一点以避免混淆。 您不必处理负半径,但可能会遇到负角,或者角度超过六边形完整一圈。例如,您可能会收到(1,10)或(1,-2)作为输入。这些都将对应于我们先前的六角形中的“ N”。你不是要处理非整数输入。 样品IO #Polar #Cartesian (0, 0) (0, 0) (1, 2) (2, …

14
救救我,我迷失在海洋中!
介绍 今天我独自乘独木舟去钓鱼,不幸的是我睡着了,溪流把我带走了,我失去了桨,现在是晚上,我迷失在大海中!我看不到海岸,所以我必须很远! 我有手机,但由于被咸水弄湿而出现故障,由于麦克风和电话扬声器坏了,所以我无法讲话或听到任何声音,但是我可以向沿海海滩上的朋友发送短信! 我的朋友有一个非常强大的手电筒,他把它举在竹bamboo上,向我展示正确的方向,但是由于我没有桨,所以我不能划船,所以我必须告诉他我有多远,这样他就可以派人去抓住我! 我的朋友告诉我,他将手电筒保持在海平面11.50米处,我可以看到地平线上的光。现在,我只从学校里记得地球半径在海平面应为6371 Km,而且我坐在独木舟中,因此您可以假设我的眼睛也在海平面上。 任务 由于潮流使我时时刻刻在移动,我的朋友不时地举起火炬(现在是12.30米),请编写完整的程序或函数,以帮助我计算与朋友的位置之间的距离! 这是一个图(不按比例): 标记M为我的橙色点,标记T为火炬的红色点。绿线是M和之间的线性距离T 输入值 从标准输入中获取h在海平面以米为单位的火炬高度,我在地平线上以浮点数的形式显示该浮点数,精度为小数点后两位(精度为1厘米或0.01米)。范围从0到100。 输出量 您应该以1 cm的精度返回绿线的欧几里得长度。例如,如果以米为单位输出,则应至少使用两个小数。输出可以是米或公里,但要注意精度。 测试用例: 所有值以米为单位。 11.5 > 12105.08 13.8 > 13260.45 规则 最短的代码获胜。

11
这些方块重叠吗?
给定两个正方形的左上角的坐标及其边长,确定正方形是否重叠。正方形包括顶部和左侧线条,但不包括底部和右侧线条。也就是说,一个点(a,b)位于边长为正方形且k位于(x,y)且仅当x <= a < x+k和时的正方形内y <= b < y+k。边长为0的正方形是简并的,此处将不考虑,因此k将为正。 与往常一样,所有标准规则均适用。输入和输出可以采用任何方便的形式,只要它是人类可读的并且没有预先计算即可。确保指定使用的输入格式。您的代码应采用六个数字,并且如果正方形重叠则输出真实,否则输出虚假。 测试用例 x1 y1 k1 x2 y2 k2 overlap? 1 1 1 0 1 1 false 0 0 3 1 1 1 true 1 1 1 0 0 3 true 0 0 3 2 1 2 true 0 0 2 1 …

8
画一个phi三角形
澄清:基本上,你需要这个 欧拉的totient函数的名称为phi。 让我们尝试计算phi(8) 首先,向后列出所有数字8,且不包括0或以下 8 7 6 5 4 3 2 1 现在找出哪些数字与8不共享因数(1不计数),并#在其位置放置a 。 8 # 6 # 4 # 2 # 删除数字。 # # # # - 现在执行此操作,但是将输出串成三角形 9 88 777 6666 55555 444444 3333333 22222222 111111111 --------- 123456789 # 排除非要素共享数 9 8# 7## 6#66 5#### 4#4#4# 3##3##3 2#2#2#2# …

3
三边位置
介绍 假设您在二维笛卡尔平面上,并且想确定您在该平面上的位置。您知道飞机上的3个点以及与每个点的距离。虽然总是可以从中计算出您的位置,但是在您的头脑中做到这一点非常困难。因此,您决定为此编写一个程序。 挑战 给定3点和您到它们的距离,输出您位置的坐标。 输入和输出可以采用任何方便的格式,包括使用复数而不是实数。请在您的答案中说明使用的格式。 您将始终获得3个与您之间的距离完全不同的点。 坐标和距离将是具有任意精度的浮点数。您的输出必须正确到小数点后三位。取整由您决定。请在您的答案中阐明。 您可能会认为这三个点不是共线的,所以总会有一个唯一的解决方案。 您无权强加解决方案。 您可能不会使用任何琐碎此特定问题的内置函数。不过,允许使用矢量规范等的内置函数。 上手提示: 考虑围绕这三个点的每个圆,以它们到您的距离为半径。 规则 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 测试用例 这里一个点的输入格式是[[x,y],d]和x,y分别是坐标和d到该点的距离。这些点中的3点排列在一个列表中。输出将是x然后y在列表中。 [[[1,2],1.414],[[1,1],2.236],[[2,2],1.0]]-> [2,3] [[[24.234,-13.902],31.46],[[12.3242,234.12],229.953],[[23.983,0.321],25.572]]-> [-1.234,4.567] [[[973.23,-123.221],1398.016],[[-12.123,-98.001],990.537],[[-176.92,0],912.087]]-> [12.345,892.234] 您可以使用此Pyth程序生成其他测试用例。位置在输入的第一行,三个点在随后的三行。 编码愉快!

4
识别三角形
计算图片中的三角形数量是大脑测试中常用的一项任务。您将获得一张包含由三角形组成的形状的图片。然后,您必须在图片中找到所有可能的三角形。 任务 系统会以您选择的格式为您提供行列表。然后,您必须输出在其中找到的三角形的列表 输入值 您会得到行的列表,每行都有四个整数坐标(例如x1 y1 x2 y2)。您可以选择输入格式,只要记录清楚即可。例子: 0 4 8 1 0 4 9 5 8 1 9 5 2 8 0 4 9 5 2 8 [[0, 4, 8, 1], [0, 4, 9, 5], [8, 1, 9, 5], [2, 8, 0, 4], [9, 5, 2, 8]] 这是与图像相同的输入: 另一个带有交叉点(仅一种格式以节省空间): …

4
平铺,给定顶点配置
任务 给定顶点配置,任务是平铺多边形。 计分 您的分数等于您提交的内容达到的“复杂程度”。复杂度级别是累积的,这意味着要达到#3,您还必须支持#1和#2。 具有相同复杂度级别的提交通过字节计数来区分;最低的胜利。 输入值 输入是一个包含顶点配置的字符串,表示一个顶点图形。也就是说,以点分隔的整数列表,其中每个整数(n)表示一个正则n角,由一个公共顶点连接。 必须支持以下顶点配置: 3.3.3.3.3.3 3.3.3.3.6 3.3.3.4.4 (请注意,顺序反映在顶点图中,因此以下内容确实有所不同) 3.3.4.3.4 3.12.12 3.4.6.4 3.6.3.6 4.4.4.4 4.6.12 4.8.8 6.6.6 输出-复杂度级别1:顶点图形 在此复杂度级别上,输出是显示与给定输入相对应的顶点图形的图像。 输入前面带有一个F,表示应该输出顶点图形,而不是完整的图块。 例如,F3.6.3.6给出以下顶点图形: 输出-复杂度级别2:平铺 在此复杂度级别下,输出的图像是使用对应于给定输入的顶点图形显示均匀平铺的图像。 例如3.6.3.6给出以下平铺: 颜色或格式(没有漏洞)没有限制。 输出-复杂度级别3:双重平铺 在这种复杂性级别上,可以从每个切片形成“双重切片”。这是通过从每个多边形的中心到每个边界多边形的中心绘制线来实现的。 通过在输入前面加上来指定双重平铺V。 例如,V3.6.3.6给出以下双重平铺(红色):

2
X大于3,且X和Y之间至少相差2
我试图打败一些C ++。是否可以使这种情况更短? X > 3 & X - Y > 1 (当然,除了删除空白。) 所以,X至少4,但X >= Y + 2。 X和Y是[0,5]间隔中的整数。 我试图找到一些按位公式,但失败了。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

7
多边形中的孔数
问题:计算连接的多边形中的孔数。通过以下条件保证多边形的连通性:输入三角剖分中的每个三角形与另一个三角形至少共享一侧,并且只有一组这样连接的三角形。 输入是平面中L的n点的列表T,以及包含来自的三元组的列表0...n-1。对于T元组中的每个项,(t_1,t_2,t_3)代表L三角剖分中三角形的三个顶点(来自列表)。请注意,这是“多边形三角剖分”意义上的三角剖分,因此,在T该交叠中永远不会有两个三角形。另一个规定是您不必清理输入内容,L并且T不包含任何重复项。 示例1:如果L = {{0,0},{1,0},{0,1},{1,2}},T = {{0,1,2},{1,2,3}}则指定的多边形的孔数为0。 示例2:如果L = {{0,0},{1,0},{2,0},{2,1},{2,2},{1,2},{0,2},{0,1},{.5,.5},{1.5,.5},{1.5,1.5},{.5,1.5}},T = {{5,6,11},{5,10,11},{4,5,10},{3,8,10},{2,3,9},{2,8,9},{1,2,8},{0,1,8},{0,8,11},{0,7,11},{6,7,11},{3,4,10}}则面输入将导致输出为2。 任务是编写最短的程序(或函数),该程序以L和T作为输入并返回孔的数量。“优胜者”将被认为是字符数最少的条目(暂定结束日期为6月1日)。 输入格式样本(请注意0索引): 0,0 1,0 0,1 1,2 0,1,2 1,2,3

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

4
凸包中的点(2D)
背景 有限数量点的凸包是包含所有点的最小凸多边形,无论是顶点还是内部。有关更多信息,请参见有关PGM的问题,该问题定义得很好。 输入值 N+1N >= 3通过STDIN以下格式的2-D坐标()(也允许其他常见的高尔夫输入)(小数位数可以变化,但是您可以假定它保持“合理”,并且每个数字都可以表示为浮点数): 0.00;0.00000 1;0.00 0.000;1.0000 -1.00;1.000000 输出量 STDOUT如果列表中的第一个点((0.00;0.00000)在上面的示例中)位于其他N个点的凸包中,则打印到(或等效)真值(否则为等价)。 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。 边界案例:如果该点位于凸包的边界上(例如,在壳的外部边界的一侧或顶点上),则可以返回任何值(但不会崩溃),因为该概率为零事件(以任何合理的概率)。 禁止使用:仅用于解决几何问题的任何内容(语言,运算符,数据结构,内置或包)(例如Mathematica的ConvexHull)。允许使用通用数学工具(矢量,矩阵,复数等)。 测验 应该返回TRUE:spiralTest1-TRUE,squareTest1-TRUE 应该返回FALSE:spiralTest2-FALSE,squareTest2-FALSE

3
画一个圣诞星/星状十二面体
在圣诞节,纸星星是我家庭中的一件大事,所以我认为虚拟的星星会很酷。 下面是常规十二面体的图像(来自https://en.wikipedia.org/wiki/Dodecahedron,归因于此处提到的作者。) 当应用于多面体时,星状过程(维基百科)涉及到扩展这些面直到它们与其他面交叉。因此,从常规十二面体开始,我们获得以下形状: 小星状十二面体,大十二面体和大星状十二面体 图片来自http://jwilson.coe.uga.edu/emat6680fa07/thrash/asn1/stellations.html 这是十二面体(Wolfram)的三个可能的星状。当我们将面孔延伸得越来越远时,它们从十二面体自然过渡到小型星状十二面体,大十二面体和大星状十二面体。 任务 您的程序或函数应显示以下多面体之一或将其输出到图像文件:常规十二面体,小星状十二面体,大十二面体或大星状十二面体。 配色方案应为上面的第二张图像。六对相对的面中的每一个均应为红色,黄色,绿色,青色,蓝色和洋红色六种颜色之一。您可以在您的语言或其文档中使用带有这些名称的默认颜色,也可以使用FF0000,FFFF00、00FF00、00FFFF,0000FF和FF00FF的颜色(如果需要,可以通过将强度降低到至少75%来降低这些颜色,例如将F减为C。) 请注意,我们将“面”定义为同一平面上的所有区域。因此,在上面的图像中,正面为黄色(平行的背面也将为黄色)。 背景应为黑色,灰色或白色。边缘可以省略,但如果绘制则应为黑色。 规则 显示的多面体的宽度必须在500到1000像素之间(宽度定义为任意两个显示的顶点之间的最大距离。) 显示的多面体必须是透视投影(视点距离多面体至少5个宽度)或正射投影(实际上是视点在无穷远处的透视投影)。 多面体必须可以从任何角度显示。(选择最简单的角度并制作硬编码的2D形状是不可接受的。)用户可以通过以下两种方式指定角度: 从标准输入或作为函数或命令行参数输入对应于三个旋转的三个角度。这些角度可以是欧拉角(第一个和最后一个旋转都围绕同一轴)或泰特布赖恩角(其中每个绕x,y和z轴旋转一个角度)https://en.wikipedia.org/ wiki / Euler_angles(简单地说,只要每次旋转均围绕x,y或z轴且连续旋转均围绕垂直轴,任何事情都会发生。) 用户可以任意多倍地绕x和y轴旋转多面体10步,并刷新显示(假定z轴垂直于屏幕)。 多面体必须是实体,而不是线框。 不允许用于绘制多面体的内置函数(我在看着你,Mathematica!) 计分 这是代码高尔夫。以字节为单位的最短代码获胜。 奖金 如果您不将内置函数用于3D绘图,则将您的分数乘以0.5。 如果可以显示十二面体的所有三个星号,则将分数乘以0.7,用户可以通过从stdin输入的整数1-3或函数或命令行参数来选择十二面体。 如果您同时获得这两个奖金,您的分数将乘以0.5 * 0.7 = 0.35 有用的信息(来源如下) https://zh.wikipedia.org/wiki/Regular_dodecahedron https://zh.wikipedia.org/wiki/Regular_icosahedron 十二面体有20个顶点。它们中的8个形成具有以下笛卡尔(x,y,z)坐标的立方体的顶点: (±1,±1,±1) 其余的12个如下(phi是黄金比例) (0,±1 /φ,±φ) (±1 /φ,±φ,0) (±φ,0,±1 /φ) 小星状十二面体和大十二面体的凸包显然是规则的十二面体。外部顶点描述一个二十面体。 根据维基百科,可以以与(0,±1,±φ)的循环置换类似的方式描述二十面体的12个顶点。小星状十二面体和大十二面体的外部顶点(与上面的十二面体的比例相同)形成一个较大的二十面体,其中顶点的坐标是(0,±φ^ 2,±φ)的循环排列。 十二面体和二十面体的面之间的角度分别为2 arctan(phi)和arccos(-(√5)/ 3)。 …

15
创建一个尽可能靠近正方形的网格
创建使网格尽可能靠近正方形的函数或程序 您将得到一个整数N作为输入,整数(1、2、3、25等) 输出必须是N个字母的完美矩形网格,并尽可能接近正方形 (wannabe)方块必须由用户指定的字母O或X之一组成 要点: 硬编码为仅O或X:+1 一个param(0/1,true / false,类似的东西)以旋转输出(例如5或8):-10 设计正方形(以某种方式同时使用O和X):-5 如果图案包含两种类型的字符(其中x / y轴> = 3)并且在水平或垂直翻转时保持不变(允许将Xs与Os交换),则该图案被视为有效 例子 INPUT: 4 INPUT: 5 INPUT: 8 INPUT: 9 OO OOOOO XXXX XOX OO XXXX OXO or rotated 90deg XOX 不允许的示例(行或列的长度不一样) BAD RESULT: 5a BAD RESULT: 5b BAD RESULT: 8 OOO OO OOO OO OO …

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.