Questions tagged «geometry»

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

6
重叠圆
应该写的程序或函数,它给出一个N由N等间隔的正方形网格和固体内切圆的输出或返回其由实心圆圈部分或完全重叠的方格的数目。 0大小的重叠(即当圆仅接触一条线时)不计算在内。(这些重叠出现在例如)N = 10。 例 N = 8 (64 squares), Slices = 60 输入值 一个整数N > 0。(网格将具有N * N正方形。) 输出量 整数,实心圆形切片的数量。 例子 (输入输出对) Inputs: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Outputs: 1 4 9 16 25 36 45 60 77 88 …

5
蒙德里安绘画描述语言
挑战在于为Mondrian绘画描述语言(MPDL)编写解释器。 语言定义 该语言在矩形堆栈上运行。矩形由其左上坐标和右下坐标定义。坐标必须是整数。使用具有属性的单个矩形初始化堆栈(1,1,254,254) 每个命令具有以下格式: <character><integer> 有以下三个命令: v<integer>:在参数中指示的位置(以百分比表示)上对堆栈中的最新矩形执行垂直分割。将源矩形从堆栈中删除,并替换为拆分产生的两个新矩形。左边的矩形被压入堆栈,然后是右边的矩形。由于矩形坐标是整数,因此分数应四舍五入为最大的较小整数。 h<integer>:水平分割。顶部矩形被压入堆栈,然后底部矩形被压入堆栈。 c<integer>:从堆栈中删除最新的矩形,并将其绘制为参数指定的颜色。1 =白色,2 =红色,3 =蓝色,4 =黄色 挑战 编写一个程序,将绘制说明作为参数,并创建绘制矩形的256x256位图表示形式。矩形必须以3像素的黑线分隔。一个或两个像素矩形应使其非黑色像素被边框黑色像素隐藏。 输入可以作为参数或文件读取,由您决定。命令应以空格分隔。您可以假定输入文件的语法正确,并且没有尾部或前导空格,制表符等。输出可以直接显示在屏幕上,也可以保存到文件,由您自己决定。 最短的代码获胜。 测试 以下来源: v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1 应产生红色,蓝色和黄色的成分II:

2
用尺子和罗盘构造n-gons
任务是仅使用指南针和未标记的标尺绘制n边的规则多边形。 输入(n)是以下10个数字之一:3、4、5、6、8、10、12、15、16、17 方法:因为只有标尺和罗盘,所以只能绘制点,线和圆。 只能画一条线: 通过两个现有点。 只能画一个圆: 以一个点为中心,周长穿过第二个点。 只能画一个点: 在两条线的交点, 在直线和圆的交点处, 在两个圆的交点处, 一开始,您可能会画2点以开始。 通过此过程(并且仅通过此过程),您必须绘制所请求的n-gon的n条线以及达到该阶段所需的所有工作。 编辑:必须计算交点的位置,但是可以通过语言提供的任何方式绘制直线和圆。 输出是n边正多边形的图像,显​​示其工作状态。 图形上对图像大小,格式,线条粗细或此处未提及的其他内容没有任何限制。但是,必须有可能在视觉上区分不同的线,圆及其交点。另外: 构成n形边的n条线必须与“工作”颜色不同(即,任何点,圆或其他线),并且背景颜色也必须再次不同。 工作可以离开绘图区域的边界(点除外),这些点必须全部在图像的可见范围内。 圆可以是一个完整的圆,也可以是一个圆弧(只要它显示所需的相交点即可)。 一条线是无限的(即离开绘图区域),或者在它经过的两个点处被切除。编辑:可以画任何长度的线。只能在绘制的线在视觉上相交的地方创建点。 可以根据需要绘制点,包括不标记点。 评分是双重的,提交支持的每个输入获得1分,最多10分。在平局的情况下,最短的字节数为准。 可以在最少的步骤中构造n-gon或能够在给定范围之外构造n-gon的提交将获得认可,但对您的得分没有帮助。 维基百科的背景信息

