Questions tagged «game»

此挑战通常基于,与游戏或游戏的某个部分相关,或与其模拟。

5
阿弥陀签(Amidakuji)的简化
如果您曾经接触过日本或东亚文化,那么您肯定会遇到过Amidakuji游戏: 正如Wikipedia解释的那样,这是一种抽签在纸上的彩票,用于随机选择N个项目的排列。 例如,它可以用于将开始顺序随机分配给N个人,或者将N个奖赏分配给N个人,依此类推。 了解游戏为何代表排列的诀窍是要意识到每个水平笔划(称为“腿”)都会将其两个项目交换到位。 同一Wikipedia页面还解释了N个项的每个排列P对应于无数个Amidakuji图。水平笔画(腿)最少的那个被称为那个特定排列P的“素数”。 您的任务是使用以下格式(减去字母)接收带有2条或更多垂直线(在本示例中为6条)的Amidakuji图: A B C D E F | | | | | | |-| |-| |-| | |-| |-| | | | | | |-| | |-| |-| | | | |-| |-| | | |-| | | |-| | |-| | |-| |-| | …

2
在高尔夫球场上种树!
这个挑战的灵感来自这个程序。 这是此挑战的简单得多的版本。这个挑战是代码挑战,而另一个挑战是最快的代码。 您将得到一个正方形的输入网格,其尺寸为6 x 6,分为6个区域,每个区域的单元格都有一个唯一的标识符(我将在本文中使用af的小写字母,但您可以选择任意值,例如整数1-6)。 输入可能看起来像这样(可选输入格式): aabbbb aabbbb aaccbb acccdb ecccdb eeefff 或者,更容易可视化: 挑战: 您将根据以下规则在该公园中放置6棵树: 每列应有1棵树,每行应有1棵树 所有区域均应恰好有一棵树。 垂直,水平或对角线的任何树木都不能与另一棵树木相邻 上面布局的解决方案是: 注意:每个难题只有一个解决方案 附加规则: 输入和输出格式是可选的 例如,输出可能是索引列表,带有1/0的网格(指示在该位置是否有树)或输入的修改版本(其中指示了树) 执行时间必须是确定的 该程序必须在一台合理的现代笔记本电脑上在1分钟内完成 如果您不蛮力,布朗尼会指出! 测试用例: aabbbb aabbbb aaccbb acccdb ecccdb eeefff --- aAbbbb aabbbB aaCcbb acccDb Ecccdb eeeFff ---------- aabccc aacccc aaddce aeeeee aeeefe eeeeee --- aaBccc aacccC …
10 code-golf  grid  game 

3
二元解算器
介绍 拼图规则: 谜题Binary(也称为Takuzu或Subiku)很容易理解,并且只有几个规则: 由于游戏的名称是二进制,所以很明显,但是只能填充零和一。 同一数字最多只能垂直或水平相邻 每行和每一列必须包含相等数量的零和一(这意味着每个二进制游戏都将始终具有偶数维)。 可能没有重复的行,也没有重复的列(零和一的顺序完全相同)。 如果愿意,可以在www.binarypuzzle.com上玩游戏。 策略: 根据规则1,在以下情况下,我们始终可以填充数字: -同一位数字中已有两个彼此垂直或水平相邻,在这种情况下,我们可以在两侧填充相对的数字。即.11...→ 0110..。 -在垂直或水平方向上有两个相同的数字,它们之间只有一个间隙。即.1.1..→.101.. 根据规则1,当剩下三个空格并且我们不能有三个相邻的相同数字时,我们可以填充其中一个空格。即.0.1.0→ 10.1.0(我们仍然必须填写两个,而且中间不能有三个相邻的,所以第一个间隙必须是a 1。) 根据规则2,如果一半的空白已经用相反的数字填充,那么我们总是可以填充行或列中的剩余空白。即.1.011→010011 根据规则3,如果在相等顺序的行上只剩下两个要求解的数字,我们总是可以填充相反的数字。即101100 & 1..100→101100 & 110100 根据规则3,有时我们可以在一条有序排列的直线上留出三个间隙时填充一个间隙。即010011 & .1.01.→ 010011 & .1.010(此处我们不能在1末尾填写a ,因为这意味着我们必须在其他两个空白处填充零,使两行顺序相等。) 例: 我们从以下6x6网格开始,其中填充了一些1和0(点是我们尚未填充的间隙): .1.... .10.0. 1.11.. .1.... ...1.0 ...... 根据规则1和2,我们可以填写以下数字: .1.01. .1010. 101100 010011 .0.1.0 .010.. 根据规则1,我们可以在第5行第1列中填写1: .1.01. .1010. 101100 010011 10.1.0 …

