Questions tagged «simulation»

对于涉及模拟的挑战。

8
分析地震
背景 在随机的Domino自动机是一个地震玩具模型,通过元胞自动机的启发。在此挑战中,您的任务是模拟该模型的简化版本,并从中收集数据。 自动机定义在位阵列上A,k位阵列表示可能发生地震的断层线。数组在其边界处环绕。条件A[i] = 0意味着位置i被放松,并且A[i] = 1手段,它的兴奋,或包含存储的能量。在每个时间步长,均一地随机选择阵列的一个位置。如果该位置放松,它将变得兴奋(将势能添加到系统中)。如果该位置已被激发,则将引发地震,并且所选位置和与其连接的所有激发位置将再次放松。放松的激发位置数就是地震的幅度。 例 考虑数组 100101110111 长度为12。如果随机过程从左侧选择第二个位,则数组将更新为 110101110111 ^ 由于所选位(标有^)为0。如果我们接下来从左边选择第四位,它是一个隔离的1,则触发震级为1的地震,并且该位0再次设置为: 110001110111 ^ 接下来,我们可以从右边选择第二个位,这将触发5级地震: 000001110000 ^ 请注意,1与所选择的“群集”相同的所有“ s”都是地震的一部分,并且数组在边界处环绕。 任务 您应将两个正整数k和用作输入t,您的任务是模拟随机的多米诺自动机的t时间步长,从k所有0s 的初始长度数组开始。您的输出应L为k整数列表,其中L[i](基于1的索引)包含i模拟过程中发生的震级数。您可以从输出中删除尾随零。 对于输入k = 15和t = 1000,一些代表性的输出是 [117, 97, 45, 26, 10, 5, 3, 1, 3, 0, 0, 0, 0, 0, 0] [135, 91, 58, 21, 8, 2, …

7
预测男人会去哪里
一个人住在(0, 0)一个城镇的西北角,高度h和宽度都很高w。他每天都从他的家走到边境(?, w)或边境(h, ?)。在以下示例中,该名男子前往(3, 3)今天。 (0, 0) +--+ + + . (0, 4) | + +--+--+ . | + + + + . | (3, 0) . . . . . (3, 4) 这个人在每个点上都记录了一点(+在上面的示例中)。每次到达某个点时,如果钻头在哪里,他就会向东1走,否则就向南。他离开后,位被翻转了。例如: Day 1: 1--0 1 1 Day 2: 0 1 1 1 Day 3: 1--1--1--1-- Day 4: …

6
球将降落在哪里?
给定一个字符串,其中第一行包含空格和一个句点(.,即“球”),然后是包含空格,正斜杠(/)和反斜杠(\)的行,请确定从起始位置掉落后球将落入的列。每个/将其向左移动一列,然后\将其向右移动一列。 样品输入 . / \ \ / / \ \/ \ \ /\ \ /\ \ \ / 样品输出 球从第5列开始,击中第/3行,然后在\第5到7 行中击中三个,最终位置为: 7 请注意,列是1索引的,主要是为了与文本编辑器约定保持一致。 边缘情况 如果球/在第一列中击中a ,则它永远卡在不存在的列0中。您的程序应通过打印正确处理此问题0。 如果球撞到\/图案的任一侧,则结果不确定。您的程序被允许以无输出终止,无限循环或打印错误消息(我的解决方案显示-1),但不得打印任何被视为有效输出的内容。 如果球以一定的\\方式击中左斜线,则应该直接在右斜线下方而不是右斜线结束。我最初设想的解决方案很容易出错,所以不要走这条路! 有可能会或可能不会是以后的空间.或最后/或\每行。您的程序不应依赖此类可用的填充。类似地,第一行之后可能有也可能没有任何行。 您可以假设第一行将有零个或多个空格,而正好为一个.。随后的行(如果有)将具有零个或多个空格和零个或多个斜杠。 实施细节 您的程序可以在方便时从文件(指定为命令行参数)中读取或从标准输入中读取。 您的程序必须将单个数字输出到标准输出。(是的,可以使用尾随的换行符。是的,该数字可能超过一位。) 测试用例 输入: . 输出: 1 注意这里的输入正好是一个字节。这是您应该能够处理的最小情况。 输入: . \ \ \ \ 输出: 6 请注意,这些斜杠后没有空格。 输入: . …

8
模拟模型神经元
一个Izhikevich神经元是一个简单但非常有效的生物神经元,专为在离散时步仿真使用的模型。在这个高尔夫挑战赛中,您将实现此模型。 参量 与生理上精确的模型的数十个参数相比,该模型仅涉及组织为2个微分方程的7个变量。 v和u是神经元的两个状态变量。在此,v“快速”变量代表随着时间的细胞电势,并且u“缓慢”变量代表某些膜的性质。v变量是最重要的变量,因为这是模拟的输出。 a,b,c,和d被固定描述该神经元的特性的常数。根据所需的行为,不同类型的神经元具有不同的常数。值得注意的c是,复位电位是细胞在加标后返回的膜电位。 I代表输入到神经元的电流。在网络仿真中,这会随着时间而变化,但是出于我们的目的,我们将其I视为固定常数。 该模型 该模型具有非常简单的伪代码。首先,我们采用的常量值abcd并使用它们来初始化v和u: v = c u = b * c 接下来,我们将根据需要遍历仿真代码多次。每次迭代代表1毫秒的时间。 for 1..t: if v >= 30: # reset after a spike v = c u = u + d v += 0.04*v^2 + 5*v + 140 - u + I u += a …

2
国际象棋德比
与国际象棋和拆除德比相比,极性可能更大。您可能会认为,直到今天,没有一个人喜欢另一个人。 规则 起始位置是标准棋盘: RNBQKBNR PPPPPPPP PPPPPPPP RNBQKBNR 看起来已经足够正常了,直到您发现这是每一场比赛的最后一场比赛: 每一回合,棋盘上的每个棋子都会随机做出*选择的有效举动(使用其标准举动规则)。但是,棋子的移动顺序每轮都是随机的。 即使与它的颜色相同,一块也可以捕获任何一块,甚至是国王。 兵可以捕获FORWARD以及对角线。而且,像平常一样,如果在其前面有一个空白空间,则典当可以在其第一步移动两个空间(它们也可以捕捉到该空间)。此外,典当可以提升为除典当。 获胜者是最后一站。但是,如果经过1000转之后,剩下的筹码不止一个,那么其余所有筹码都是赢家。 没有En Passants,Checks,Castle等 输出量 每次转弯后,输出转弯编号以及板子的外观。杀死一块后,将其从板上移除。在第一回合之后,棋盘可能看起来像这样: 1. K RBQ N BR NP P P PP P P R PP BPN PNP K R Q 经过1000次移动后,木板可能如下所示: 1000. Q K P N R R B N Q 游戏结束。 或者,在556转动板后,如下所示: 556。 [R 游戏到此结束。 …

3
数字种族
您应该编写一个程序或函数,给出不同的一位正整数的开始顺序,并以轨迹的长度作为输入输出,或者返回数字的结束顺序。 输入[5,1,2,6,7] and 14定义以下种族: -------------- 76215 -> -------------- 比赛规则 赛道回绕,数字可以走多圈。 步骤的顺序是循环的,并且基于起始位置。在我们的例子中5 1 2 6 7 5 1 2 ...。 同一位置不能有多个数字。 每个数字digit_value每步都有一个单元格速度。超过一个数字或一个连续的数字块需要多花一步。如果数字没有所需的速度,它将在(一个或多个)数字之前停止。例子: [41 ] => [ 1 4 ] 4 overtakes 1 [2 1 ] => [ 21 ] 2 can only move 1 as it can't move 3 to overtake …

10
模拟两个生物之间的战斗
欢迎,勇敢的代码高尔夫球手!今天,您将站在妖精和精灵之间的激烈战斗中! goblin attacks elf! elf dodges! elf attacks goblin! elf hits goblin for 13 damage! goblin has 37 health left. goblin attacks elf! goblin hits elf for 1 damage! elf has 49 health left. elf attacks goblin! elf hits goblin for 19 damage! goblin has 18 health left. goblin attacks …

3
标记基于堆栈的语言
我一直在研究另一种称为Stackgoat的基于堆栈的高尔夫语言。在这个挑战中,您将为Stackgoat(或实际上是任何通用的基于堆栈的语言)编写Tokenizer。 例子 "PPCG"23+ ["PPCG", '23', '+'] 'a "bc" + ['"a"', '"bc"', '+'] 12 34+-"abc\"de'fg\\" ['12', '34', '+', '-', '"abc\"de'fg\\"'] "foo ['"foo"'] (empty input) [] ' "" ['" "', '""'] 规格 您需要处理的三种类型是: 弦乐,什么内"" 数字,任何数字序列 运算符,除空格外的任何其他单个字符 除非将其留在字符串中或将两个数字分隔开,否则实际上将忽略空格。 字符串/字符规范: 字符串以分隔",当\遇到时,下一个字符应转义。 字符前面加a ',后面的字符'应转换为字符串文字。'a->"a" ' 后面总会有一个角色 右引号应自动插入 规则: 没有形式eval允许 输入输出: 可以通过STDIN,函数参数或您的语言等效输入。 输出应为数组或您的语言最接近的等效数组。
15 code-golf  parsing  code-golf  hexagonal-grid  code-golf  string  code-golf  string  code-golf  combinatorics  code-golf  ascii-art  code-golf  string  game  counting  code-golf  arithmetic  complex-numbers  code-golf  string  code-golf  decision-problem  hexagonal-grid  code-golf  string  sequence  code-golf  number  arithmetic  code-golf  ascii-art  code-golf  ascii-art  code-golf  string  arithmetic  code-golf  number  simulation  code-golf  number  arithmetic  code-golf  string  sequence  unicode  code-golf  string  ascii-art  balanced-string  code-golf  number  clock  code-golf  ascii-art  number  code-golf  math  number  sequence  code-golf  string  ascii-art  balanced-string  code-golf  math  string  popularity-contest  graphical-output  image-processing  code-golf  string  permutations  code-golf  string  code-golf  random  code-golf  string  cryptography  palindrome  code-golf  chess  code-golf  math  array-manipulation  topology  code-golf  math  sequence  code-golf  keyboard  classification  code-golf  string  sequence  code-golf  natural-language  code-golf  math  number  sequence  sorting  code-golf  sequence  combinatorics  grid  tic-tac-toe  code-golf  geometry  code-golf  number  restricted-source  new-years  expression-building 

1
给我打些高尔夫
如果您以前从未打过高尔夫球,这里是我在此问题中使用的高尔夫相关术语的列表 击球,也称为击球:每次击球,即为击球。 洞:高尔夫球场被分成多个洞,目标是以尽可能少的击球次数将球从一个指定位置打到另一个位置。 T恤:从哪里开始打洞。 固定或国旗:完成孔的位置 球道,粗糙,水和果岭:高尔夫球场上的功能会影响人们在现实生活中的打球方式。(下面说明它们如何影响程序) 我明天要去打高尔夫球,我发现有时候我很难弄清楚该用哪个球杆打一定的码数。所以我决定写下我的球杆及其杆数。 第一个假设:所有孔都位于发球盒的北部。 所有这些码数都测量了球向北移动多远的可能性。球将在为每个球杆(包括两端)指定的边界之间移动一个随机整数距离。 作为一名高水平的高尔夫球手,我的投篮没有任何水平移动。这意味着我所有的投篮都直接在旗线上成一直线。 Club # Club Yardage 1 Driver 300-330 2 3-Wood 270-299 3 5-Wood 240-269 4 3-Iron 220-239 5 4-Iron 200-219 6 5-Iron 180-199 7 6-Iron 160-179 8 7-Iron 140-159 9 8-Iron 120-139 10 9-Iron 100-119 11 P-Wedge 80-99 12 S-Wedge 50-79 …

5
高尔夫代码:熄灯!
传递所有可能性的最短代码获胜 已经开发出许多基于网格的游戏,它们以打开的灯光网格开​​始。按下任何一个灯都会导致该灯和与其相邻的四个灯切换。切换灯光时,灯光是关闭还是打开,这取决于它是最初打开还是关闭。目标是按顺序击中灯光,导致所有灯光最后都关闭。 “ X”表示已打开的灯。“ O”表示关闭的灯。“ P”代表被按下的那个正方形。 XOO XOO XOX XOX XXX XOX XOP -> XXO -> OPO -> XOX OOX OOX POO XXO XOO Intial Grid Press 1 Press 2 Press 3 Ending Grid 输入可以直接从作为参数传递的文件或标准输入中获取。输入的第一行将包含x(1 <= x <= 20),即灯光网格的大小,即x乘x。第二行将包含y(0 <= y <=(x * 3)2),即最初点亮的灯数。接下来的y行包含网格上照亮的灯光的坐标,格式为“行列”。应该重新关闭已经打开的灯(之前已切换过)。下一行将包含z,即按下的灯光数量。最终z 行以“行列”的格式包含按其按下顺序的按下的灯光的坐标。 没有输入将是不正确的。所有数字都将在网格的给定边界内。 切换所有灯光后,输出将是最后一个网格。它应该是一个n × n的网格。对于每个点亮的区域,均应使用大写字母“ X”。对于每个灯光都熄灭的区域,应使用大写字母“ …

4
一次小小的冒险
文字冒险游戏有一个固定的公式;有一个由一系列房间/空间组成的世界,玩家可以在这些房间中移动,并且房间中有一些物品。物品可以由玩家拿起,放下,用于进入其他房间(例如钥匙),并与其他物品组合以制成新物品。 挑战 您面临的挑战是以最小的字节(代码高尔夫球)编写文本冒险运行时。为了简单起见,您所要做的就是根据给定的一系列命令是否会赢得给定的游戏输出真值或假值(无交互性,无人类友好输出等)。 游戏规则 世界总是由具有10个连通房间的走廊组成。每个房间都需要一个钥匙才能进入,但是可以在没有钥匙的情况下随时退出(所以我想这是一种闩锁)。 玩家从房间0开始,如果进入房间9,则获胜(一旦进入房间9,他们可以做任何自己想做的事,包括去另一个房间,他们仍然会赢); 每个房间可以容纳任意数量的物品; 最多有26个项目(称为AZ),并且世界上不会再出现任何项目。 玩家可以从当前房间中拾取物品并将其放入库存中(他们也可以将物品从其库存中放入当前房间中); 玩家的最大存货数量是有限的,并将提供等级细节; 在游戏开始时,玩家的库存总是空的。 一个房间中的最大物品数没有限制(尽管隐式限制为26,因为这是物品总数); 项目AJ是可用于钥匙进入房间0-9(即玩家可以到另一个房间0,如果他们有项目A,室温1,如果他们有B,等等。注意,密钥不被要求离开房间,并且玩家开始在房间0中,因此仅当玩家想返回房间0 时才需要键“ A” ; 可以合并玩家库存中的物品以创建新物品(将在玩家库存中创建)-允许的组合将提供等级详细信息; 合并项目将消耗原始项目(即,如果其中一个项目是密钥,将无法再使用该密钥); 如果玩家尝试做一些不可能的事情(例如,拿走当前房间中没有的物品/丢掉他们没有的物品/组合他们没有的物品/进入没有钥匙的房间)因为),什么也没有发生,所以他们可以继续; 玩家将永远不会胡说八道(例如去房间11)。 因此,一个简单的游戏可能看起来像这样: v +---+---+---+---+---+---+---+---+---+---+ | C | | J | | | | | | | | +---+---+---+---+---+---+---+---+---+---+ | CORRIDOR | +---------------------------------------+ Inventory capacity: 99 房间0包含项目“ C”(这是房间2的钥匙)。2号房间包含项目“ J”(这是9号房间的钥匙)。玩家可以通过拾取C,移至房间2,拾取J,然后移至房间9,赢得比赛。 一个更复杂的游戏可能是: v +---+---+---+---+---+---+---+---+---+---+ …

9
模拟旋转板
介绍 您正在玩一个匹配的游戏,在该游戏中,硬币由于重力而插入顶部,然后跌至底部(位于顶部硬币上)。 所以这 O <- inserting this coin OO O OOOOO 会变成这个 O OO O OOOOO 现在想象有人顺时针旋转电路板。将发生以下情况: 1.旋转单板 OOO OO O OO O 2.硬币由于重力而掉落 O O OO OO OOO 你的任务 您的任务是通过编写程序或函数来模拟电路板的旋转。为了简单起见,我们只处理一种硬币(不是太刺激的配对游戏,是……)。您可以假定仅在旋转完成后才应用重力。电路板顺时针旋转。 输入值 输入将是一个字符串,其中包含3种类型的字符: O(大写o)或0(零)-一枚硬币(您决定解决方案支持的硬币) (空格)-空字段 \ n(新行)-行尾 输入代表板的状态。您可以假设输入格式正确,并且包含板的有效状态(没有硬币漂浮)。输入可以是功能参数,也可以从标准输入或文件中读取。 输出量 输出是旋转后板的新状态。输出包含与输入相同的3种字符。输出可以从函数中返回,也可以写入标准输出或文件中。 样品 输入1: O OO O OOOOO 输出1: O O OO …

8
ASCII艺术僵尸入侵模拟
要模拟僵尸入侵,请从#并代表地图的网格开始: ## ## ### # ## ## # ### # #### # 代表土地。 代表水。 僵尸始于地图上的某个点。 ## ## ### # ## %# # ### # #### ...并传播。%表示被僵尸感染的土地。 但是,僵尸不会游泳。他们可以像国王下象棋一样在陆地上移动-在任何对角线或正交方向上都是一个正方形: !!! !%! !!! 在模拟结束时,一些土地将被僵尸感染: %% ## %%% # %% %% % %%% # %%%% 您的任务是模拟僵尸入侵。编写一个程序(或函数),该程序将代表网格初始状态的字符串和代表初始僵尸坐标的两个数字作为输入。程序应输出(或返回)入侵的最终状态。 技术指标 您的程序可能会打印可选的尾随换行符。 您可以假定输入将采用正确的格式(用空格填充)以及可选的尾随换行符。 您可以假设最初的僵尸将在陆地上开始并且不会立即死亡。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 如果您的代码还可以解决任意图灵机的暂停问题,则可获得-100%的奖励。 您的程序应处理的木板宽度最多为50个字符。

3
成为流行病学家!
挑战 您必须创建一个简单的模型来说明疾病如何在一群人中传播。 规则与要求 模型必须是1000 x 1000 2D数组,每个元素都是不同的人。 用户必须使用argv输入三个变量:传播的可能性(某人感染他人的可能性),突变的机会以及模拟应运行的周期。 在第一阶段(t=0),应随机选择四个人并感染该疾病。 该疾病的行为方式受以下规则支配: 该疾病只能在水平和垂直方向移动,移动到隔壁的人。 每个人感染持续3次。您可能没有考虑到免疫缺陷。 一个人被感染三遍之后,他们便会免疫,无法再次感染。 该疾病容易发生突变,使以前免疫的人容易感染这种新的突变疾病。变异的疾病具有与原始疾病完全相同的特征,并遵循相同的规则。 如果发生突变,则整个疾病不会改变,仅在传播时改变特定的“小包”即可。 一旦一个人被一种病毒感染,在当前的感染过去之前,他们无法再次被感染。 如果一个人被感染,他们从感染期开始到结束都具有传染性。 没有免疫力的水平-一个人是否免疫。 要停止内存过载,最大限制为800个突变。 在指定的周期数结束时,应输出结果。 结果必须为1000 x 1000的网格,以显示哪些人被感染,哪些人未被感染。可以将其输出为文本文件,图像文件或图形输出(其中#FFFFFF是健康人,而#40FF00是感染人)。 请在您的答案中包括语言名称和运行它的命令。 获奖 在我的计算机上运行的最快的代码胜出。时间将通过以下Python代码来衡量: import time, os start = time.time() os.system(command) end = time.time() print(end-start) 请注意,运行此脚本时,我将使用以下默认值: Probability of transmission = 1 Chance of mutation = 0.01 Number of …

4
为儿童玩机器人-我会收到哪一封信?
TL; DR:给定一个字符数组,并且在该数组的起始位置有一个机械手,编写一种算法,该算法可以读取具有运动的字符串(F“向前”,R“向右旋转90度”和L“ 向右旋转90度”左”),然后计算机器人的结束位置。全文中有更多详细信息。 我们在家中有一个非常简单的面向儿童的可编程设备:带有按钮的小型车辆,可以使车辆前进,向左转90度或向右转90度。类似于以下内容: 我们也有一个泡沫垫,上面写着这样的字母: 所有这些的目的是一次教孩子们字母和编程的基础。 挑战 假设我们像这样随机安排泡沫垫: +---+---+---+---+---+---+---+ | E | R | L | B | I | X | N | +---+---+---+---+---+---+---+ | O | A | Q | Y | C | T | G | +---+---+---+---+---+---+---+ | F | W | H | P | …

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.