8
外箱思考
您试图将球体装入5边形的盒子中,但有时不能完全适合。编写一个函数来计算球体在框的外部(框的边缘上方)有多少。 有3种可能的情况: 球体完全适合盒子。答案将为0。 球体位于盒子的边缘。答案将超过总数的一半。 球体位于盒子的底部。 您可以在此处查看每种情况: 您必须编写一个程序或函数来将此值计算为至少4个有效数字。 输入:4个非负实数,采用任何方便的格式*-宽度,长度,盒子的深度(内部度量)和球体的直径。 输出:1个可用格式的非负实数*-框外球体的总体积(不是百分比)。 *必须与十进制字符串可相互转换 鼓励您尽可能限制使用三角函数。 这是一场人气比赛,所以跳出框框思考吧!

4
使用ASCII艺术图可视化长除法
编写一个程序,以可视化方式用ASCII艺术进行长除法。使用您选择的输入格式,输入由两个整数组成:分子和分母。 例子: 1234÷56: 22 ---- 56|1234 112 --- 114 112 --- 2 1002012÷12: 83501 ------- 12|1002012 96 --- 42 36 -- 60 60 -- 12 12 -- 0÷35 0 - 35|0 规则: 编程语言的除法运算符的用途是允许的。 也允许使用大整数支持。 为了保持一致: 如果商为零,则在跳水板的末端打印一个零。 如果余数为零,请不要打印。 不要在任何数字上打印前导零。 末尾多余的换行符和右边的尾随空格是允许的。 字符最少的解决方案获胜。 限制: 0 <=分子<= 10 72 - 1 1 <=分母<= 9999999 …

2
编程非圆度分数
您的任务是编写一个数学函数s,该函数A在2D平面中采用一组非空的有限点,并输出s(A)满足以下属性的非圆度分数: 正定性:如果有一个包含所有点的圆或直线A,则s(A) = 0。除此以外s(A) > 0 排斥性:它对非负实数是排斥的,这意味着对于每个非负实数,平面r的有限子集A使得s(A) = r。 平移不变性: s如果s(A) = s(A + v)对于每个向量v和所有,则平移不变A。 标度不变性: s是尺度不变,如果s(A) = s(A * t)每一个t≠0和所有A。 连续性。 s被说成是连续的,如果函数f(p) := s(A ∪ {p})(映射的点p到的实数)是连续使用的实数的标准绝对值,并且在该平面的各点的标准欧几里得范数。 直观地讲,这种非圆度得分可以认为与线性回归中的相关系数相似。 细节 理论上,您的函数必须在实际中起作用,但是出于此挑战的目的,您可以使用浮点数代替。请提供您提交的内容的解释,并说明这五个属性为何成立。您可以将两个坐标列表或一个元组或类似格式的列表作为输入。您可以假设输入中没有点重复,即所有点都是唯一的。

9
加入房间
所以,这里有一张地牢的地图... ########## # ##### # ##### ########## ########## ########## ########## #### ## #### ## ########## 假设英雄在房间A(在左上方)中,而他们的目标(王子在遇难中?)在房间B(在右下方)中。我们的地图不允许英雄前进到他们的目标。 我们需要增加一条通道... ########## # ##### # ##### ####.##### ####.##### ####.##### ####.##### #### ## #### ## ########## 在那里,好多了! 规则 接受地牢图(由散列和空格组成,行由换行符分隔的程序或函数)。 它将输出一个地图,该地图上添加了点,以表示在空格字符之间的直接路径上的所有空格中的段落。 它不会更改行长或行数。 通道都是从空间到空间的直线。 通道不能转弯 它们不会在空间和地图边缘之间。 使用任何语言。 尝试以最少的字节数执行转换。 如果无法绘制通道,请返回地图,保持不变。 贴图的所有边缘都应始终具有哈希值(您无需在边缘处处理空格)。 输入地图始终为矩形,每行宽度应相同。 测试用例 #### #### # # => …