2
保卫自己的生命!
让我们一起踢吧! 尽管Moogie是当前的获胜者,但如果有人能获得他的桂冠,他们会被鼓励这样做 踢罐子是一种儿童游戏。涉及一名防御者和多名攻击者。今天不再是这样的游戏!您的工作是写一个机器人玩这个游戏,赢得胜利,成为王道! https://en.wikipedia.org/wiki/Kick_the_can 此游戏有一些主要区别。第一个关键区别是游戏是多人游戏(5v5)。第二个主要区别是,这两种机器人都可以使用地雷和投掷炸弹杀死并消灭敌方玩家!机器人看不到任何地雷(无论距离有多远)或距离超过五个街区的玩家! 该地图如下所示是一个迷宫。 该迷宫在程序上是通过首先使用深度优先递归回溯算法创建一个迷宫来生成的。然后将显示的孔放进去(并使迷宫变得更“不完美”。迷宫的宽度为65x65块,索引为零。因此,蓝色标记(can)为1,1,红色标记(can)为以63,63产生。蓝队以2,2和3,3 4,4等产生,红队以62,62和61,61、60,60等产生。青色方块是蓝队的机器人,并且洋红色中的方块是红色的bot。游戏始终是5比5。团队中的每个bot都会使用您的代码(但可以存储其他实例变量(或创建本地文件)来跟踪状态并区分角色。 游戏玩法 地雷可以放置为灰色。炸弹最多可以扔四个距离。这些武器穿过墙壁和其他玩家最多可移动四个街区,只会杀死阻碍您前进的敌人。每走一步,他们就有40%的机会掉下来。因此,他们有100%的机会在1个射程60%在2个射程36%在3个射程以及21.6%在3个射程放置地雷或投掷炸弹需要一支团队弹药。它从0开始,可以通过收集橙色框来增加。请注意,这些弹药缓存中的四(4)个将方便地居中。机器人按两个红色和两个蓝色排列。IERRRRBBBBB。允许对标志进行修饰,但是要注意,靠近标志(即少于五个块)会导致速度变慢,并且仅允许移动。每三转。竞技场每回合都会随机选择一个启动器。一世。 目的 对五个机器人(每个机器人具有相同的类文件)进行编程,以成功在迷宫中导航并触摸相对的罐子,同时注意不要意外撞倒自己的罐子或踩到地雷。 程式设计 竞技场和漫游器条目当前使用Java,但是存在其他语言的stdin / out包装器。 竞技场代码将可用,但是这里是相关的详细信息。 机器人课 public class YourUniqueBotName extends Bot{ public YourUniqueBotName(int x , int y, int team){ super(x,y,team); //optional code } public Move move(){//todo implement this method //it should output a Move(); //A move has two …

