Questions tagged «simulation»

对于涉及模拟的挑战。

10
9忍者之死
受到聊天中此对话的启发。 您在此挑战中的目标是模仿忍者并计算他留下的死亡人数。 眼镜 您的忍者开始时还有9人死亡。他还获得了不可或缺的开始健康状况作为输入。 然后,他将改变自己健康状况的事件清单作为输入。这些可以是负整数,正整数或零整数。 在任何时候,如果他的健康状况达到或低于零,他就会丧命,并且健康状况会恢复到最初的健康状况。 您的程序应报告他留下的死亡人数。如果他的剩余零个或更少,则应dead改为输出。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 3, [] -> 9 100, [-20, 5, -50, 15, -30, -30, 10] -> 8 10, [-10, -10, -10, -10] -> 5 10, [-10, -10, -10, -10, -10, -10, -10, -10, -10] -> dead 0, [] -> dead 0, [1] -> dead …

2
Code Golf:宇宙飞船的命运是什么?[浮点版本]
这个问题比ASCII艺术版本要难一些。没有艺术,现在您可以进行浮点运算了! 挑战 当船上发生天文爆炸时,USS StackExchange正在穿越cg-00DLEF行星的重力场。作为该船的首席程序设计官,您的工作是模拟船的轨迹,以预测您是否会被迫撞倒cg-00DELF的太阳系中的土地。在爆炸期间,您的船严重受损。由于飞船的免费DEEEPRAROM *有限,因此您必须以尽可能少的字符编写程序。 *动态可执行电子擦除可编程随机存取只读存储器 模拟 有点像ASCII艺术版本,会有时间步伐的想法。在另一个版本中,时间步长是相对较长的时间:船舶可以在单个时间步长中超越行星的重力行进。在此,由于所涉及的距离较大,因此时间步长要小得多。然而,一个主要的区别是不存在细胞。飞船的当前位置和速度将是浮点数,以及所涉及的重力。另一个变化是,行星现在的尺寸更大。 模拟中最多有三个行星。这三个都将具有特定的位置,半径和重力。每个行星的重力是一个向量,直接向行星中心施加力。查找该矢量强度的公式为(Gravity)/(Distance**2),其中距离是从船到行星中心的精确距离。这意味着重力可以到达的地方没有限制。 在任何特定时间,飞船都有一个速度,即它从最后一个时间步到现在的距离和角度。该船也有动力。它在当前时间步与下一时间步之间行进的距离是其当前速度加到该位置所有重力矢量的总和。这成为飞船的新速度。 每个模拟的时间限制为10000个时间步。如果太空飞船在行星内部移动(比行星的半径更靠近行星的中心),则它会撞入该行星。如果到模拟结束时飞船没有坠入任何行星,则可以认为它已脱离重力。这艘船不可能如此完美地对准,以至于它能够在10000个时间步长上坠毁而设法在轨道上停留10000个时间步长。 输入值 输入到STDIN的四行。每行由四个逗号分隔的数字组成。这是数字的格式: ShipLocX,ShipLocY,ShipVelX,ShipVelY Planet1LocX,Planet1LocY,Planet1Gravity,Planet1Radius Planet2LocX,Planet2LocY,Planet2Gravity,Planet2Radius Planet3LocX,Planet3LocY,Planet3Gravity,Planet3Radius 如果少于三个行星,则剩余线将对所有值填充零。这是一个示例输入: 60,0,0,10 0,0,4000,50 100,100,4000,50 0,0,0,0 这意味着太空飞船位于(60,0),并且以“ 10个单位/时间步长”的速度直线“向上/向北”行驶。有两颗行星,一颗位于(0,0),另一颗位于(100,100)。两者的重力为4000,半径为50。即使所有这些都是整数,它们也不总是整数。 输出量 输出将是一个字到STDOUT,以告诉飞船是否坠毁。如果船舶坠毁,请打印crash。否则,请打印escape。这是上述输入的预期输出: crash 您可能想知道发生了什么。这是一个Pastebin帖子,其中包含该飞船的详细飞行日志。数字并不能很好地帮助人们可视化事件,所以这是发生了什么:飞船设法借助第二个行星(向东北)的引力逃脱了第一个行星(向西)的引力。它向北移动,然后略微经过第二个行星的西面,几乎没有丢失它。然后,它绕行星的北侧弯曲并撞向第二颗行星的东侧。 其他一些案件进行检查 60,0,10,-10 0,0,2000,50 100,100,1357.9,47.5 0,0,0,0 逃逸(由于平方反比定律,如果您离60个单位远,则2000重力不大) 0,0,0,0 100,100,20000,140 -50,-50,50,50 -100,-100,50,50 坠毁(第一颗行星非常巨大且非常接近) 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 逃脱(这是一个极端的情况:没有行星,直接的解释将表明飞船直接在行星的顶部) 规则,限制和注释 这是代码高尔夫。适用标准代码高尔夫规则。您的程序只能用可打印的ASCII字符编写。您无法访问任何类型的外部数据库。您可以用任何语言(除了专门用于解决此挑战的语言)编写条目。 结束传输