14
多面体的欧拉-庞加莱特征
给定多面体的表面的三角剖分p,请计算其Euler-Poincaré-Characteristic χ(p) = V-E+F,其中V的数量是顶点E的数量,边F的数量和面的数量。 细节 顶点被枚举为1,2,...,V。三角剖分以列表形式给出,其中每个条目都是一个面的顶点的列表,以顺时针或逆时针顺序给出。 尽管有名称,但三角剖分还可以包含具有3个以上边的面。可以假定这些面是简单连接的,这意味着可以使用一个闭合的非自相交环路绘制每个面的边界。 例子 四面体:这个四面体是凸面的,具有凸面χ = 2。可能的三角剖分是 [[1,2,3], [1,3,4], [1,2,4], [2,3,4]] 立方体:这个立方体是凸的并且具有χ = 2。可能的三角剖分是 [[1,2,3,4], [1,4,8,5], [1,2,6,5], [2,3,7,6], [4,3,7,8], [5,6,7,8]] 甜甜圈:这种甜甜圈/环形形状具有χ = 0。可能的三角剖分是 [[1,2,5,4], [2,5,6,3], [1,3,6,4], [1,2,7,9], [2,3,8,7], [1,9,8,3], [4,9,8,6], [4,5,7,9], [5,7,8,6]] 双甜甜圈:这种双甜甜圈应该有χ = -2。它是通过使用上面两个甜甜圈的副本[1,2,5,4]并将第一个甜甜圈的侧面[1,3,6,4]与第二个甜甜圈的侧面标识来构造的。 [[2,5,6,3], [1,3,6,4], [1,2,7,9], [2,3,8,7], [1,9,8,3], [4,9,8,6], [4,5,7,9], [5,7,8,6], [1,10,11,4], [10,11,5,2], [1,10,12,14], …

14
一条线穿过的象限
任务 给定线的表示形式,输出该线通过的象限数。 线的有效表示 您可以将一行表示为 三个有符号整数A,B和C,它们不共享公因数,其中A和B都不为零,代表行Ax + By = C, 四个符号整数,,,和,表示通过点线和,或X1Y1X2Y2(X1, Y1)(X2, Y2) 一种描述行的数据类型(如果您的语言有一种)(它必须支持垂直线)。 您可能无法采用不允许竖线的任何格式的输入(例如,截距形式)。如果你选择采取整数作为输入,你可以假设它们位于包容范围内[-127, 128]。 技术指标 输出将始终为0、2或3(一条线永远不能穿过所有四个象限,也不能只穿过一个象限)。 轴上的直线被认为不通过任何象限。穿过原点的线被认为仅穿过2个象限。 您不必返回正在通过的象限(尽管为清楚起见,测试用例包括它们)。 这是代码高尔夫球,因此最短的有效答案(以字节为单位)获胜。 测试用例 使用它们之前,您必须将它们转换为合适的格式。 1x + 1y = 1 -> 3 (quadrants I, II, and IV) -2x + 3y = 1 -> 3 (quadrants I, II, and III) 2x + -3y = …

7
振荡平等
我们的对象在两个整数点之间[l, r]以每时间单位一个单位的速度从lon 开始振荡t=0。您可以假设l < r。例如,如果一个对象在上振荡[3, 6],则我们有: t=0 -> 3 t=1 -> 4 t=2 -> 5 t=3 -> 6 t=4 -> 5 t=6 -> 4 t=7 -> 3 t=8 -> 4 等等,但是物体不断振荡,所以我们还有t=0.5 -> 3.5和t=3.7 -> 5.3。 由于两个物体之间振荡[l1, r1],[l2, r2],确定是否存在过一段时间t,使得这两个对象共享相同的位置。您可以采用l1, r1, l2, r2任何方便的格式,并输出任何真实/错误值。 真实的输入: [[3, 6], [3, 6]] [[3, 6], [4, 8]] …
15 code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

17
在3D空间中按线性距离对点进行排序
眼镜 您具有x,y,z大小为S整数单位的立方3D空间,例如0 <= x,y,z <= S。 您可以从获得的默认输入法的点数组P表示x,y,z整数坐标,在任何合理的格式,只要你喜欢,例如:[x1,y1,z1],[x2,y2,z2],[x3,y3,z3] ... [xn,yn,zn]。 所有P值将在上述立方3D空间中,例如0 <= x,y,z <= S。 的总数可能P为。1 <= P <= S3 您还将获得基点和3D立方体大小的x,y,z整数坐标作为输入。 BS 任务 您的目标是以您喜欢的格式输出P按距基准点 的线性(欧几里得)距离排序的点B。 规则 如果发现多个P等距点,则B必须P按您的首选顺序输出所有等距。 一个点P可能与吻合B,因此它们的距离为0,您必须输出该点。 这是一个代码挑战,所以最短的代码胜出。 禁止出现标准漏洞。 代码说明表示赞赏。 测试用例 Input: S (size), [B (base point x,y,z)], [P1 (x,y,z)], [P2], [P3], [P4], [P5], [...], [Pn] 10, [5,5,5], [0,0,0], [10,10,10], …

2
SchläfliConvex常规多面体解释器
背景 所述施莱夫利符号的形式为{P,Q,R,...}限定规则多面体和镶嵌的表示法。 Schläfli符号是递归描述,以p边的常规多边形为{p}开始。例如,{3}是等边三角形,{4}是正方形,依此类推。 {p,q}表示在每个顶点周围具有q个规则的p侧多边形面的规则多面体。例如,立方体在每个顶点周围有3个正方形,并用{4,3}表示。 {p,q,r}表示一个规则的4维多面体,每个边缘周围有r个{p,q}个规则多面体单元。例如,tesseract {4,3,3}在边缘周围有3个立方体,{4,3}。 通常,规则多面体{p,q,r,...,y,z}在每个峰周围都有z {p,q,r,...,y}个小面,其中一个峰是多面体中的一个顶点, 4多面体中的边,5多面体中的面,6多面体中的单元格和n多面体中的(n-3)面。 规则的多边形具有规则的顶点图形。正则多边形{p,q,r,... y,z}的顶点图为{q,r,... y,z}。 规则多面体可以具有五角星形的星形多边形元素,其符号为{5/2},由五边形的顶点表示,但交替连接。 根据构造的角度缺陷,Schläfli符号可以表示有限凸多面体,欧氏空间的无限细分或双曲空间的无限细分。正角缺陷使顶点图形可以折叠成更高的维度,并以多面体的形式循环回到自身。零角度缺陷会细分与小平面相同尺寸的空间。负角缺陷不能在普通空间中存在,而可以在双曲空间中构造。 竞争 您的目标是创建一个程序,该程序在通过SchläfliSymbol时将返回凸多面体的完整描述。这只是Schläfli符号的一个子集,但它是最简单的符号,我相信即使没有其他可能性,这也将是一项非常困难的任务,而多面体是镶嵌的起点。设计该问题的规则时要以将结果作为API的想法进行设计,而我无法在Internet上找到任何此类程序。 您的程序必须完成以下所有操作。 该程序必须能够生成任何有限尺寸的规则凸多面体。在2维中,这包括n个角。在3维中是柏拉图式固体,在4维中包括tesseract,orthoplex和其他一些实体) 程序必须(a)在原点上放置一个点,或(b)确保所有点的平均值是原点。方向无关紧要。整体大小无关紧要。 程序必须提供完整的描述,这意味着对于4维对象,程序将返回/打印顶点,边,面和多面体。这些报告的顺序无关紧要。对于多面体,这是渲染对象所需的信息。 你不会需要处理: 镶嵌 双曲几何 分数Schläfli符号(非凸) 嵌入式Schläfli符号(非均匀平铺) 如果要求您执行任何上述操作,则可能返回错误。 示例:多维数据集 输入: 4 3 输出: Vertices 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 …