4
Winnable纸牌Mancala板
曼卡拉(Mancala)是一系列棋盘游戏的名称,通常涉及一系列杯子,杯子中装有玩家操纵的珠子。该挑战将为游戏的单人纸牌变体使用特定的规则集。 该板的一端是一个“篮子”,然后是无数个杯子(从1开始编号)。某些杯子中会有一些珠子。如果n杯子中恰好有n珠子,则可以从中“撒出”珠子。播种是指将所有n珠子从杯子中取出,然后一次将它们在每个杯子中​​朝篮子放置。最后的珠子将进入篮子。当棋盘上的所有珠子都在篮子中时,玩家获胜。 显然,有许多棋盘无法胜出,例如,第二个杯子中恰好有一个珠子。没有合法玩法,因为不能播种所有带有0个珠子的杯子,并且第二个杯子没有要播种的珠子。显然这没什么好玩的,所以您的任务是创建可赢得的棋盘。 任务 给定表示多个珠子的正整数,将输出一个非负整数的列表,该非负整数表示应放入每个杯子中​​以制成如上所述的可取下的棋子的珠子的数量。此列表不应包含任何尾随零。 对于任何给定数量的珠子,始终只有一种可胜任的棋盘配置。 示范 这是演示如何玩可赢局并输入4的示例[0, 1, 3]。可赢局是。我们从唯一可用的举动开始,从第三个杯子中播出珠子,得到[1, 2, 0]。现在我们实际上有一个选择,但是唯一正确的选择是播下第一个杯子,得到:[0, 2, 0]。然后,我们播种第二个杯子[1, 0, 0],最后我们再次播种第一个杯子,以得到所有空杯子。 测试用例: 1 => [1] 2 => [0, 2] 3 => [1, 2] 4 => [0, 1, 3] 5 => [1, 1, 3] 6 => [0, 0, 2, 4] 7 => [1, 0, 2, 4] …

1
十字架,无空
每个人都认识到井字游戏是一款已解决的游戏。但是,仅X的Misère版本提供了一个有趣的选择。 在此版本的游戏中,两名玩家都在板上玩X,并尝试避免连续三局。如果您想了解更多有关此的信息,Numberphile提供了有关此概念的精彩视频。 给定MisèreCrosses董事会,发挥最佳行动。 木板是三行,每行三个字符,分别是X或。从而: X X X XX 是有效的董事会。您可以采用任何方便的格式,只要您的输入和输出使用相同的格式即可。格式包括(但不限于):多行字符串(带有可选的尾随换行符);二维其是字符数组X或; 一维扁平化的布尔值数组,表示是否已播放每个位置。 最佳举动是通过继续最佳发挥来保证您会获胜或尽可能长时间地延长亏损的举动,它由以下规则定义: 避免连续三个。 如果您先走,请在中间玩。 如果唯一的占用空间是中间位置,请在任何剩余的空间中播放。 如果中间的正方形没有被占用,而外部的正方形被占据,则与对手的最后一局相对。 如果中间方格被占领,而外部方格被占领,则在不招致您失败的情况下,与前一步打“骑士步”(对面,翻过来)。 如果没有剩余的方格,您就可以玩剩下的方格。 [注意:在一种情况下,这已被证明不是最佳选择,但无论如何都应使用此算法。] 您可能会认为之前的所有举动都是最佳的。因此,第一个示例板不是有效输入。对手的举动可能是最优的,也可能不是最优的。 如果游戏结束(即连续三场比赛),则行为不确定。 因为这是代码高尔夫球,所以最短答案(以字节为单位)将获胜! 仅使用最佳移动的一种可能路径是: [ ] [ ] [X ] [X ] [X ] [X ] [XX ] [ ]->[ X ]->[ X ]->[ XX]->[ XX]->[ XX]->[ XX] [ ] [ ] …
10 code-golf  game 

