Questions tagged «simulation»

对于涉及模拟的挑战。

16
模拟宇宙!
图灵完备语言的一个不错的特性是,它可以用来编写任何程序,甚至可以模拟整个宇宙。 您的工作就是做到这一点:编写一个模拟Universe的程序。 注意:尽管我毫不怀疑您将能够完成此任务,但如今我没有足够的业余时间来验证模拟中的所有10 90个粒子是否都按其实际应做的工作。因此,仅是为了简化测试和评估,如果您的Universe模拟器仅适用于单个起始粒子就足够了。为了使事情有趣,让我们假设这个粒子是最近发现的希格斯玻色子。 您的宇宙仅以一个中间约120 GeV的希格斯玻色子开始。为了不使输出太长,让我们使该Universe仅在10 -25秒处滴答,而不是其“常规时钟频率”为5.4×10 -44秒。 希格斯玻色子的衰变半衰期为1.6×10 -22秒,因此迟早会衰变,因此在模拟的每个滴答声中,衰变的可能性为0.0433%。您可以在此处检查它会衰减成什么。为了有一个集中的简化需求,我列出了您应该使用的分支比率: 运行模拟 在每次模拟时,希格斯玻色子都有0.0433%的衰减机会。如果发生这种情况,它将分解为具有列出的概率的以下粒子(您应该在输出中使用这些名称): 底夸克+底夸克(64.8%) 2 W玻色子(14.1%) 2加仑(8.82%) 头蛋白轻蛋白+头蛋白轻蛋白(7.04%) 夸克+夸克(3.27%) 2个玻色子(1.59%) 2个光子(0.223%) 1 Z玻色子+ 1光子(0.111%) 介子+反介子(0.0244%) 顶夸克+顶抗夸克(0.0216%) 总计为100%。 这些粒子中的一些会进一步衰减。 W玻色子:半衰期为10 -25秒,这意味着每个滴答声都有50%的机会分解为下列概率相等的下列之一: 正电子+中微子 反介子+中微子 Antitau Lepton +中微子 Z玻色子:半衰期为10 -25秒,这意味着在每个刻度上都有50%的机会分解为下列其中之一: 中微子+抗中微子(20.6%) 电子+正电子(3.4%) 介子+反介子(3.4%) 牛头顿+牛头顿(3.4%) 下夸克+下夸克(15.2%) 夸克+夸克(15.2%) 底夸克+底夸克(15.2%) 夸克+反夸克(11.8%) 夸克+夸克(11.8%) 顶夸克:半衰期为5×10 -25秒,这意味着在每个刻度上有12.95%的机会衰减为以下几率,并且概率相同: 玻色子+夸克 玻色子+夸克 W玻色子+底夸克 ...

10
小钱德勒很伤心。画他的云,使他振作起来
小钱德勒很伤心。画他的云使他振作起来。 注意:画云实际上不会使他振作起来。 圆可以定义为三元组(x,y,r),其中x是圆在笛卡尔平面上的x位置,是圆在笛卡尔平面y上的y位置以及圆r的半径。x并y可能是负面的。r永远是积极的。输入是以空格分隔的三元组形式的圆的列表。例如: 3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8 的3,1,1意思是“在与中心点的圆3,1与1个半径。3,2,1.5是指”在与中心点的圆3,2用1.5半径。 如果我们在图形上绘制输入的所有这些圆,则看起来像这样(我仅出于清晰起见添加了网格线和标签;它们不是必需的): 注意所有的圆是如何凝聚的。也就是说,它们全部重叠在一起,从而形成一个大的组,而没有其他的小圈子。输入保证是内聚的。 假设现在绘制一条绕这些圆形成的“边界”行进的线,而没有其他任何线。就像绘制所有圆组成的轮廓的边界一样。生成的云看起来像这样: 因此,仅通过在输入中绘制形成边界的圆弧来形成单一形状即可形成此云。换句话说,仅通过绘制不在另一个圆内的圆弧来形成云。您的程序将以上述形式接受输入,并输出显示结果云的图像。云的整体形状必须正确,但是比例,颜色,线条粗细以及在顶点处的外观取决于您。请注意,云必须是可见的,因此您不能拉出类似“此程序在白色背景上绘制白色云”,“此程序以无限小的比例绘制云”,“此程序以0绘制云”之类的内容。线宽”等。还请注意,边框的颜色必须与填充或背景的颜色不同。 另一个例子。输入: 1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7 输出: 如果云中存在“洞”,则也应绘制该洞。输入: 0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4 输出: 这是一条重要规则:您的程序必须仅绘制形成边框的线。这意味着您不能简单地完全绘制圆,然后用白色填充将圆绘制得稍小一些,因为该方法仍会绘制不形成边界的线,之后只会将其覆盖。该规则的目的是防止“绘制圆,然后用白色填充再次绘制圆”的实现或类似的方法。预计答案将在绘制之前实际计算出绘制对象的位置。 这是代码高尔夫球,因此最短的字符数获胜。