2
真正的切比雪夫旋转
这是受Chebyshev Rotation启发的挑战。我建议在那里查看答案以从中获得灵感。 给定平面上的一个点,存在一个以原点为中心并与该点相交的唯一正方形(边长相等的矩形)(Interactive demo): 给定一个点p和距离d,返回由移动距离获得的点d从p,逆时针(顺时针和负 d),沿方形的周边围绕原点相交p。您的答案必须精确到至少4个十进制数字。 测试用例: (0, 0), 100 -> (0, 0) (1, 1), 81.42 -> (-0.4200, 1.0000) (42.234, 234.12), 2303.34 -> (-234.1200, 80.0940) (-23, -39.234), -234.3 -> (39.2340, -21.8960) 以下测试用例来自Martin Ender最初提出的挑战,且所有测试用例的d = 1: (0, 0) -> (0, 0) (1, 0) -> (1, 1) (1, 1) -> (0, 1) …

5
离外部有多远?
取一个2D空间区域,该区域划分为以轴对齐的单位正方形元素,其中心以整数间隔对齐。如果一条边由两个元素共享,则称该边为内部,否则为外部边。 您的目标是找到从每个元素的中心开始(即traversal distance或distance简称为)到达外部边缘必须经过的最小数量的相邻元素。您只能穿过一条边缘(即没有切角/对角运动)。注意,“外部元素”(具有至少一个外部边缘的元素)被认为需要遍历0相邻元素才能到达外部边缘。 输入值 输入是一个非负整数对坐标的列表,表示所有元素中心的(x,y)。假定不存在重叠元素(即x / y对唯一标识一个元素)。您可能不假定有关元素输入顺序的任何信息。 欢迎您将输入的原点转换到任何位置(例如0,0或1,1,等等)。 您可以假定所有输入元素都已连接,或者换句话说,可以使用上述规则从任何一个元素移动到任何其他元素。注意,这并不意味着2D区域只是简单连接。里面可能有孔。 示例:以下为无效输入。 0,0 2,0 不需要错误检查。 输入可以来自任何来源(文件,stdio,函数参数等) 输出量 输出应该是标识每个元素的坐标列表,并遍历相应的整数距离以到达边缘。输出可以按所需的任何元素顺序进行(例如,您不必按与输入相同的顺序输出元素)。 输出可以是任何源(文件,stdio,函数返回值等) 任何与元素的坐标与其外部距离匹配的输出都可以,例如,所有这些都可以: x,y: distance ... [((x,y), distance), ...] [(x,y,distance), ...] 例子 文本示例输入的格式为x,y,每行一个元素;欢迎您将其重塑为方便的输入格式(请参阅输入格式规则)。 文本示例输出的格式为x,y: distance,每行一个元素;同样,欢迎您将其重塑为方便的输出格式(请参见输出格式规则)。 图形数字的左下边界为(0,0),内部数字表示到达外部边缘的预期最小距离。请注意,这些数字仅用于演示目的;您的程序不需要输出这些。 例子1 输入: 1,0 3,0 0,1 1,2 1,1 2,1 4,3 3,1 2,2 2,3 3,2 3,3 输出: 1,0: 0 3,0: 0 …

3
飞船去哪儿了?
基于Zgarb提出的想法。 宇宙飞船在规则的3D网格周围移动。网格的单元格在右手坐标系xyz中用整数索引。太空飞船从原点开始,沿x轴正方向指向,z轴正方向向上。 飞船将沿着由非空运动序列定义的轨迹飞行。每个运动要么是F使飞船朝其朝向移动一个单元的(向后)方向,要么是六个旋转之一UDLRlr。这些对应于以下的俯仰,偏航和横滚: 感谢Zgarb创建该图。 Up和D自己将飞船的俯仰改变90度(方向对应于飞船鼻子的运动)。 L和 R左右将飞船的偏航角改变90度。它们只是常规的左转和右转。 l和 r向后是90度的侧倾运动,方向指示哪个机翼向下运动。 请注意,应该始终相对于飞船解释这些内容,以便相关的轴随之旋转。 用数学术语来说,宇宙飞船最初位于位置(0, 0, 0),沿着(1, 0, 0)矢量(0, 0, 1)指向,指向上方。旋转对应于应用于坐标系的以下矩阵: U = ( 0 0 -1 D = ( 0 0 1 0 1 0 0 1 0 1 0 0 ) -1 0 0 ) L = ( 0 -1 0 R …

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.