2
傍的ASCII游戏
乒乓球 挑战在于以尽可能短的代码重新创建ASCII字符的经典游戏“ pong”。 要求/规格 “屏幕”应为45x25字符。 空格实际上应该是空格。 球拍应为9个等号:=========并且应位于最上面和最下面的行中(我知道原著是左右并排演奏,而不是上下演奏,但我认为这对ascii pong更好)。 球可以是小写或大写o或零。 任何类型的两个输入按钮(如果用户按下使输入中显示字母的键也很好,也可以),以一次左右移动播放器的一个或两个字符。 球在击中桨或壁时需要以适当的角度跳动(提示:取反x或y差值)。 分数应显示在输出中的某处。得分是玩家成功击球的次数。 如果球未击中球员的球拍,请终止程序。 应该有某种AI(即使AI的球拍刚好与球的x值匹配)。 球不能垂直或水平直线移动。 开始屏幕/第一帧应如下所示: ========= o ========= score: 0 计分 这是代码高尔夫球,因此最短的代码获胜...但是,有一些好处可以减少字符数: -30个字符:根据球在球拍上的击打位置来改变球的轨迹 -10个字符:使游戏随着时间的推移而加速 -20个字符:使AI出色 -20个字符:避免出现任何情况,即玩家保持静止并且游戏永远进行而不会输赢(由某些轨迹和AI模式引起) -20个字符:使球开始以(半)随机轨迹运动 -25个字符:添加重置选项 这是一个在JavaScript中没有奖金的简单例子: //init var x = 22, y = 12, xd = Math.random() < 0.5 ? -1 : 1, yd = 1, …

18
缩小数字
输入是(至少3个,最多20个)不同整数的数组。每个整数都大于-1000并且小于1000。 你的任务是“线性映射”他们缩小数字0.0来1.0。这意味着数组中最小的数字将映射为0.0,最大的映射为1.0。 您可以将数组作为参数(在函数内部)或stdin / program参数(可以选择)。以格式打印结果double1;double2;double3;...。输出必须具有与输入相同的顺序。 如果需要,可以将输出舍入到小数点后两位。小数点后必须至少有1位数字。 该内置功能的使用(其比例放倒为你的数字功能,如mathematicas Rescale)是不允许的。 例子: Input Output [5,-20,30] 0.5;0.0;1.0 [1,2,3,4,5] 0.0;0.25;0.5;0.75;1.0 [0,5,100,400] 0.0;0.01;0.25;1.0 (最后的输出是四舍五入的,否则为0.0;0.0125;0.25;1.0)

10
非传递性骰子游戏
那些喜欢Numberphile的人会熟悉James Grime博士,他在他的频道上描述了一种非过渡性的骰子游戏。 游戏包含三个6面骰子: 模具1:3,3,3,3,3,6 骰子2:2,2,2,5,5,5 模具3:1,4,4,4,4,4 两个玩家各自选择要使用的骰子。他们滚动他们,更高的骰子获胜,无论如何。 概率上,死亡1击败死亡2的机会大于50%。同样,骰子2击败骰子3,有趣的是,骰子3击败骰子1。 写一个程序服用1,2或3作为输入。这表示用户选择的骰子。然后,程序选择可以击败用户的骰子,并输出21卷的结果,“ Computer/User wins with x points” 规则 代名词高尔夫,以决胜局形式投票 您必须使用RNG(或类似工具)来实际模拟骰子掷骰。 我对输出格式不太严格。只要显示骰子就可以,以某种方式在21卷之间分开(与在同一卷中分开骰子的方式不同),并在上面输出该句子。 输入可以是标准输入,命令行自变量,来自屏幕等。 例 输入值 1 输出量 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 6 1 3 4 3 4 3 1 …
10 code-golf  game  random 

7
宾果卡生成器
宾果卡由5列组成,每列5个正方形,中间的正方形表示为“ FREE”。数字不能重复。 这五列中填充了以下数字范围: 乙:1-15 I:16-30 N:31-45 G:46-60 O:61-75 用尽可能少的字符输出一个可以解释为随机Bingo卡的字符串。例如: 1,2,3,4,5,16,17,18,19,20,31,32,33,34,35,46,47,48,49,50,61,62,63,64,65 此示例不是随机的,因此我可以显示第1列填充有1,2,3,4,5。另请注意,未对可用空间进行任何特殊处理,因为解释此字符串的前端将跳过它。 另一个示例是: 1,16,31,46,61,2,17,32,47,62 ... 在此示例中,输出按行而不是按列。 第三个示例可能是: 01020304051617181920313233343546474849506162636465 除固定长度外,此输出与第一个示例相同。
10 code-golf  game 

