Questions tagged «geometry»

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

4
围起来1009像素
输出是包围1009像素的形状。 形状必须采用单个,闭合,不相交的环的形式。 输入是一个正的非零整数。 每个输入必须产生唯一的输出-也就是说,每个输出必须与使用较低输入生成的输出唯一。 胜利取决于最大的输入限制: 您提交内容的输入限制被认为比提供非唯一或无效输出的最低输入少1。 例如,如果为输入1、2或3而不是4产生有效且唯一的输出,则您的输入限制为3。 源代码限制为1009字节。如果有平局,则字节数最少的条目获胜。 限制和说明: 形状的最大尺寸为109 x 109像素。大小包括用于绘制形状的线。 一条线是恒定的宽度。 封闭的空间必须完全由线条封闭-您不能使用图像文件的边界。 封闭的1009像素仅指封闭的空间。它不包括该行。 输出是图像。 没有其他图形限制-例如颜色,线条粗细等。 输出的唯一性仅指封闭的空间。如果封闭的空间不是唯一的,则线的更改或其他图形更改将是无关紧要的。 形状的转换并非唯一。旋转,反射和任何其他变换算作唯一的。 输出必须可重现-相同的输入将始终提供相同的输出 输出之间不需要有关系,连续的或其他的关系。 在提交的“输入限制”之外,没有定义的输出。 不允许其他输入或获取外部数据。 一条线必须是连续的,即像素必须接触(接触角点计数)。 像素是您的绘图方法使用的“绘图”的最小单位,不一定与屏幕像素相对应。 例子: 这是有效形状的示例: 以下形状无效: 编辑:线接触: 封闭空间必须是连续的,定义为像素接触。触角至关重要。 线不能在其外侧封闭任何空间。@Sparr发布的这张图片说明了这一点-仅每行的第一个形状有效: 线的外侧可以接触,但不能以包围空间的方式接触。 触摸线可能不会重叠-例如,两条触摸1像素粗的线的总厚度为2px,从不为1px。

3
用王瓷砖填充屏幕
已经证明,以下的13平方的Wang块总是不定期地对平面进行平铺。这意味着,当正方形排列成网格时,所有相邻边的颜色都相同,图案的平移将永远不会与其自身匹配。 我们将通过一个3×3网格以文本形式表示每个图块,该网格在中心和拐角处都填充有空格,数字1到5代替了边缘处的红色,绿色,蓝色,黄色,灰色。 2 2 2 1 1 1 4 3 2 2 4 3 2 1 2 1 3 2 3 2 1 3 1 3 2 4 4 4 4 4 5 4 5 5 5 5 5 5 4 3 2 3 2 3 2 1 2 1 …