16
代码(迷你)高尔夫
给定一个迷你高尔夫球场的侧视图和挥杆的力量,确定球是否会使其进入洞中。 课程将采用以下格式: ____ ____ _ __/ \ / U \ __/ \ / \_ \_/ 球直接开始之前在左侧的第一块地上,直到它到达所述孔(一个大写如下过程的轮廓U下方的地面的当前电平)。如果到达孔,则输出真实值。挥杆的力量将是球的初始速度。每次迭代时,球都会移到右侧的下一个角色,然后根据现在的角色更改速度。如果速度0在孔之前达到或小于孔,则输出假值。 _ 降低速度 1 / 降低速度 5 \ 通过增加速度 4 可以选择用空格填充课程。摆幅的幂将始终为正整数。 您无需担心球的移动速度太快而无法进入洞,向后滚动或从山上跳跃/弹跳。 测试用例 Input: 27 ____ ____ _ __/ \ / U \ __/ \ / \_ \_/ Output: true ---------- Input: 26 ____ ____ ...

5
我会及时解决吗?
灵感来自此。 背景 在邪恶的农场主已决定烧毁你的麦田,以哄抬价格。为了确保完全销毁,他还把您的田地浸泡在汽油中。更不幸的是,当它着火时,您正巧在田野上行走,您必须迅速走出去才能生存。 挑战 给定一个包含小麦,火和您所在位置的田地,确定是否可以及时将其赶出田野。 一块田地由小麦(这里用表示.)和火(F)组成。在此,您的位置标有O。例如: ...F...F F....... ........ .F...... ....O... ...F.... ........ .F....F. 您每秒移动到任何相邻的单元(但不是对角线),并且每场火势都会蔓延到每个相邻的单元。如果您无法移至不会着火的牢房,您就会丧命。如果您不在野外就可以生存。让我们看看在此示例中发生了什么: ...F...F F....... ........ .F...... ....O... ...F.... ........ .F....F. ..FFF.FF FF.F...F FF...... FFF..... .F.F.O.. ..FFF... .F.F..F. FFF..FFF FFFFFFFF FFFFF.FF FFFF...F FFFF.... FF.FF.O. .FFFFFF. FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFF.FF FFFFF.FF FFFFFFFO FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ...