14
猜数字
描述 创建一个完全可用的“猜数字”游戏。该游戏由两个玩家玩,如下所示: 玩家一选择1到N之间的数字(A) 玩家二尝试猜测A在相同范围内选择一个数字(B) 第一个玩家回答“较高” if A > B,“较低” if A < B或“正确” if A = B。 步骤2-3重复I次或直到响应“正确”为止。 如果听到“正确”,则第二名玩家获胜,否则将输。 眼镜 有效条目的最低规格: 用户可以扮演第一人或第二人。 计算机扮演着另一个角色。 计算机必须真正尝试在玩第二号玩家时猜测数字(因此,猜测给定数据或忽略给定数据是作弊行为) N = 100 或由用户输入(您的选择) I = 5 或由用户输入(您的选择) 节目必须在最后宣布获奖者。 完整的人类可读的指令,指示每个步骤的操作(例如“扮演一名玩家还是两名玩家?”,“输入另一个猜测:”,等等)-不要对这一步骤有所顾忌;保持简单。 获奖条件 以该顺序: 如果投票数第二高的票至少领先3票,则投票数最高的票将获胜。 最短的入场券获胜。

7
魔术:聚会,花钱买法术
要获得更多的MtG优点,请执行以下操作:魔术:具有能力的聚会战斗 前提: 在《魔法:汇聚》中,您可以通过按所需数量的土地支付法术力费用来施放咒语。这些土地可​​以产生以下五种颜色之一: 白(W) 蓝色(U) 黑色(B) 红色(R) 绿色(G) 成本由两部分组成:一个数字(即通用的法术力要求)和一系列代表彩色法术力要求的符号。该数字是普通的法术力费用,可以使用任何颜色的法术力来满足它,例如(3)可以用支付WGG。这些符号是特定颜色的1:1要求。例如,WWUBR将需要2个白色法力,1个蓝色,1个黑色和1个红色。通用部分将始终位于彩色部分之前。提醒一下,这(0)是有效费用,必须处理。 您可以拥有完全通用的成本或完全彩色的成本,或两者都有。例如,以下卡牌的费用为4BB,并用4点法术值色和2点黑法术值支付: 处于挑战中的土地将各自产生一个法力值。但是,我们将考虑可以产生多种颜色但仍然只产生1点法力的土地。例如,G将产生绿色的法术力,WG可以产生1个白色或1个绿色。 输入: 系统将为您提供两个输入,一张卡的费用和一张土地清单。 卡的成本可以是字符串,也可以是包含数字和彩色部分字符串的元组。如果没有通用部分,则可以用0填充字符串/元组。 土地列表将是一个字符串列表,其中每个字符串都是给定土地可以生产的。此列表可以为空(您没有土地)。您也可以使用位掩码逻辑将此列为整数列表,但如果这样做,则发布您的方案。如果重要的话,订购也取决于您,否则将按WUBRG顺序进行。 #Example input formats "4BB", ("WG","B","B") # (4,"BB"), (7,3,3) #Both should return falsy 输出: 一个truthy值,如果你能成功地给支付土地的成本和falsey价值,如果你不能。 规则: 您将获得有效的输入保证 假定法力值始终为“ WUBRG”。如果您想要其他顺序,请在答案中注明。 颜色将始终按成本分组,例如“ WWUBBRG” 输入将使用全部大写或全部小写的形式。 您应该能够处理正则表达式127[WUBRG]{127}和254个土地。 禁止标准漏洞 这是 代码高尔夫球,每种语言的最短答案胜出 例子: "0", ("") => 1 "1BB", ("WG","B","B") => 1 "BB", …

