Questions tagged «geometry»

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

8
丹尼斯(Dennis),门把手(Donknob),马丁·布特纳(MartinBüttner),克里斯·杰斯特·杨(Chris Jester-Young)-披萨店!
编程难题和代码高尔夫即将获得一个新的主持人,丹尼斯!这个挑战是向他致敬和我们的其他活动(或最近活动)主持人:门把手,马丁布特内尔和克里斯小丑,年轻。挑战冠军的标题应该被读作Pepto Bismol的歌曲。 基本上,我们要在他们都把披萨第十九咬比萨店,但我们需要确保他们共享这还算是因为一些的的器官功能障碍综合征被称为是比萨瘾君子! 比萨店出售的披萨都是矩形文字。披萨的宽度和长度可以是任何非负整数,只要它们的乘积可被四整除即可。文本披萨块中的每个网格空间都代表一个切片,因此始终可以将切片分成四个相等的组。 国防部将集体订购一个比萨饼,并以任何合理格式(例如)将其宽度和长度参数提供给服务器[width],[length]。在比萨饼到达餐桌之前,您需要在每个切片上贴上可以食用的mod的开头,以确保它们都能公平共享。每个人都应获得相同数量的切片。 E 是给丹尼斯的 D 用于门把手 M 是给马丁的 C 是给克里斯的 但是,这些mod有点顽强,要求它们各自的切片组是路径连接的,也就是说,它们的所有切片都可以通过上下左右移动而不能互相交叉,切片(并且不移动对角线)。不在乎怎么你做到这一点,只要它完成。 正确标记每个切片后,使用可选的尾随换行符将披萨传送到模块。 您的贴标机可以是程序或函数,可以打印或退还贴有标签的披萨。咬短的贴标机获胜。 例子 例子1 订购: 4,1 一些可能的标签比萨饼: EDMC MEDC CDEM 例子2 订购: 4,4 一些可能的标签比萨饼: MMMM CCCC DDDD EEEE DEMC DEMC DEMC DEMC CCCC DEEM DEEM DDMM 例子3 订购: 8,3 一些可能的标签比萨饼: MMMMMMCC DDDDCCCC DDEEEEEE DDDCMMMM DCDCMEEE DCCCMEEE …