5
重力模拟器
声明 您会得到一系列落入2D网格的球的静止图像。这个网格被不可变和坚不可摧的墙壁包围着,因此所有动作都包含在其中。您的任务是确定重力完成所有工作后场景的状态是什么。 网格内的元素 - 落地,不会改变落球的方向。 \ 向右滑动,可将球向右(一)的位置更改。 / 左滑动,改变球向左一(1)位置的路径。 o 一个球。 规则 球掉了。 地板和滑梯都不会掉落。 如果球撞击滑梯,使其滑过墙壁(\#或#/),或穿过地板,则滑梯将充当地板。 当一个球击中另一个球时,它将变成一个球,但将其力量增加到两个球的总和。 新球(已加入)将继续照常运行。 当球不再移动时,将其替换为力量。 球的力量永远不会超过9。 输入项 网格将以字符串变量的形式给出,其名称以您选择的语言中最短的名称为准。默认情况下,我们将使用它a作为输入。输入样本,与收到的完全一样: ##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ #\n# /#\n########## 对于生成的随机网格,请使用https://repl.it/B1j3/2。请改用我生成的页面(没有广告,没有废话,只有输入和输出) 注意换行符为\n。将输入打印到屏幕上(挑战不是必需的)将显示如下内容。尽管我在安全空间旁边放置了四个难题。 ########## ########## ########## ########## # \ # # o -/# # ...

14
用火杀死它
免责声明:这个问题中讲的故事完全是虚构的,仅出于介绍目的而发明。 我是一个邪恶的农民,为了提高我所在地区的小麦价格,我决定烧掉我周围所有农民的田地。我真的很想看到田野起火(这样我就可以用邪恶的笑容和欢乐地揉搓我的手),但是我也不想被观察到,所以我需要您模拟田野为我焚化。 你的任务: 编写一个程序或函数,将某个字段作为输入,并返回其燃烧的阶段,直到整个字段变成灰烬为止。着火的特定区域用代表火焰强度的整数表示。火从“ 1”开始,然后继续前进到“ 2”,然后是“ 3”,依此类推。一旦大火达到“ 4”,它将着火的任何直接(非对角线)相邻区域都着火。一旦达到“ 8”,它将在下一次迭代中耗尽,并变成灰烬,以“ A”表示。当尚未被火触及的区域时,以“ 0”表示。例如,如果该字段如下所示: 100 000 您的程序应输出以下内容: 100 000 200 000 300 000 410 100 520 200 630 300 741 410 852 520 A63 630 A74 741 A85 852 AA6 A63 AA7 A74 AA8 A85 AAA AA6 AAA AA7 AAA AA8 AAA AAA ...

9
火灾传播模拟器
假设我们有一个像这样的矩阵: 11111 12221 12321 12221 11111 该矩阵代表地形,每个像元代表地形的一部分。每个单元格中的数字表示根据地形的可燃性需要完全燃烧地形的时间(以分钟为单位,如果需要测量单位的话)。如果在任意给定位置(单元)开始起火,则该单元需要先完全燃烧,然后再传播到相邻单元(仅水平和垂直,而不是对角线)。因此,如果在中心位置起火,则火灾需要: 11111 11111 11111 11011 10001 00000 12221 3 m. 12221 2 m. 12021 1 m. 11011 1 m. 00000 1 m. 00000 12321 -----> 12021 -----> 10001 -----> 00000 -----> 00000 -----> 00000 12221 12221 12021 11011 00000 00000 11111 11111 11111 11011 ...

3
救命,我被困在一个无限的工厂里!
Zachtronics游戏Infinifactory大致激发了这一挑战。 您将获得由表示的矩形输送机网格的俯视图>v<^。可能有一些没有传送带的小室,以空格表示。这是一个例子: > <vv < v ^ >v v >v^^>vv^ ^>^ v > v<v >> >v v<^ 此设置隐含无限数量的空格。 此外,还给出了矩形货物的尺寸,该货物放在网格左上角的传送带上。您的任务是弄清楚货物是否曾经停下来,或者最终是否会成环运动。 当然,货物可能会一次覆盖多个输送机,因此以下是在每个步骤中确定货物方向的规则: 对面的传送带互相抵消。因此,如果3x2货物覆盖以下任何补丁(为清晰起见,用连字符和管道勾勒出轮廓),结果将是相同的: +---+ +---+ +---+ |>>^| | ^| |v^^| |^<<| |^ | |^^v| +---+ +---+ +---+ 这些也是一样: +---+ +---+ +---+ |v^<| | | |><>| |>>>| |>> | |>><| +---+ +---+ +---+ ...

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 

11
最大化平方差
考虑从1到的整数值的置换N。例如此示例N = 4: [1, 3, 4, 2] 我们将认为此列表是循环的,因此1和2被视为相邻列表。我们可以为这样的列表计算的一个量是相邻值的总平方差: (1-3)² + (3-4)² + (4-2)² + (2-1)² = 10 给定正整数,您的任务是找到一个最大化此数量的排列N。在N = 4上面的例子中不是最佳的(实际上,这是最小的)。18通过以下排列(以及其他几个排列),我们可以实现的总平方差: [1, 4, 2, 3] 您的算法必须在(的N)多项式时间内运行。特别是,您不能简单地计算所有排列的总平方差。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输出可以采用任何方便,明确,平坦的列表或字符串格式。您可以选择从与返回值的列表0,以N-1代替1向N。 适用标准代码高尔夫球规则。 测试数据 这个问题有一个很好的分析解决方案。例如,所有有效的解决方案N = 10均等效于以下列表(直至循环移位和反转): [7, 5, 6, 4, 8, 2, 10, 1, 9, 3] 我不想透露过多的信息(尽管足以找出模式),因此无需给出更多示例,您可以检查您的结果是否具有给定的总平方差N: N Total squared difference 1 0 2 ...
19 code-golf  array-manipulation  permutations  restricted-complexity  code-golf  geometry  grid  code-golf  string  sorting  code-golf  simulation  code-golf  string  code-golf  arithmetic  code-golf  sorting  code-golf  string  code-golf  sorting  code-golf  interpreter  code-golf  number  kolmogorov-complexity  natural-language  conversion  code-golf  random  internet  code-golf  board-game  code-golf  number  sequence  code-golf  math  number  code-challenge  image-processing  classification  test-battery  code-golf  ascii-art  code-golf  tips  code-golf  arithmetic  code-golf  tips  code-golf  tips  javascript  code-golf  array-manipulation  code-golf  ascii-art  code-golf  string  binary  code-golf  arithmetic  linear-algebra  matrix  code-golf  sequence  code-golf  math  number  arithmetic  code-golf  primes  code-golf  math  code-golf  array-manipulation  counting  code-golf  arithmetic  code-golf  quine  code-generation  polyglot  code-golf  math  kolmogorov-complexity  trigonometry  code-golf  string  encryption 

13
谢尔宾斯基层
首先,/\您可以通过在下面添加一条线来创建类似于Sierpinski三角形的图案,从而... 任何松散的分支/或\再次分裂为两个分支:/\。 分支的任何碰撞都将\/死,其下无任何东西(只有空格)。 重复这些规则将产生 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ etc... (ViHart的启发) 编写一个程序或函数,该程序或函数接受一个正整数N,并将此模式的前N行打印到stdout,且前导或尾随空格不超过所需数量。 例如,如果输入是1输出,则必须为 /\ 如果输入是2输出,则必须为 /\ /\/\ 如果输入是8输出,则必须为 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ /\ /\ /\ /\ /\/\/\/\/\/\/\/\ 等等。 字节最少的代码获胜。

4
森林-一个模拟的生态系统
注意 这个问题来自这个reddit线程(剧透警报!),我已经对其进行了调整以使其适合本网站的格式。所有功劳归给reddit用户“ Coder_d00d”。 在这个问题中,我们将模拟一个森林。 对于这个模拟森林,我们将处理3个方面。 树木可以是幼树,树木或老树。 伐木工人(他砍倒树木,吃午饭,去熔岩尝试) 熊(他虐待闻起来像薄煎饼的伐木工人) 警告:这些规则很可能并不完美。请将其作为准则,如果您需要进行一些细微调整(已指出产卵率是一个问题,请参见kuroi neko的答案作为示例)。 时间周期: 模拟将按月进行模拟。您将通过“打勾”及时前进。每个“刻度”代表一个月。每12个“滴答声”代表一年。我们的森林将不断变化,并且将不断变化。我们将记录森林的进度并分析其发生的情况。 森林: 森林将是一个二维森林。我们将需要输入N来表示N×N大小的网格中森林的大小。在每个位置都可以容纳树木,熊或伐木工人。它们可以占据相同的位置,但是当它们占据相同的位置时,经常会发生事件。 我们的森林将根据大小随机生成。例如,如果您的N值为10,则将有10 x 10的森林和100个斑点。 10%的森林将在10个随机地点举行伐木工人。(使用我们的100个现货森林,应该是10个伐木工人) 50%的森林将在任意位置保留树木(树木可以是3种中的一种,并且将从“树木”的中间一种开始)。 2%的森林将容纳熊。 如何获得林的大小取决于您(从stdin,文件中读取或对其进行硬编码)。我建议保持N等于5或更高。小森林没什么好玩的。 大事记: 在模拟过程中将发生事件。这些事件是根据一些逻辑发生的,我将在下面进行解释。我将在以下每个事件中对森林的3个元素进行描述。 这些事件首先遵循树木的顺序,其次是伐木工人,最后是熊。 树木: 每个月,一棵树都有10%的机会生成一个新的“树苗”。在与树相邻的随机开放空间中,您有10%的机会创建“树苗”。 例如,森林中间的一棵树在其周围还有其他八个点。其中之一(如果为空)将成为“树苗”。 存在12个月后,“树苗”将升级为“树”。“树苗”在成熟为“树”之前,无法生成其他树。 一旦“树苗”变成一棵树,它就可以生成其他新的“树苗”。 当一棵“树”已经存在了120个月(10年)时,它将变成“老树”。 老树有20%的几率生成一个新的“树苗”,而不是10%。 如果树或老树没有开放的相邻点,则不会产生任何新的树。 伐木工人: 伐木工人砍伐树木,跳跃和跳跃,喜欢压野花。 伐木工人每个月都会流浪。它们最多可移动3次到任意方向相邻的随机选择的点。因此,例如,网格中间的伐木工人有8个位置可以移动。他将漫步到一个随机地点。然后再说一次。最后第三次。注意:这可以是任何地点(这样它们就可以走进熊,从而造成大槌)。 伐木工人移动时,如果遇到一棵树(不是树苗),他将停下脚步,并停止在该月的游荡。然后,他将采伐树木以砍伐木材。移除树。获得1块木材。 伐木工人不会收获“树苗”。 伐木工人也收获老树。老树值得两块木材。 木材追踪: 每12个月将伐木量与森林中伐木工人的数量进行比较。 如果收集的木材等于或超过森林中伐木工人的数量,则会雇用许多新的伐木工人,并在森林中随机产卵。 计算出要雇用的伐木工人的数量: floor(lumber_collected / number_of_lumberjacks) 但是,如果12个月后收集的木材数量低于伐木工人的数量,则放开伐木工人以节省金钱,并从森林中移除1名随机伐木工人。请注意,您绝不会将伐木工人的劳动力减少到0以下。 熊: 熊像伐木工人一样在森林中漫步。但是,熊最多可以漫游5个空间,而不是3个空间。 如果熊碰到伐木工人,他将在一个月内停止游荡。(例如,在2次移动之后,熊与一名伐木工人一起降落在一个空间上,他本月将不再进行任何移动) 伐木工人闻起来像薄煎饼。熊爱煎饼。因此,不幸的是,熊会ma伤并伤害伐木工人。伐木工人将从森林中移走(他将在星期三回家购物,并用黄油烤饼烤茶)。 ...

3
蜂箱的奇特生活
研究人员最近发现了一个有趣的蜂群,它生活在无限的蜂窝区域中: 每个牢房可以容纳一只蜜蜂或不能容纳一只蜜蜂。实际上,这些生物的生活似乎有点……混乱。可以计算出一个殖民地总是以以下模式开头: (蜂绘制由 灵光布泰 上维基共享资源。这个蜂窝和蜜蜂图像从而被下发布的 CC-BY-SA。 牢骚) 之后,蜜蜂的生命周期分为几代。每一代老蜜蜂死亡而新的蜜蜂孵化,这主要取决于它们细胞的邻居: 如果一只蜜蜂的邻居少于两个,它会因孤独而死亡。 如果一只蜜蜂有三个以上的邻居,则会因拥挤而死亡。 如果一个小区在相邻小区中有两只,三只或四只活蜂,那么下一代会在那里孵化出一只新蜜蜂。 垂死的蜜蜂直到世代末期才死亡,因此它们仍会影响可能会孵化下一代的周围细胞。 现在我们知道了这样一个殖民地的工作方式,我们可以通过任何数量的世代对其进行模拟。 输入项 输入是标准输入给定的单个数字N,以换行符终止。0≤ Ñ ≤150。这是代模拟的数量。 输出量 输出是单个数字,在标准输出上,并且可以选择跟在一个换行符之后,该换行符表示N 代后的活蜂数量。 标准错误的附加输出将被忽略。 样本输入 0 5 42 100 样本输出 6 44 1029 5296 获奖条件 最短的代码胜出,这是高尔夫界的惯例。如果出现平局,则以较早的解决方案为准。 测试用例 有两个测试脚本,包含相同的测试用例: 重击 电源外壳 在这两种情况下都调用:<test script> <my program> [arguments]例如./test ruby beehive.rb或./test.ps1 ./beehive.exe。 我知道只有22个测试,而不是151个(主要是因为解决方案通常很慢)。请避免嵌入确切的测试用例,而不是解决任务。这些脚本可以方便您测试更改是否仍导致程序正常运行。不是您可以使代码适应特定的测试用例。 另一个注意 该任务是2011-W24期间在我的大学举行的高尔夫比赛的一部分。参赛者的成绩和语言如下: 336 – ...

2
实现Boids算法
介绍 本类鸟群算法是自发行为一组在一个相对简单的演示。正如其创建者Craig Reynolds所述,它具有三个主要规则: 基本的植绒模型由三个简单的转向行为组成,这些行为描述了单个波德人如何根据其附近的植群的位置和速度进行操纵: 分隔:避免拥挤当地羊群。 对齐:对当地flockmates的平均航向转向。 凝聚力:转向向当地flockmates的平均位置移动。 每个辫子都可以直接访问整个场景的几何描述,但是植绒要求它仅对自身周围某个特定区域内的植绒动物做出反应。邻域的特征是距离(从主体的中心开始测量)和角度(从主体的飞行方向开始测量)。该本地社区之外的队友将被忽略。可以将邻域视为感知受限的模型(例如在浑浊的水中的鱼),但将其视为定义了一群人影响波伊德转向的区域可能更正确。 我在解释事物时并不完美,因此我强烈建议您查看原始资料。他的网站上还有一些超级有用的图片。 挑战 给定主体(模拟实体)的数量和帧的数量,输出模拟的动画。 Boid应该呈现为红色圆圈,并在圆圈内部显示一条线,指示其标题,这是Boid指向的方向: 每个波蒂的角度(如雷诺所描述的)应为整300度。(不是360) 每个boid的起始航向和位置以及位置均应是均匀随机的(但要播种,以便仍能确定输出)。 如果boid的半径为1,则邻居的半径应为3。 伯德的数量从2到20不等。 帧数为1-5000 动画的播放时间至少应为每帧10毫秒,最长应为boid数量的1秒。(2个波西德=每帧最大2秒,3个波西德=每帧最大3秒,等等) 输出动画应至少为5个boid半径乘以5个boid半径,乘以boid数量的一半。因此,两个boid的最小大小将是10 boid半径乘以10 boid半径,三个boid的最小大小将是15 boid半径乘以15 boid半径,等等。 每个投标的半径必须至少为5个像素,最大为50个像素。 需要限制每个Boid的速度,以使其在一帧中的移动幅度不超过其半径的1/5。 需要确定输出,以便如果多次运行相同的输入将产生相同的输出。 如果辫子到达边界,则应回绕到另一侧。同样,每个投标附近的区域也应环绕边界。 算法规则 在这种情况下,每个Boid周围都有一个跨度为300度的扇形,以Boid的航向为中心。这个“邻居”中的任何其他小伙子都被认为是“邻居”,或(用雷诺兹的术语称)“队友”。 每个BOID都应调整其航向以避免碰撞,并保持一个BOID半径与其邻居的舒适距离。(这是算法的“分离”方面。一个波德半径可能会被绕过,但应该像橡皮筋一样,重新卡入到位。) 每个boid都应另外调整其航向,使其更接近其附近其他boid的平均航向,只要它不干扰第一条规则即可。(这是算法的“对齐”方面) 只要不引起碰撞或不会显着干扰第二条规则,每个船长都应将自己转向其队友的平均位置。 在有关该主题的论文中,他解释如下: 为了建立模拟群,我们从支持几何飞行的布依德模型开始。我们添加了与避免碰撞的相反力量和加入羊群的冲动相对应的行为。简要地描述为规则,并按优先级从高到低的顺序,导致模拟植绒的行为为: 避免碰撞:避免与附近的队友发生碰撞 速度匹配:尝试将速度与附近的队友匹配 羊群居中:尝试靠近附近的羊群 运动的更详细描述: Boids算法的标准实现通常会对每个规则进行计算,然后将其合并在一起。 对于第一个规则,Boid会遍历其邻域内的相邻Boid列表,并且如果其自身与邻居之间的距离小于某个值,则将Boid推离其邻居的矢量应用于Boid的航向。 对于第二条规则,Boid计算其邻居的平均航向,并将当前航向与平均航向之间的差值的一小部分(在此挑战中,我们将使用1/10)添加到当前航向。 对于第三条规则(也是最后一条规则),该boid将其邻居的位置平均,然后计算指向该位置的向量。此向量乘以比规则2所用的数字还要小的数字(对于此挑战,将使用1/50)并将其应用于航向。 然后将标本朝其方向移动 这是Boids算法的有用伪代码实现。 输入和输出示例 输入: 5、190(5个辫子,190帧) 输出: 获奖标准 这是代码高尔夫球,因此以字节为单位的最小解决方案获胜。

30
消失的元素
给定一个字符串S和一个索引列表X,S通过删除每个索引处的元素来进行修改,并将S结果作为的新值S。 例如,给定S = 'codegolf'和X = [1, 4, 4, 0, 2], 0 1 2 3 4 5 6 7 | c o d e g o l f | Remove 1 c d e g o l f | Remove 4 c d e g l f | Remove 4 c ...
17 code-golf  string  array-manipulation  code-golf  string  ascii-art  code-golf  number  sequence  pi  code-golf  number  array-manipulation  code-golf  string  ascii-art  code-golf  math  number  game  code-golf  math  sequence  polynomials  recursion  code-golf  math  number  sequence  number-theory  code-golf  permutations  balanced-string  code-golf  string  ascii-art  integer  code-golf  decision-problem  hexagonal-grid  code-golf  ascii-art  kolmogorov-complexity  code-golf  number  code-golf  matrix  binary-matrix  code-golf  math  statistics  code-golf  string  polyglot  code-golf  random  lost  code-golf  date  path-finding  code-golf  string  code-golf  math  number  arithmetic  number-theory  code-golf  tetris  binary-matrix  code-golf  array-manipulation  sorting  code-golf  number  code-golf  array-manipulation  rubiks-cube  cubically  code-golf  grid  optimization  code-golf  math  function  code-golf  string  quine  code-golf  ascii-art  grid  code-golf  decision-problem  grid  simulation  code-golf  math  sequence  code-golf  path-finding  code-golf  ascii-art  grid  simulation  code-golf  number  whitespace  code-golf  sequence  code-golf  sequence  code-golf  sequence  integer  code-golf  math  game  code-golf  internet  stack-exchange-api  code-golf  sequence  code-golf  internet  stack-exchange-api  code-golf  math  factoring  code-challenge  sequence  polyglot  rosetta-stone  code-golf  string  browser  code-golf  date  code-golf  base-conversion  code-challenge  cops-and-robbers  hello-world  code-golf  cops-and-robbers  hello-world 

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.