2
Quarto中有多少次平局?
介绍 此挑战类似于欧拉计划问题。我之所以提出这个建议,是因为我在玩一个看似简单的棋盘游戏,却无法提出一个有效的解决方案来回答有关其机制的简单问题。 Quarto是连续4个有趣的变体。它在4 x 4板上演奏,有16个独特的乐段(没有乐段重复)。每位玩家每回合将1个棋子放在棋盘上。每块都有4个二进制特征(短/高,黑/白,正方形/圆形,空心/实心)。目标是针对四个特征中的任何一个,水平,垂直或沿2个对角线连续制作四个!因此有4个黑​​色块,4个白色块,4个高块,4个短块,4个正方形块,4个圆形块,4个空心块或4个实心块。 上图显示了完成的游戏,由于有4个正方形棋子,所以连续有四个。 挑战 在Quarto中,某些游戏可能以平局结束。 可能的最终头寸总数16!约为20万亿。 这些平局中有多少是平局? 规则 解决方案必须是一个程序,该程序计算并输出绘制的最终位置总数。正确答案是414298141056 您只能使用人工推导的游戏规则信息(无计算机辅助证明)。 可以对问题进行数学简化,但是必须在解决方案中(手动)进行说明和证明。 赢家是在CPU运行时间方面最优化的解决方案。 为了确定获胜者,我将在MacBook Pro 2.5 GHz Intel Core i7和16 GB RAM上运行每个报告的运行时间少于30m的解决方案。 提出与其他尺寸的电路板都兼容的解决方案没有任何加分。即使那会很好。 如果适用,您的程序必须在1分钟内在上述硬件上编译(以避免滥用编译器优化) 不允许默认漏洞 意见书 请发表: 该代码或指向该代码的github / bitbucket链接。 代码的输出。 您本地测量的运行时间 您的方法的说明。 最后期限 提交截止日期为3月1日,因此还有很多时间。

4
Badugi,谁赢了?
受到这一挑战的启发并与此相关。 背景 Badugi [bæduːɡiː]是低球平局扑克变种。 Pokerstars世界杯在线扑克$ 1K赛事在3小时内开始,我需要知道我的手牌有多好! 该游戏使用52张标准卡组,其中包含四张西服和13张等级。西服是无序的,应加标签cdhs; 从最高K到最低的等级A是KQJT98765432A。因此,整个甲板可以表示如下(以空格分隔): Kc Kd Kh Ks Qc Qd Qh Qs Jc Jd Jh Js Tc Td Th Ts 9c 9d 9h 9s 8c 8d 8h 8s 7c 7d 7h 7s 6c 6d 6h 6s 5c 5d 5h 5s 4c 4d 4h 4s 3c 3d …

2
2D地牢爬行者
您的程序必须采用多行字符串,如下所示: ############# # # # p # # # ############# p是玩家,#是一个障碍。 现在在终端下应该是一条输入行,上面写着: How do you want to move? 如果玩家键入l必须在没有障碍物的情况下向左走,否则,在存在障碍物的情况下,他将无法通过并且当然也不会移动,因此现在必须更新终端中的输出(并且先前的输出已清除/覆盖): ############# # # # p # # # ############# 他可以输入l左,r右,u上和d下。 输入将始终为多行,但不会始终用空格填充为理想的矩形。另外,散列可以在字符串中的任何位置,并且不会始终相互连接。例如: ## ## # # ## p # 是有效的地牢。(请注意,每行上都没有尾随空格) 如果玩家不在字符串范围内,则不必显示他。但是,如果他稍后再来,则必须再次显示。 字符串“外部”的边界是length(longest_line)by number_of_lines矩形,因此即使一行没有在右边填充空格,该位置也不会被视为超出范围。使用早期地下城的示例: ## ## # #p ## # 第二行现在的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.