5
砌块机器人群!
比赛结束了! 介绍 这是一个互动式的山丘之王竞赛,其中控制器完全包含在问题底部的堆栈片段中。控制器会自动读取答案并通过游戏进行游戏。任何人都可以随时在其浏览器中运行它。 比赛的机制与红色vs.蓝色像素战队的机器人非常相似。除了玩游戏(尽管仍然基于网格)之外,它是完全不同的。每场比赛是1比1,没有球队。每项参赛作品都是为自己而战,只有最后一名将成为冠军。 控制器使用JavaScript,并且由于JavaScript是大多数浏览器支持的唯一客户端脚本语言,因此所有答案也必须使用JavaScript编写。 在本规范中,斜体文本用于表示游戏机制或属性的正式术语。这些术语通篇使用以帮助保持一种内聚和清晰的方式引用游戏的不同部分。 游戏玩法 基本 这个问题的每个答案都代表一个参与者。一个游戏是两个玩家之间的竞争P1和P2。每个玩家控制着一群 8个机器人,编号从0到7。游戏在网格中进行,一个128×64 单元的竞技场,其底部的8行开始是墙壁(“块”),其他行开始是空中。网格边界之外的单元被视为空气。 网格的x坐标范围从左侧的0到右侧的127,而y的范围从顶部的0到底部的63。 样本起始网格: 僵尸程序始终与网格单元保持对齐,并且多个僵尸程序可能占据同一网格。机器人只能占据气囊。P1的漫游器始终在墙上方行的最左侧开始于0-7行,P2的漫游器始终在最右侧行7-0处开始。 机器人或单元的邻居是与之直接正交和对角的8个单元。 机器人的视场(FOV)是以机器人为中心的13×13单元正方形。如果某个单元格或敌方机器人位于至少一个玩家机器人的FOV中,则该机器人或敌人机器人就位于该玩家的FOV中。 动作与动作 在游戏中,每个玩家移动 1000次。P1首先移动,然后是P2,然后是P1,依此类推,直到总共进行了2000次移动为止,此时游戏结束。 在移动过程中,每个玩家都会收到有关游戏状态以及FOV中的网格单元和敌方机器人的信息,并使用该信息来决定每个机器人要采取的行动。 默认操作是不执行任何操作,机器人不会在其中移动或与网格互动。 其他动作是移动,抓取和放置: 在以下情况下,机器人可以移动到其相邻单元格C之一: C不是没有界限的 C是空气(即不是墙), C的至少一个邻居是一堵墙。 如果成功,该机器人将移至C。 机器人可以在以下情况下抢占其相邻单元格C之一: C不是没有界限的 C是墙 而且该漫游器尚未携带墙壁。 如果成功,C将会成为空中对象,并且该机器人现在将携带一堵墙。 在以下情况下,机器人可以放置到其相邻单元格C之一: C不是没有界限的 C是空气 任何一位玩家都没有机器人占据C, 机器人载着一堵墙。 如果成功,C将成为一堵墙,而僵尸程序将不再承载墙。 不成功的操作将导致无所作为。 至少由一个壁挂式机器人占据的牢房上方画有一个小墙彩色的正方形。机器人开始时没有围墙。 记忆 在移动过程中,玩家可以访问和更改其记忆,即最初为空的字符串,该字符串在整个游戏中一直存在,可以用来存储战略数据。 目标 黄色十字准线中的像元是目标,该目标始于随机位置。每个玩家的得分均从0开始。当玩家的机器人移至目标时,该玩家的得分将增加1,并且在下一回合之前将目标随机重新定位。比赛结束时得分最高的玩家获胜。如果分数相等,那是平局。 如果在移动过程中有多个机器人移向目标,则玩家仍然只能得到1分。 如果目标在同一位置进行了500次移动,则将再次将其随机重新定位。只要将目标随机放置,就可以确保不会将其放置在机器人所占据的单元中。 编程什么 为此功能编写一个正文: function myMove(p1, …

30
这个数字是-2的整数次幂吗?
有很多聪明的方法来确定数字是否为2的幂。这不再是一个有趣的问题,因此让我们确定给定的整数是否为-2的整数次幂。例如: -2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)² 规则 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您的输入是一个整数,如果该整数是-2的整数次幂,则输出必须是一个真实值,否则,则必须是一个虚假值。不允许其他输出(例如警告消息)。 通常的整数溢出规则适用:您的解决方案必须能够在语言的假设(或实际)版本中使用任意大整数,默认情况下,所有整数都是无界的,但是如果您的程序由于实现而在实践中失败不支持大整数,这不会使解决方案无效。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 获奖条件 这是一场代码高尔夫球比赛:字节数最少(在您选择的编码中)的答案是获胜者。

30
天哪,吉萨高尔夫!
“吉萨数”(俗称“ 蒂米数”)是指数字代表金字塔的任何数字(A134810)。例如,“ 12321”是一个吉萨数字,因为它可以像这样可视化: 3 2 2 1 1 但是,“ 123321”之类的字符不是吉萨币,因为金字塔的顶部有两位数字 33 2 2 1 1 换句话说,如果满足以下所有条件,则数字为吉萨数: 它的位数是奇数,中间的数字是最大的 它是回文的(相同的向前或向后读取),并且 数字的前半部分严格增加一个。(由于必须是回文,这意味着数字的后半部分必须严格减少一位) 您必须编写一个采用正整数作为输入的完整程序或函数,并确定它是否为吉萨数。您可以将输入作为字符串或数字。如果它是吉萨数,则输出真实值。否则,将产生虚假的值。 共有45个吉萨数字,因此这些输入中的任何一个都应产生真实值: 1 2 3 4 5 6 7 8 9 121 232 343 454 565 676 787 898 12321 23432 34543 45654 56765 67876 78987 1234321 2345432 3456543 4567654 5678765 …