8
撞球撞
给定一对撞球在撞击前的二维位置和速度,计算出完全弹性碰撞后的速度。假定这些球是具有相同半径,相同质量,均匀密度且无摩擦的理想球体(或等效地:圆形)。 输入由8个数字:p0x,p0y,v0x,v0y,p1x,p1y,v1x,v1y其中p0x,p0y是所述第一球,中心v0x,v0y其速度,并且类似地p1x,p1y,v1x,v1y,第二球。可以接受以任何顺序输入,并且在任何方便的方式结构化,例如,作为一个2x2x2的阵列,或者一个2×2阵列p和两个长度为2的数组为v0和v1。也可以使用复数(如果您的语言支持)而不是xy对。但是,您不应在非直角坐标系的坐标系中进行输入,即不允许使用极坐标。 请注意,撞球的半径是p0x,p0y和之间的距离的一半p1x,p1y,因此并未将其作为输入的明确部分给出。 编写一个程序或函数,以任何方便的笛卡尔表示形式输出或返回4个数字:的碰撞后值v0x,v0y,v1x,v1y。 可能的算法是: 找到穿过两个中心的法线 找到穿过两个中心之间的中点并垂直于法线的切线 改变坐标系和分解v0x,v0y,并v1x,v1y纳入其切线和正常组件v0t,v0n和v1t,v1n 交换的正常组成部分v0和v1,维护他们的切向分量 改回原始坐标系 测试(结果四舍五入到小数点后五位): p0x p0y v0x v0y p1x p1y v1x v1y -> v0x' v0y' v1x' v1y' [-34.5,-81.8, 34.7,-76.1, 96.2,-25.2, 59.2,-93.3] [ 49.05873, -69.88191, 44.84127, -99.51809] [ 36.9, 77.7,-13.6,-80.8, -7.4, 34.4, 15.1,-71.8] [ 5.57641, -62.05647, -4.07641, -90.54353] [-51.0, 17.6, 46.1,-80.1, 68.6, 54.0,-35.1,-73.9] [ …

6
到坐标的距离
二维平面上有n个人。利用它们之间的距离,我们将找到它们的位置。要获得唯一答案,您必须做出四个假设: 至少有3个人。 第一人称位在(0,0)。 第二人称位置(x,0)对于x> 0。 第三个人处于(x,y)位置,且y> 0。 因此,您面临的挑战是编写一个程序或函数,该程序或函数将给出二维距离数组(其中D[i][j]给出人i与之间的距离),并j返回其坐标列表。您的答案必须准确到至少6位有效数字。以字节为单位的最短解决方案获胜。 例子 [[0.0, 3.0, 5.0], [3.0, 0.0, 4.0], [5.0, 4.0, 0.0]] => [[0.0, 0.0], [3.0, 0.0], [3.0, 4.0]] [[0.0, 0.0513, 1.05809686, 0.53741028, 0.87113533], [0.0513, 0.0, 1.0780606, 0.58863967, 0.91899559], [1.05809686, 1.0780606, 0.0, 0.96529704, 1.37140397], [0.53741028, 0.58863967, 0.96529704, 0.0, 0.44501955], [0.87113533, 0.91899559, 1.37140397, 0.44501955, 0.0]] …

4
三分球!那是什么
来自http://en.wikipedia.org/wiki/Triangle: 编写一个程序,该程序采用三个2d坐标元组(笛卡尔),并对这三个点描述的形状进行分类。 在几乎所有情况下,这些点都将描述不同类型的三角形。在某些退化的情况下,这些点将描述一个奇异点或一条直线。程序将确定以下哪个标签适用于所描述的形状: 点(3点同时发生) 直线(直线上3点-可以同时发生的点不超过2点) 等边的(3个边相等,3个角度相等) 等腰(2边相等,2个角度相等) 斜角(0边相等,0角度相等) 右(1个正好为π/ 2(或90°)的角度) 倾斜(0个角度正好为π/ 2(或90°)) 钝角(1个角度>π/ 2(或90°)) 急性(3个角度<π/ 2(或90°)) 请注意,对于某些上述形状,将应用上述标签中的多个。例如,任何直角也将是等腰或斜角。 输入项 该程序可以从STDIN,命令行,环境变量或任何适合您选择的语言的方法中读取3个输入坐标。 输入坐标可以格式化,但是对于您选择的语言来说很方便。可以假设所有输入数字相对于最终使用的数据类型都是正确的格式。 不能假设输入坐标的顺序。 输出量 程序将输出到STDOUT,对话框或任何适合您选择语言的显示方法。 输出将显示适用于由输入坐标描述的形状的所有标签。 标签可以以任何顺序输出。 其他规定 允许使用您语言的三角函数库/ API,但禁止任何专门计算三角形类型的API。 在确定角度或边长相等时,您可能最终会比较浮点值。如果一个值在另一个值的1%以内,则将两个这样的值视为“相等”。 标准的“漏洞”不再有趣 这是代码高尔夫球,因此最短的答案以字节为单位。 例子 Input Output (1,2) (1,2) (1,2) Point (1,2) (3,4) (5,6) Line (0,0) (1,1) (2,0) Isosceles Right (0,0) (2,1) (10,1) …

11
最小的整数磁盘
挑战在于找到包含某些给定点的最小磁盘。但是,由于在这一挑战中磁盘的坐标和半径都必须都是整数,这一点变得有些棘手。 您的输入将是具有整数坐标x和的点的列表y。您可以将其作为元组列表,列表列表或任何其他表示对集合的方式。x并且y都是(可能是负数)整数。每个点都保证是唯一的,并且至少会有一个点。 你的输出将在3号,形式的磁盘X,Y和R。X,Y和R都是整数,X并且Y代表了磁盘的中心,R代表它的半径。每个给定点与中心之间的距离必须小于或等于R,并且必须不存在这样的较小的磁盘,该磁盘R也要满足此条件。 对于给定的输入,可能会有多种解决方案,在这种情况下,您的代码必须至少输出其中一种。 您可以使用语言支持的任何种类的几何内置函数(如果有),并且输入/输出可以通过内置的点/磁盘对象而不是数字来实现。 测试用例 Input (Possible) Output(s) (x,y) (X,Y,R) ------------------------- (0,0) (0,0,0) ------------------------- (0,1) (0,0,1) (1,0) (1,1,1) ------------------------- (1,4) (4,4,3) (3,2) (4,1) (4,5) (5,2) (7,4) ------------------------- (-1,0) (0,0,2) (2,0) (1,0,2) ------------------------- (-1,0) (1,0,2) (2,1) (0,1,2) ------------------------- (0,0) (1,0,1) (1,1) (0,1,1) 最少的字节数获胜。

10
自然日志上的蚂蚁
这是一个很好的初学者挑战,也是一个很好的时间杀手。 我只说了-自然-对数,因为标题太短了,这与对数无关。 给定2个变量: 蚂蚁数量n。 日志的宽度w。 输出日志宽度w与n蚁(实施例示出w=3,n=6) | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | …

7
极坐标图上行进的两点之间的距离
问题简要说明 编写一个程序,查找仅在从原点发出的光线和以原点为中心的圆上传播的两点之间的最小距离。 前提说明 现在,让我们想象一下我们在飞机上,并且只允许以特殊方式旅行。我们被允许乘坐任何从原点发出的射线旅行。 我们也可以在以圆为中心的任何圆上旅行 现在我们的目标是从飞机上的一个点移动到另一点。但是,我们不能只沿一条简单的欧几里得路径行进,只有当点恰好落在从中心发出的光线上时,我们才能这样做。 我们可以沿着这条路旅行,因为它落在我们的光线之一上。 我们还可以在以原点为中心的圆上旅行。 例子 现在是挑战: 我们必须以最短的路径从一个点到达另一个点。通常,这是绕圈和射线旅行的组合。 但是,这也可能在两条光线上传播。 有时,存在两条经过最小距离的路径。 问题 您的挑战是编写一个程序,如果我们遵循这些规则,当给定两个点时,它们将为我们提供它们之间的最小距离。输入可以是矩形或极坐标形式,并且输出应为一个数字,即两者之间的距离。 测试用例 (带矩形输入) (1,1) (1,-1) -> ~ 2.22144 (0,0) (1, 1) -> ~ 1.41421 (1,0) (-0.4161 , 0.90929) -> ~ 2 (1,1) (1, 0) -> ~ 1.19961 (1,2) (3, 4) -> ~ 3.16609

3
画一个随机的六字形
上面的图像称为六字形。六字形是我在DiffEq课堂上涂鸦时制作的一些很酷的图案。制作方法如下: 考虑以下点集,它们的形状像规则六边形。内部的六边形将包含最终的字形,而外部的6个点将形成星形,这是我们开始绘制线条的地方。 从外部的六个点中,随机选择一对。为了提高效率,两个选定的点之间应该至少有一个其他点(否则,它将对最终图形没有影响)。然后,从两个点中的每个点向另一个方向投射射线。该光线被前几行遮挡了。 重复此过程,直到形成所有9个边缘,如以下几幅图像所示。 这是光线被遮挡的示例。射线段的末端仍然可见,但是中间部分被我们绘制的前两个段所遮挡。 这两条光线也被“阻挡”,但这不会造成任何可见的差异,因为它们被同一条其他线阻挡了。 快进直到画完所有9条线。如果您想对这些跳过的步骤进行更详细的说明,我可以进行阐述。 最后,删除星星的点。为了使其看起来更漂亮,还将删除粗点。 挑战 您面临的挑战是输出随机六字形的视觉表示。这是代码高尔夫球,最少的字节获胜。 所有可能的六字形都应以一定的概率出现。通过更改绘制9条边的顺序来生成不同的六字形。 此外,程序输出的所有图像都必须是有效的六字形。某些样式(例如内部六边形的完整轮廓)可能无法显示为六字形,因此您编程时不得输出这些样式。 输出应为图形图像(打印到屏幕或文件)。 六边形必须是规则的,但可以以任何方向出现。 反射/旋转不是唯一的。(这可能使要求1易于遵循)。

15
几何挑战
每个人都喜欢几何。那么,为什么我们不尝试编写高尔夫球代码呢?这项挑战涉及输入字母和数字并根据其形状。 输入 输入将采用的形式(shapeIdentifier)(size)(inverter)。 但是shapeIdentifier,大小和逆变器是什么? 形状标识符是您将使用*s 制作的形状类型的标识符。以下是形状标识符: s -正方形 t - 三角形 大小将介于之间1-20,它是图形的大小。 逆变器确定形状是否上下颠倒,用a +或a 表示-。请注意: s3-==(等于),s3+因为正方形是对称的。但是,t5-!=(不相等)t5+。 在输出中可以使用尾随空白,但不能使用前置空白。 输出实例 Input: s3+ Output: *** *** *** Input: t5+ Output: * *** ***** Input: t3- Output: *** * 特别说明 三角形输入将始终为奇数,因此三角形*的顶部始终以1结尾。 三角形的大小(如果是)是底部的大小,如果是 +,则是顶部的大小-。
23 code-golf  string  ascii-art  geometry  code-golf  ascii-art  subsequence  fewest-operations  test-battery  code-golf  array-manipulation  bitwise  code-golf  interactive  code-golf  music  code-golf  string  kolmogorov-complexity  code-golf  string  decision-problem  simulation  code-golf  string  classification  code-golf  sequence  base-conversion  palindrome  code-golf  kolmogorov-complexity  code-golf  date  astronomy  code-golf  sequence  base-conversion  code-golf  geometry  combinatorics  code-golf  string  code-golf  math  array-manipulation  code-challenge  math  code-golf  card-games  code-challenge  array-manipulation  sorting  code-golf  code-golf  math  abstract-algebra  polynomials  code-golf  palindrome  factoring 

3
堆叠勾股三角
背景 毕达哥拉斯三角形是直角三角形,其中每个边的长度是一个整数(即,边的长度形成毕达哥拉斯三重): 使用这个三角形的边,我们可以附加两个不完全一致的毕达哥拉斯三角形,如下所示: 只要我们认为合适,就可以继续使用此模式,只要没有两个三角形重叠并且连接边的长度相等即可: 问题是,在给定的空间中,我们可以容纳多少个非一致的毕达哥拉斯三角形? 输入 您将通过函数参数,STDIN,字符串或任何您喜欢的变量接收两个整数作为输入,W和H。整数可以以十进制,十六进制,二进制,一元(祝您好运,Retina)或任何其他整数基数形式接收。您可能会认为max(W, H) <= 2^15 - 1。 输出 您的程序或函数应计算一个不重叠的连接的非一致勾股勾勒三角形的列表,并输出一组三个坐标的列表,其中一组坐标通过线连接时形成勾股勾勒三角形之一。坐标必须是我们空间中的实数(x必须在区间中,[0, W]并且y必须在区间中[0, H]),并且距离应精确到机器精度。三角形的顺序和每个坐标的确切格式并不重要。 必须有可能从一个三角形“行走”到其他任何一个,仅跨过相连的边界。 使用上述图作为一个例子,让我们的输入是W = 60,H = 60。 然后,我们的输出可能是以下坐标列表: (0, 15), (0, 21), (8, 15) (0, 21), (14.4, 40.2), (8, 15) (0, 15), (8, 0), (8, 15) (8, 0), (8, 15), (28, 15) (8, 15), (28, …

1
你能听到我吗?
背景 您是软件帝国的有钱人。您的时间值得很多金钱。因此,您必须始终以最有效的路线行驶。但是,作为主管,您会花费大量时间参与重要的电话通话。绝不要打断电话,这是至关重要的,因此您绝不能穿越没有电池服务的区域! 挑战 您将得到一个三元组列表,每个元组代表一个蜂窝塔的位置和功能。作为示例,[50, 25, 16]将代表位于<x,y> = <50, 25>其周围的半径为16的圆的蜂窝塔。请牢记此清单,您必须以最短的距离从起始位置<0, 0>到达目的地的目的地<511, 511>,而不会丢失电池服务。这是代码高尔夫球,所以最短的代码获胜! 输入输出 您可以自由地将输入操作为易于阅读的形式,例如在文件中,或者使用STDIN通过使用STDIN的嵌套数组eval等。您可以对输入进行硬编码,只要您的代码可用于其他输入即可:好。用于硬编码输入的确切字符将不计算在内,但变量名称和赋值字符将被计算在内。您不应该假设输入是按任何特定顺序排列的,也不应该假设每个基站都与问题有关。如果您有任何疑问,请发表评论,我会尽力澄清。 输出将是一个坐标列表,标记点,这些点在按顺序连接时将形成出口的路径。精度只需要四舍五入到最接近的整数,如果您的输出示例比我的输出示例低1-2个单位,那就很好。我在下面提供了图片以澄清这一点。 祝你好运! 例子 input: [ 32, 42, 64] [112, 99, 59] [141, 171, 34] [157, 191, 28] [177, 187, 35] [244, 168, 57] [289, 119, 20] [299, 112, 27] [354, 59, 58] [402, 98, 23] [429, 96, …

6
圆划分平面
任务 您将在平面中得到一组圆,其圆心在y = 0上。保证没有一对圆具有多个公共点。 您的任务是确定圆将平面划分为多少个区域。区域是不包含任何圆的最大包含点连续点集。 给定圆的描述后,您应该编写一个程序来计算此答案。 这是一个例子: 在左侧,您会看到在平面上绘制的圆。但是,在图片的右半部分,圆圈所产生的区域会明显地着色(每个区域一种颜色)。此示例中有六个区域。 输入项 输入的第一行包含一个数字,N后跟的圆圈描述数。这行是可选的,如果您的解决方案在没有它的情况下也可以,那么就可以了。 以下N各行分别包含两个整数x i和r i > 0,代表一个以中心(x i,0)和半径r i为中心的圆。 保证没有一对圆具有多个公共点。进一步保证x i和r i的10^9绝对值不超过(因此,它们可以舒适地装入32位整数)。 输入可以是: 从STDIN读取 从I当前目录中命名的文件中读取 或者,输入可以是: 在全局变量中作为字符串(包括换行符)可用 在堆栈上 输出量 这应该是一个整数,即要生成的区域数。应该将其写入STDOUT或O当前目录中命名的文件。 规则 以字节为单位的最短代码获胜 如果您的代码没有运行时,则+200字节罚款+中的空间复杂度多项式 n -100字节奖励,用于最坏情况下的预期运行时+空间复杂度 O(n log n) -50字节奖励,用于最坏情况下的预期运行时+空间复杂度 O(n) 确定性运行时+100字节加空间复杂度 O(n) 在评估运行时: 假定哈希表具有O(1)预期的插入,删除和查找运行时间,而与操作顺序和输入数据无关。这可能是正确的,也可能不是正确的,具体取决于实现是否使用随机化。 假设您的编程语言的内置类型花费确定性的O(n log n)时间,其中n输入序列的大小为。 假设对输入数字的算术运算仅O(1)花费时间。 尽管出于实际原因,不要假定输入数字受常数限制。这意味着诸如基数排序或计数排序之类的算法不是线性时间。通常,应避免很大的常数因子。 例子 输入: 2 …

24
计算三角形数量
给定一个正整数列表,找到我们可以形成的三角形数量,以使三角形的边长由输入列表的三个不同条目表示。 (灵感来自CR。) 细节 如果三个边长a ,b ,c的所有排列都满足严格的三角形不等式a + b > c ,则可以形成三角形。(这意味着a + b > c,和必须全部成立。)a,b,ca,b,ca,b,ca+b>c.a+b>c.a + b > c.a+b>ca+b>ca+b > ca+c>ba+c>ba+c>bb+c>ab+c>ab+c>a 三个边长必须出现在列表中的不同位置,但不一定必须成对地分开。a,b,ca,b,ca,b,c 输入列表中三个数字的顺序无关紧要。如果我们考虑一个列表a和三个数字a[i], a[j], a[k](i,j,k两两互不相同),那么(a[i],a[j],a[k]), (a[i],a[k],a[j]), (a[j], a[i], a[k])等等都被视为同一个三角形。 可以假定输入列表至少包含3个条目。 您可以假定输入列表按升序排序。 例子 可以在“ 在线试用”上找到一个小型测试程序! Input, Output: [1,2,3] 0 [1,1,1] 1 [1,1,1,1] 4 [1,2,3,4] 1 [3,4,5,7] 3 [1,42,69,666,1000000] 0 [12,23,34,45,56,67,78,89] 34 …

28
做一个简单的自动包装
(注意:这是我有史以来第一个关于高尔夫的代码问题,但是据我所知,没有人能完全做到这一点,所以我应该很好。) 您的任务是制作一个程序或函数,该程序或函数接受一个字符串s和一个整数n,并返回或输出包装成多行的文本。每个单词必须全部在一行上;即中间没有字。每行的n字符长度不能超过字符,并且每行中必须包含尽可能多的单词。 例: s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a …
22 code-golf  string  code-golf  string  parsing  apl  math  primes  integer  fastest-code  code-golf  math  primes  integer  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  array-manipulation  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  code-golf  date  conversion  code-golf  geometry  combinatorics  grid  code-golf  string  code-golf  counting  java  code-golf  chess  code-golf  path-finding  conversion  atomic-code-golf  logic-gates  code-golf  fibonacci  code-golf  ascii-art  fractal  code-golf  quine  code-golf  string  code-golf  array-manipulation  decision-problem  code-golf  quine  code-golf  code-challenge  array-manipulation  code-challenge  word-search  code-golf  binary  conversion  code-golf  code-golf  restricted-source  code-golf  kolmogorov-complexity  restricted-source  code-golf  kolmogorov-complexity  random  animation 

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.