1
模拟(基于重力的)台球式计算机
机器 台球式游戏机仅由符号\ _ /以及大小写字母,空格和数字组成1。 \和/是坡道。来自上方的球将分别偏转到右侧或左侧。对于两个坡道,如果球从任一侧进来,它将向下偏转。 _是一个逻辑元素。它执行的逻辑是计算机中最像台球的部分。首先,来自左侧或右侧的球沿相同方向连续。来自上方的球将停止。然后,执行结束后(请参见下面的“运行机器”),如果横穿/着陆在其上的球的数量为正偶数,则从元素底部释放单个球。 一个空格什么都不做。来自任何方向的任何球都将由于重力而直线下降。 小写字母是输入。所有输入将是单个1或0。 大写字母为输出。输出的数字将是撞到其位置的台球数。 该号码1在该位置释放了一个额外的台球。它代表逻辑1。 除此以外的所有字符都会\_/导致任何方向的球由于重力而掉落。 球永远不会合并,分裂或碰撞。它们仅在从输入a _或a 释放时创建1。只有当它们掉落到地上时才会被摧毁_。 示例机器- 1 a \_/ b \_/ \/ /\ / _ _ A B 机器中永远不会有任何空白行,但是_可能会使显示空白行。 运行机器 机器按层或行运行。顶层上的所有台球运动都在第二层发生任何事情之前进行。 机器 ab \_A C 运行如下: 首先,它提示您输入a形式a:。然后,用户将输入1或0(接着回车)。它对输入重复此操作b。这是第一层的结尾。我将假设用户为两个输入都输入了1。 然后,它会跟踪第一个球(从a)的路径,该球沿着\,穿过_,进入A,然后下降到下方的位置A。然后,它跟踪出第二个球(从b)的路径,该球直接向下进入_并终止。这是第二层的结尾。 现在,在第三层之前,由于上面_有两个球交叉,因此释放了一个球。输出A上有一个球越过,因此输出A:1。 对于第三层,它跟踪第一个球的路径(从_),该球经过C并直线下降。第二个球(落入A)也直线下降。 现在,在第四层之前,由于输出上C有一个滚珠,因此输出C:1。 由于第四层为空白,因此程序终止。 总结果应该像 a:1 (the user entered the one) b:1 (same …

1
词间吸引力
牛顿的引力理论说,两点质量之间的引力是 F =(Gm 1 m 2)/ r 2 哪里 G为重力常数:6.674×10 -11 N·(m / kg)2 m 1是第一个物体的质量 m 2是第二个物体的质量 r是它们的质心之间的距离 挑战 您需要模拟两个单词之间的拉动。每个小写字母的质量取决于其在字母表中的位置。大写字母的质量是小写字母的两倍!您将得到一个字符串,其中包含两个单词,这些单词由几个空格分隔,以及正整数秒数s。在s秒后输出字符串的外观。 信息 因为单词是抽象的,所以它们具有一组不同的单位和常量 质量:WMU(字质量单位)-等于字母“ a”的质量。 距离:em,一个字符的长度。 力: N W(牛顿(Word Newton))= WMU·em / s 2 重力常数:G = 1 N w ·(em / WMU)2 第一个字符对应于x轴上的位置0。 所有计算都应尽可能精确地进行,直到最后才舍入到最接近的em。 您不需要使用微积分,只需要每秒重新计算F,自动将新的加速度应用于速度,然后一秒钟将速度应用于位置(请参见示例)。 一旦两个单词相互碰撞(如 catdog ),它们就不会再移动了。 质量中心 的质心的单词的可与式中找到: …

2
X大于3,且X和Y之间至少相差2
我试图打败一些C ++。是否可以使这种情况更短? X > 3 & X - Y > 1 (当然,除了删除空白。) 所以,X至少4,但X >= Y + 2。 X和Y是[0,5]间隔中的整数。 我试图找到一些按位公式,但失败了。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

2
挖掘地牢的数字
编辑:在问题结束时,我将为奖金难题的第一个求解器颁发100信誉的赏金! 我只会在答案出现时才将赏金添加到问题中,因为该赏金没有截止日期。 给定一个非递减的一位正整数列表,您应该确定这些位数将挖掘多深的地牢。 ███ ███ A dungeon with 5 blocks removed and a depth of 3. ███ ███ ███ ████ ████████ 在开始挖掘之前,地面是水平的。 每个手指都可以从其下方精确地移除一个土块,但是它必须从地牢外部到达该位置,并且在移除后必须离开地牢。这样做时,数字在任何水平步长处的下降或上升都不能超过其数值。 数字使用以下策略进行挖掘: 值最小的数字首先挖掘,然后,下一个挖掘器始终是其余数字中的下一个最小值。 第一位数字可以在任何位置挖掘。(所有地面都相同。) 下面的数字总是在最左边的已经开始的列上挖掘,它们可以出来。如果不存在这样的列,他们将在最右边的列的右侧开始挖掘一个新列。 例如,数字1 1 1 2 3 3将挖出下面的地牢(逐步可视化,并用数字标记该位置挖出哪种数字): ███1████ ███11███ ███11███ ███11███ ███11███ ███11███ ████████ ████████ ███1████ ███1████ ███1████ ███13███ ████████ ████████ ████████ ███2████ ███2████ …

3
模拟撞车
介绍 我有一些具有速度和方向的ASCII汽车。它们的速度由其数量表示。如果有汽车,<>那么它已经停止。例如: <> 1> 2> 3> 一秒钟后,我得到 <> 1> 2> 3> 两点之后,我得到 <> 1> 2> 3> 如果两辆车距离太近,它们会崩溃。 1> <1 1> <2 一秒钟后,这变成 ### ## 如果两辆汽车相交,它们将成为它们的标签。 如果一辆车的速度足以使其“跳上”另一辆车,则不会导致撞车。 3><1 2><1 4><> 变成 <13> ### <>4> 如果汽车离开屏幕,它将消失(除非发生碰撞)。汽车无法在屏幕外行驶。 <11> <1 1> 1 1> 1> 挑战 根据给定的汽车物理特性,您必须创建一个程序,该程序可以将时间推迟一秒钟。输入将是具有空间且最大速度为5(匹配正则表达式(<[1-5]|[1-5]>|<>| )+)的汽车。模拟将在一行上进行,但是该行没有固定的大小。 测试用例 <> 1> 2> 3> 4> 5> …

6
卡对概率
给定一个卡片组,其中N张卡片由N个卡片组成,其中N个卡片的整数值为[ 1,M ],总共N * M张卡片,计算出值为1的卡片与值为2的卡片相邻的概率。 您的解决方案可能是精确的或近似的,并且在给定相同输入的情况下,每次运行都不必相同。给定的答案应在真实解决方案的+/- 5%之内(除非RNG不太可能对您不利)。您的程序应在合理的时间内给出答案(例如,使用任何硬件不到10分钟)。您可以假设M和N合理小,并且不需要进行错误检查。 卡组不是周期性的,因此如果第一张卡为1,最后一张卡为2,则这不满足邻接要求。 作为测试用例,对于N = 4和M = 13(标准的52张卡片套),预期解决方案约为48.6%。 这是使用随机混洗的Python + NumPy中的非高尔夫实现示例: from __future__ import division from numpy import * def adjacent(N, M): deck = array([i for i in range(1, M+1)]*N) trials = 100000 count = 0 for i in range(trials): random.shuffle(deck) ores = (deck == …

1
剪刀石头布比赛模拟器
您决定组织一次剪刀石头布冠军赛,以找出谁是最好的。您不想让运气来决定获胜者,所以每个人都必须在比赛前以书面形式给您提供战术。您还喜欢简单的事物,因此竞争对手的举动(显示石头,纸张或剪刀)必须仅基于前一轮(RvR,RvP,RvS,PvR,PvP,PvS,SvR,SvP或SvS)。在第一轮中,玩家必须显示一个固定的标志。 您决定编写一个程序(或函数)来模拟锦标赛。 比赛详情 至少有2位参赛者。 每个玩家都与其他人完全进行一场比赛。 一场比赛持续7回合。 在每个回合中,获胜者获得2分,失败者获得2分。如果出现平局,双方选手得分均为1分。 一名球员在一场比赛中的得分是他或她在比赛回合中得分的总和。 球员在锦标赛中的最终得分是他或她在所有比赛中的积分之和。 输入的详细信息: 您的程序或函数会收到N10个字符长的字符串,每个字符串都对应一个玩家策略。所有字符均为(小写)r p或s表示在给定情况下玩家将显示石头纸或剪刀。 第一个字母代表第一个回合(在该运动员的每场比赛中)。第二个显示如果上一轮是摇滚对摇滚,会发生什么。接下来的是RvP,RvS,PvR,PvP,PvS,SvR,SvP和SvS,其中第一个字母是玩家的牌子,第二个字母是对手的牌子。例如,rrpsrpsrps意味着玩家从岩石开始,然后复制对手的最后一步。 您可以将字符串列表输入为列表/数组或您的语言的类似数据或一个字符串。在后一种情况下,必须使用某种分隔符。 输出的详细信息: 您的程序或函数应按照提供输入的顺序输出每个玩家的最终得分。 分数应以空格或换行符分隔。允许使用尾随空格或换行符。 例子: 输入: ['rrpsrpsrps', 'rpppsprrpr'] 输出:( 5 9转rvr rvp pvs svp pvr rvp pvs) 输入: ['rrpsrpsrps', 'rpppsprrpr', 'ssssssssss'] 输出:( 13 17 12匹配项是5-9(第一对第二),8-6(第一对第三)和8-6(第二对第三)) 这是代码高尔夫球,因此最短的条目将获胜。
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.