13
ASCII框的数量
介绍 在此挑战中,将为您提供矩形长方体(3D框)的网(展开的表面)的ASCII表示作为输入。格式是这样的: ....+--+....... ....|##|....... ....|##|....... ....|##|....... +---+--+---+--+ |###|##|###|##| +---+--+---+--+ ....|##|....... ....|##|....... ....|##|....... ....+--+....... 长方体的每个面都是#s 的矩形,由- +-|字符包围。网的外部充满.s。网络将始终具有相同的方向:有一个中间面被其四个相邻面围绕着,中间面的对应部分位于输入的右边界。输入用.s 填充为矩形,并且不会包含.s的额外行或列。 任务 您的任务是将上述图表作为输入,并计算它表示的长方体的体积,这只是其长,宽和深的乘积。您可以将输入作为换行符分隔的字符串或字符串数​​组。 每个边的长度是- +两端字符之间的距离。例如,水平边缘的+--+长度为3,垂直边缘的长度为3 + | | | + 的长度为4。边的最小长度为1。上面的示例长方体的体积为2 * 3 * 4 = 24。 规则和计分 您可以编写完整的程序或函数,最低的字节数为准。 测试用例 .++.. +++++ +++++ .++.. 1 ...++.... ...||.... ...||.... +--++--++ +--++--++ ...||.... ...||.... ...++.... 3 …

22
检查点是否位于三角形内
您的目标是确定给定的2D点X是否位于具有给定顶点A,B,C的三角形区域内。 编写一个函数,该函数接受测试点X和三个三角形顶点的坐标(因此总共有8个坐标),如果该点位于该三角形内部,则返回True,如果位于该三角形外部,则返回False。 不用担心边缘情况。如果该点位于三角形(边或顶点)的边界上,或者该三角形实际上是线段,则您的代码可以执行任何操作,包括崩溃。也不必担心数值稳定性或浮点精度。 您的代码必须是一个命名函数。代码段将不被接受。 最少的角色获胜。 输入: 八个实数代表坐标。这些数字将在范围内(-1,1)。 确切的输入格式是灵活的。例如,您可以输入八个数字,一个八个数字的列表,一个由元组给定的四个点的列表,一个2 * 4矩阵,四个复数,两个x坐标和y坐标列表,等等。 输入只需要是某个容器中的数字即可,没有其他数据。您无法使用输入进行任何预处理,也可能不需要对输入进行任何约束,例如要求以y坐标递增来指定点。您的输入必须允许任何八个坐标(尽管您的代码在前面提到的极端情况下可以任意运行)。 请说明您的输入格式。 输出: 相应的布尔值True/ False,相应的数字1/ 0或您语言中的类似物。 测试用例 为输入提供了[X,A,B,C]四个元组的列表,首先是测试点,然后是三个三角形顶点。我将它们分为应该输出True和应该输出的那些False。 True 实例: [(-0.31961, -0.12646), (0.38478, 0.37419), (-0.30613, -0.59754), (-0.85548, 0.6633)] [(-0.87427, -0.00831), (0.78829, 0.60409), (-0.90904, -0.13856), (-0.80685, 0.48468)] [(0.28997, -0.03668), (-0.28362, 0.42831), (0.39332, -0.07474), (-0.48694, -0.10497)] [(-0.07783, 0.04415), (-0.34355, -0.07161), (0.59105, -0.93145), …

3
构造五边形,避免使用指南针
规则 您将仅从两个元素开始:点AAA和BBB,使得A≠BA≠BA \neq B。这些点占据了一个在所有方向上都是无限大的平面。 在此过程的任何步骤中,您都可以执行以下三个操作中的任何一个: 画一条穿过两个点的线。 绘制一个以一个点为中心的圆,使另一个点位于圆上。 在两个对象(直线和圆)相交处添加一个新点。 您的目标是创建5个点,以使其使用尽可能少的圆形成正五边形(一个5边长相等的凸多边形)的顶点。当然,您可能还有其他要点,但对于常规的五边形,必须有5个要点。您不必为得分而绘制五边形的边缘。 计分 比较两个答案时,画出较少圆圈的答案更好。如果是圆形领带,画出最少线条的答案会更好。如果在圆圈和线条上都打成平局,那么加分最少的答案会更好。 反规则 尽管规则列表是详尽无遗的,并且详细说明了您可以执行的所有操作,但并不是,仅因为我没有说您不能做某事并不意味着您可以。 您不能创建“任意”对象。您会发现某些构造会像在“任意”位置添加一个点并从那里进行工作一样。您不能在相交处以外的其他位置添加新点。 您无法复制半径。一些构造将涉及使用指南针将其设置为两点之间的半径,然后将其拾起并在其他位置绘制一个圆。你不能做这个。 您无法执行限制过程。所有构造必须采取有限数量的步骤。渐近逼近答案还不够好。 您不能绘制圆弧或圆的一部分,以避免在计分中将其计为圆。如果您希望在显示或解释您的答案时在视觉上使用圆弧,因为它们占用的空间较小,请继续,但它们会作为得分的圆。 工具类 您可以在GeoGebra上仔细考虑问题。只需转到形状选项卡。这三个规则等效于使用中心工具的点,线和圆。 举证责任 这是标准,但我要重申。如果对某个特定答案是否有效存在疑问,举证责任由答卷人证明其答案有效,而不是由公众证明答案无效。 在我的Code-Golf网站上这是做什么的? 这是原子代码高尔夫的一种形式,类似于证明高尔夫,尽管有点怪异的编程语言。当前在元数据上有+ 22 / -0共识,即允许这种事情。

8
我可以分开拼图吗?
编写一个程序或函数,使其接受一个矩形文本网格,其中每个单元格为an A或a B。所有A单元将形成简单连接的形状,即它们将全部正交连接而没有孔(对角相邻的字母不算作已连接)。同样,所有B单元将形成另一个简单连接的形状。网格将始终包含至少一个A和至少一个B。 想象一下,网格实际上是两个块状的薄塑料片,由A和B部分表示。如果将它们平放在桌子上,是否可以将两部分滑开同时将它们完全放在桌子上? 如果可以通过简单地将两个和形状分开来打印或返回真实值。如果不是,请打印或返回伪造的值。AB 例如,输入 AAA ABB AAA 是正确的,因为该BB部分可以向右滑动,将其与分开A: AAA A BB AAA 但是,输入 AAAA ABBA ABAA 是虚假的,因为无法将A和和B部分滑开而又不会重叠。 以字节为单位的最短代码获胜。如果需要,可以使用任意两个可分开打印的ASCII字符代替A和B。 真实示例(用空行分隔) BBB BAA BBB BA A B AB AB AAA BBB AAAAB ABBBB ABBA ABBA AAAA AAAAAABBBBBBBBB AABBBBBBBBBBBBB AAAAAAAAAABBBBB AABBBBBBBBBBBBB AAAAAAAAAAAAAAB AAAAAAAAAAAA ABABABABABAB BBBBBBBBBBBB BAAAAABB BBAAABBB BBBABBBB BBBABBBB BBBABBBB BBBBBBBB …

3
解决魔方
编写最短的程序,以在合理的时间范围内移动并解决Rubik的多维数据集(3 * 3 * 3)(例如,在您的计算机上最多5秒,而最多移动1000秒)。 输入的格式为: UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR (此特定输入表示已解决的多维数据集)。 前12个2个字符的字符串是UF,UR,... BL位置中的边(U =上,F =前,R =右,B =后,L =左,D =下),然后是下8个3个字符的字符串是UFR,URB,... DBR位置中的角。 输出应以这种格式给出一系列移动: D+ L2 U+ F+ D+ L+ D+ F+ U- F+ 其中D1或D +代表将D(下)面顺时针旋转90度,L2代表将L面旋转180度,U3或U-代表将U面逆时针旋转90度。 字母不区分大小写,空格是可选的。 …

5
i = 3 = 2
受无限系列视频的启发。 介绍 Pi定义为圆周与圆直径之比。但是如何定义一个圆呢?通常,圆被定义为到中心点的距离恒定的点(假设中心位于(0,0))。下一个问题是:我们如何定义距离?以下我们考虑距离的不同概念(由Lp-norms 引起): 给定一个范数(=测量长度的东西),我们可以很容易地构造一个距离(=两点之间的距离),如下所示: dist(A,B) := norm (A-B) 欧几里得范式由下式给出: norm((x,y)) = (x^2 + y^2)^(1/2) 这也称为L2范数。其他Lp范数是通过将2上面公式中的替换为1到无穷大之间的其他值来构造的: norm_p((x,y)) = (|x|^p + |y|^p)^(1/p) 这些不同规范的单位圆具有截然不同的形状: 挑战 给定一个p >= 1,计算Lp圆相对于- Lp范数的周长与直径之比,精度为四个有效数字。 测试用例 我们可以将其用于p,q与1 = 1/p + 1/q我们获得相同的比率Lp和Lq标准比率。此外,由于p = q = 2该比率最小,并且p = 1, q = infinity我们得到的比率为4,因此比率始终在pi和之间4。 p or q ratio 1 infinity 4 2 …

30
乌鸦与出租车
想象一下,行驶到一个点躺在一个远离水平英里,乙从当前位置英里远垂直。或者换句话说,从(0, 0)起点到终点(a, b)。您需要旅行多远?这似乎是一个简单的问题,但是答案取决于您问的是谁。如果你是一只乌鸦,你可以前往直线距离,行驶距离仅仅是欧氏距离来(a, b)。这是 sqrt(a^2 + b^2) 但是,如果您只是一个无聊的人,那么您真的不想走那么远,因此您需要乘出租车。大多数出租车都不会直线驶向您的目的地,因为他们通常会试图留在道路上。因此,您最终要行驶的实际距离是垂直距离和水平距离的总和。或公式为: abs(a) + abs(b) 这称为出租车距离。这张图片很好地展示了两者之间的区别: 要前往(6, 6),乌鸦只能在绿线上飞行,所以距离6 * sqrt(2)约为8.49。出租车可以走红色,蓝色或黄色的道路,但全部走12条路。 这引出了我要问的真正问题。如果一只乌鸦和一辆出租车都从起点离开(0, 0),然后行驶到终点(a, b),出租车的路程将持续多长时间?或者,用更多的数学术语来说, 给定二维向量,请确定向量的norm2与向量的norm1之间的差。 您必须编写最短的程序或函数才能回答此问题。您可以选择将“ a”和“ b”作为两个单独的输入,或作为两个项目的元组。您可以采用任何合理的格式进行输入和输出。如果差异是非整数,则必须至少精确到两位小数。 您始终可以假设'a'和'b'将是整数,并且它们都不都是0。(尽管它们中的任何一个都可能为零) 像往常一样,存在标准漏洞,并尝试使程序尽可能短(以字节计)。 我将对所有答案进行投票,该答案将说明代码的工作原理,并演示用于保存字节的任何绝妙技巧。 以下是一些示例,可用于测试您的代码: #input #output 3, 4 2 -3, 4 2 -3, -4 2 6, 6 3.51 42, 0 0 10, 10 5.86 3, 3 1.76 …

19
切比雪夫旋转
考虑一个规则的网格,其中每个单元格都有整数坐标。我们可以将单元格分组为(方形)“环”,其中每个环中的单元格与原点的切比雪夫距离(或棋盘距离)相同。您的任务是获取一个像元坐标,并将该像元在其环内逆时针旋转一个位置。这实现了以下映射: 因此,例如,如果输入是(3, -2)您应该输出(3, -1)。请注意,这(0, 0)是唯一应映射到其自身的输入。 规则 I / O格式相当灵活。您可以使用两个单独的数字,一对数字/列表/数组/元组,单个复数,包含两个数字的字符串等。 您可能会认为-128 < x,y < 128。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 (0, 0) => (0, 0) (1, 0) => (1, 1) (1, 1) => (0, 1) (0, 1) => (-1, 1) (-1, 1) => (-1, 0) (-1, 0) => (-1, -1) (-1, -1) …

14
厕纸之谜
今天,您需要解决一个非常实际的问题:您的厕纸卷上需要多少循环才能容纳一定数量的纸张?让我们看一些事实: 裸露卫生纸筒的直径为3.8厘米 一张卫生纸的长度为10厘米。 一张卫生纸的厚度为1mm。 第一次缠绕圆柱体之前,其周长为3.8 * pi(厘米)。每次在圆柱体上缠绕一张纸时,其半径都会增加.1,因此其周长会增加.2 * PI。使用此信息可以找出装入n张厕纸所需的循环次数。(注意:使用近似值Pi至少应与3.14159一样准确)。 测试用例: n = 1: 10 /(3.8 * pi)= .838循环 n = 2: (我们可以进行多少个完整循环?)1个完整循环= 3.8 * pi = 11.938。 (在第一个循环之后,我们还剩下多少?)20-11.938 = 8.062 (剩下的第二个循环产生多少?)8.062 /(4 * pi)= .642循环 答案:1.642次循环 n = 3: 第一个完整循环= 3.8 * pi = 11.938,第二个完整循环= 4 * pi = 12.566 …

18
直观地解释勾股定理
勾股定理的常见视觉解释如下: 正方形用来表示边长的平方,以及的面积a + b = c,就像毕达哥拉斯定理所说的那样。 这部分是您必须显示的。 你的任务 您将获得两个整数作为输入,表示整数a和b直角三角形(例如3, 4)。 然后,您将方块出长度a,b以及c走出的#人物。例如这里是3: ### ### ### 然后,将它们格式化为一个数学方程式,以解释特定的毕达哥拉斯三联体: ##### #### ##### ### #### ##### ### #### ##### ### + #### = ##### 请注意=和+符号在两边都留有空格,而所有内容都在底部。 你永远不会了解get值a和b使c非整。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 (一旦我有时间,就会有更多东西来,这些真的很难手工制作) 3, 4 ##### #### ##### ### #### ##### ### #### ##### ### + #### = ##### …

30
评估三角形的长宽比
给定三角形的三个边长,请使用以下公式评估其长宽比AR: 哪里 三角形越接近等边,则1其纵横比越接近。长宽比大于或等于1有效三角形。 输入项 输入的是三个实数正数,可以将其封装在列表中,也可以根据需要封装任何类似的数字。 无论输入三个边长的顺序如何,程序都必须输出相同的值。 这三个数字将始终是一个三角形的有效sidelengths(退化三角形像一个与sidelengths 1,1并且2将不给出作为输入)。当值变得非常接近简并三角形时,您不必担心浮点数不准确(例如,您的程序会division by 0因输入错误而接受[1, 1, 1.9999999999999999])。 输入可以通过STDIN,作为函数参数或任何类似参数给出。 产出 输出是大于或等于1您的语言可接受的标准精度的实数。 输出可以打印到STDOUT,从函数返回或类似的东西。 测试用例 Inputs Output 1 1 1 1 3 4 5 1.25 42 42 3.14 ≈ 6.9476 14 6 12 1.575 6 12 14 1.575 0.5 0.6 0.7 ≈ 1.09375 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

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.