Questions tagged «king-of-the-hill»

丘陵之王表示一种游戏,在此游戏中,提交内容以某种形式的游戏进行交互并相互竞争。在没有交互的情况下使程序相互竞争的竞赛应该使用[code-challenge]。

4
小山之王机器人的提示
对于创建机器人参加山王挑战赛,您有哪些一般技巧?从考虑挑战到创建机器人,您使用什么策略?您发现什么数据结构最有用? 请为每个答案发布一个提示。

1
有效迷宫数
给定一个WxH网格,有多少种可能的迷宫? 您对迷宫的了解: 网格正好是H正方形,W正方形是正方形。 共有三种类型的正方形:“开始”,“完成”和“空”。迷宫必须正好包含1个开始点和1个结束点,所有剩余的方块均为空。 整个迷宫周围都有墙壁。 除非违反以下规则,否则墙可以存在于任意两个正方形之间的边缘上: 从开始方块到完成方块必须存在一条路径。 因此,给定两个数字W和H,您必须返回一个数字,代表可能的正方形/墙壁配置的数目。您保证W*H > 1 例如,2x2迷宫具有完全100不同的可能配置。 这是一个代码高尔夫球,所以最短的答案是成功的!

5
风险,战争之道
介绍 在此游戏中,玩家使用自己的军队与其他玩家的军队作战,占领领土并成为最后一个站立的人。每回合,玩家都会得到基本数量的军队供其使用。但是,通过占领某些地区的领土,玩家可以增加此数目,从而在游戏后期拥有潜在的优势。(这与Warlight基本相同)。 所有机器人均应使用Java,C或C ++编写(我可能会包括其他语言,但没有相应的软件或经验)。您的提交没有必要扩展一个类,您可以创建函数,类,接口或其他任何必要的东西,并使用标准 API中的任何包或类。如果您打算创建一个类或接口,请考虑使用一个内部类或内部接口。 请不要尝试以编程方式更改竞赛中的控制器或其他提交的内容。 游戏玩法 总览 一个10x10的二维数组将模​​拟该板,每个元素/单元代表一个“区域”。将进行20轮,每轮最多1000圈。每回合,玩家将首先将他们拥有的军队部署到自己拥有的任何领土,然后有机会将其军队运送到附近的领土,以试图通过攻击对手的领土来占领对手的领土。玩家必须部署所有军队,但是如果需要,他们不必移动军队。 进攻/转移军队 如果玩家愿意,他/她可以从一个地区向八个相邻地区中的任何一个派遣军队。棋盘“环绕”,即,如果玩家的领土在一侧,则可以将其周围的军队转移到另一侧的相邻领土。从某一领土调动军队时,该领土上至少还应剩下一支军队。例如,如果一个领土包含五支军队,那么转移到不同领土的人数不得超过四支。如果一个领土包含一个领土,那支军队就无法行动。 如果玩家将n军队从一个领土派遣到他们拥有的另一领土,则该领土将获得n军队。 假设玩家将n军队从他/她的领地发送到其中有o军队的对立领地。o将n * .6舍入到最接近的整数;但是,与此同时,n将o * .7四舍五入为最接近的整数。以下规则将适用于是否占领了对方领土: 如果o达到零n且大于0,则玩家将接管领土,n军队。 如果同时n和o变为零,o将自动设置为1和领土不会被捕获。 如果o仍然大于0,则玩家所在区域的军队数量将增加,n并且对等区域将不会被占领。 奖金 将选择一组地区代表奖金;如果一个玩家拥有该组中所有领土,则该玩家每回合将获得额外的军队。 奖金的ID号代表不同的ID,值代表玩家可以接收的额外军队数量。每回合,奖励的值将是5到10之间的一个随机数(含5和10),并且现场将提供十个奖励,每个奖励都包含十个地区。 例如,如果一个玩家每回合会获得5个军队的所有领土都拥有价值8的加成,则该玩家将在下一回合及随后的回合中获得13个军队。但是,如果玩家失去组成奖励的一个或多个地区,则他/她每回合只会收到5个军队。 输入输出 您的程序应通过命令行参数进行输入,其格式如下: [id] [armies] [territories (yours and all adjacent ones)] [bonuses] ["X" (if first turn)] id并且armies都是整数。id是您的ID,armies是您需要部署到您的地区的军队数量。您必须部署分配给您的所有军队-不多也不少。 territories是一系列字符串,代表您所拥有的领土和与您不相邻的领土。字符串采用以下格式: [row],[col],[bonus id],[player id],[armies] row并col指出该领土所在的董事会的行和列,是该领土bonus id所属的奖励player id的ID ,是拥有该领土的玩家的ID,并且armies是该领土内的军队数量。这些都是数字。 bonuses是代表您可以利用的董事会奖金的一系列字符串。字符串采用以下格式: [id],[armies],[territories …
12 king-of-the-hill  c  c++  java 

5
夺旗
这是一款夺取旗帜的游戏,灵感来源于Red vs. Blue-Pixel Team Battlebots。这是一个了不起的问题(非常感谢Calvin的爱好;我希望您不要介意我无耻地偷了您的很多代码)-这是另一支基于团队的“国王”。希望夺取旗帜将需要更多的团队合作以及更多的战略。 混淆起来,如果您ID的最后一位数字介于0和之间,则您将被视为红色团队4。如果相同的人决定回答,那么这应该防止完全相同的团队再次作战。董事会350px由350px。蓝队从董事会的上半部分开始,红队从董事会的下半部分开始。 您打旗的方式如下:游戏的目的是拿下对方球队的旗帜,并把它带回到自己的身边。如果您站在他们一边,您可以被标记并送进监狱。如果您在监狱里,那么您将无法动弹。如果您站在一边,您的工作就是标记相对的团队成员,将他们送进监狱。摆脱监狱的唯一方法是让您团队中可以自由标记所有人入狱的某人。(请注意,监狱位于对面球队的一侧)。 特别: 有一个常量- FIELD_PADDING设置为20。这是该字段的填充。如果为零,则标记和监禁将完全位于画布的角上。由于不是,因此旗帜和监狱距离角落只有20个像素。 蓝旗(记住:蓝队在上半部分)位于(WIDTH - FIELD_PADDING, FIELD_PADDING) = (330, 20)即右上角。 红旗在 (FIELD_PADDING, HEIGHT - FIELD_PADDING) = (20, 330) 蓝色监狱(保留红色成员的监狱)在(20, 20)蓝色侧,左上方。 保留蓝色成员的红色监狱在 (330, 330) 每个团队成员从一个位置随机开始45 < x < 305,45 < y < 175以蓝色和175 < y < 305红色开始。任何团队成员都不得进入DEFENSE_RADIUS = 25自己的旗帜或监禁的像素范围内(当然,除非您自己的旗帜是由相反的机器人获取的,在这种情况下,您需要标记该机器人)。这是为了防止像机器人一样保护小狗。如果您在该范围内,则将您“推”回去。同样,任何团队成员都不能超出范围(小于零或大于350)-如果这样做,则将您推回到可能的最近合法位置。 每次移动时,您都会用尽strength。您的strength起点始于每20步2都得到补充。您使用的力量等于您行进的距离。如果您的力量会因为移动到某个位置而变得消极,那么您将无法采取这种行动。尽可能快地2进行常规追赶可能是一个好主意。仅在您接近获胜并且需要额外速度时(我认为),才应使用较高的速度。 规格: 规格与Pixel Team Battlebots问题非常相似。您应该在javascript中编写代码块(请记住,没有全局变量)。它应该返回一个带有x-value和y-value …

8
水气球大战
该“山上之王”游戏是一种策略游戏,您必须在其中扔水气球,并避免被水溅到。目标是获得最多的积分。您将得到一张野外图和水气球的位置。您可以返回要在某个方向上击打水气球(如果距离足够近)或要在某个方向上移动。 具体来说:水气球将从(0, 0)30个单位的高度开始下降。如果水气球撞到地面,将随机选择一名选手输掉4点,并向靠近气球的人分配更多的重量。此外,最后一次击中气球的玩家将获得3分。因此,如果您直接向下击气球,您很可能会损失1分。 您将编写一个扩展类Player。您需要实现构造函数。构造函数如下所示: public Player1() { super(/* Some numbers */ 3, 3, 4) } 这些数字是doubles。第一个数字代表玩家的速度,第二个数字代表力量,第三个数字代表运气。这些数字的总和不得超过10,并且任何数字都不得小于或等于零。 其次,您必须实现该move方法。这是一个示例move方法: @Override protected Action move(Map<Player, Point2D> map, Balloon b) { // Get my own location Point2D myself = map.get(this); // If I'm close enough to the balloon // then hit the balloon if (myself.distanceSq(b.getLocation()) …

2
建立一个采矿机器人
您的程序将控制采矿机器人在地下搜索有价值的矿物。您的机器人会告诉控制器您要移动和挖掘的位置,控制器将提供有关机器人状态的反馈。 最初,将为您的机器人提供矿山的图像图,其中已经存在一些矿井,以及一个数据文件,用于指定矿山中矿物的值和硬度。然后,您的机器人将在轴中移动,以寻找有价值的矿物质。您的机器人可以挖土,但会因坚硬的岩石而减速。 24小时轮班后返回最有价值货物的机器人将成为赢家。这似乎是一个复杂的挑战,但制造基本的采矿机器人很简单(请参阅下面的示例采矿机器人答案)。 运作方式 控制器将使用矿井图像,矿物数据和设备文件名启动您的程序。机器人可以使用矿山图像和矿物数据找到有价值的矿石并避开坚硬的岩石。机器人可能还想从设备列表中购买设备。 例如: python driller.py mineimage.png minerals.txt equipmentlist.txt 在2秒钟的初始化时间后,控制器通过stdin和stdout与机器人程序通信。机器人必须在收到状态消息后的0.1秒内做出响应。 每转一圈,控制器就会向机器人发送一条状态行: timeleft cargo battery cutter x y direction 例如: 1087 4505 34.65 88.04 261 355 right 整数timeleft是班次结束前剩下的游戏秒数。在 cargo如此远不如你付出什么设备已开采矿物的整数值。该battery级别是你的电池剩余电量的整数百分比。的cutter整数水平是切割器作为标准值的百分比的当前锐度。的x和y值与在(0,0)从左上角引用的机器人位置的正整数。方向是机器人当前面对的方向(左,右,上,下)。 当您的机器人收到“ endshift”或“ failed”输入时,您的程序将很快终止。您可能希望机器人将调试/性能数据首先写入文件。 控制器将接受4种可能的命令。direction left|right|up|down会将您的机器人指向该方向,并需要15个游戏秒。move <integer>会指示您的机器人向前移动或挖掘很多单位,这取决于切割的矿物的硬度和刀具的锋利度(请参见下文),需要一些时间。buy <equipment>将安装指定的设备并从您的货物价值中扣除成本,但前提是机器人位于水面(y值<= y的起始值)。设备安装需要300游戏秒。特殊命令snapshot将当前的地雷映像写入磁盘,并且不占用游戏时间。您可以使用快照来调试机器人或创建动画。 您的机器人将以100电池和100切割器清晰度启动。移动和转动会消耗少量电池电量。挖掘的用途更多,并且取决于矿物的硬度和刀具的当前清晰度。当您的机器人挖掘矿物时,切割机将失去锐度,这取决于所花费的时间和矿物的硬度。如果您的机器人有足够的货物价值,它可能会返回地面以购买新的电池或刀具。请注意,高质量的设备的初始有效性超过100%。电池的名称中包含字符串“ battery”,切割器的名称中包含“ cutter”(惊奇)。 以下关系定义了移动和切割: timecutting = sum(hardness of pixels cut) * 100 …

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是not (a and b)) forall (通用量词) v0,v1,v2等。(变量) 这是一个句子的示例: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) 这not x是简写x nand x-实际的句子会用到(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

9
白象交换
现在是七月的圣诞节,所以有什么比虚拟的白象礼物交换更好的庆祝方式! 对于这次的“山丘之王”挑战,您必须创建一个在“白象”交流模拟中发挥作用的机器人,力争获得最高价值的礼物。 游戏规则 游戏将进行很多回合,每个回合由不同的回合数组成。 回合设置:游戏中会出现与玩家人数一样多的礼物,每个礼物在[0 ... 1)范围内均一地随机赋值,直到“打开”礼物时该值才是未知的。玩家将被随机排列在队列中。第一个玩家将从队列的前面弹出。 轮到一个玩家时,他们可以打开礼物或偷走另一个玩家的礼物,然后将回合传递给被盗礼物的玩家。 每个礼物最多可被盗3次。 您不能从刚刚从您身上偷走的玩家那里窃取钱财。 每个玩家一次只能有一个礼物。 打开礼物后,播放前进到从队列前面弹出的下一个播放器。这将是下一个尚未转牌的玩家。 回合结束:打开所有礼物后,回合结束,每个玩家持有的礼物的价值将添加到该玩家的分数中。新一轮比赛开始,每个玩家现在都没有礼物,而玩家的顺序也被打乱了。 游戏结束:当至少一名玩家获得100 500分时,游戏将结束,并以最高总礼物价值授予该玩家胜利。 编码 所有提交都应与Python 3.7兼容。您必须编写一个直接继承自的类WhiteElephantBot。例如: class FooBot(WhiteElephantBot): # Your implementation here 您可以在bot类中提供必须调用的__init__方法(采用一个参数name)super().__init__(name)。您的类必须具有take_turn按以下顺序期望以下参数的方法: players:依次列出所有尚没有礼物的球员的球员名称。 presents:将玩家名称映射到2元组的字典,其中包含该玩家所拥有的当前值以及当前被盗的次数。这仅包括当前持有礼物的其他玩家。 just_stole:如果最后采取的动作是抢断,这将是刚偷走的玩家的名字。如果不是,它将为None。 每个参数都是不可变的,也可以是新的对象,因此,对它们进行任何更改都不会影响游戏。如果您愿意,可以保留任何参数的副本。 的示例值presents: { 'Alice': (0.35, 0), 'Bob': (0.81, 2), 'Charlie': (0.57, 1) } 您的take_turn方法应返回您想从中窃取或None打开礼物的玩家的名字。如果引发异常,返回str或以外的值None,或者返回您不能从中窃取的玩家的姓名,则默认情况下将打开礼物。 您的构造函数将在每个回合开始时被调用,因此您不会记​​住每个回合的状态。 通过继承自WhiteElephantBot,您将可以访问一种steal_targets方法,该方法将使用present dict just_stole并返回可以从中窃取的玩家的姓名列表。 您脚本所需的任何模块都必须在条目顶部导入。 测试驱动 可以在这里找到测试驱动程序。您无需from white_elephant …

2
骆驼杯:AI棋盘比赛
骆驼杯2k18 在这个挑战中,我们将玩半受欢迎的桌游Camel Up。 骆驼起来!是一种棋盘游戏,有玩家押注骆驼以赢得回合,赢得游戏或输掉游戏,设置陷阱以影响移动或移动骆驼。这些决定中的每一个都会奖励您获得一些钱的机会,这才是决定赢家的原因。玩家应使用概率,游戏状态考虑因素和对手的租约来做出决定。这是一个简短的视频,向玩家展示如何玩。 怎么玩 这是玩法的粗略构想。观看其中一部视频可能会更有帮助,因为它们具有视觉效果:) 轮到您有4个选择。 移动骆驼。这会从尚未移动的人中选取骆驼,并在1-3个空格之间移动。您会得到1个硬币。当所有五个骆驼都移动时,回合结束,然后它们就可以全部移动 放置一个陷阱。这会一直持续到董事会结束。您选择+ 1 / -1陷阱。如果骆驼或骆驼叠落在上面,它们会移动+ 1 / -1,您会得到一个硬币。您不能在正方形0上放置陷阱。可以将陷阱放置在骆驼所在的位置,尽管它只会影响落在其后的骆驼。 回合赢家投注。您下注一个回合赢家。他们赢了您会得到5/3/2/1,具体取决于您是该骆驼的第一/第二/第三。 游戏赢家/输家。您押注谁将在比赛结束时排在第一或最后。根据您是否是1st / 2nd / 3rd / etc赌那只骆驼,您会得到8/5/3/1/1(我认为) 笔记: 有5只骆驼。它们从0-2随机开始。 当骆驼移动时(参见上面的触发方式),它们移动1-3格。如果将它们与另一个骆驼放在一个正方形上,则将它们放在另一个骆驼的“顶部”,从而创建一个骆驼堆栈。如果要移动骆驼,它将所有骆驼移动到骆驼堆栈上。栈顶的骆驼被认为是领先 如果您落在+1陷阱上(请参见上文,触发此陷阱),您将向前移动一格。适用标准堆叠规则。 但是,如果您遇到-1陷阱,则会向后移动一个方块。你去下,是在该广场上,如果任何骆驼的堆栈。 骆驼碰到正方形16时游戏结束。这立即调用回合结束和游戏结束触发器 每个骆驼只能进行一次获胜/失败者下注。也就是说,您不能押注骆驼来赢得或输掉比赛 挑战 在此挑战中,您将编写一个Python 3程序来扮演四人游戏,获胜者将赢得Camel Up的所有荣耀游戏 您的程序将收到gamestate,其中包含: camel_track:骆驼的位置 trap_track:陷阱的位置(格式为[trap_type(-1,1),播放器]的条目) player_has_placed_trap:一个数组,告诉您玩家是否在本回合放置了陷阱 round_bets:本轮下注的数组。形式为[骆驼,玩家] game_winner_bets / game_loser_bets:玩家为骆驼赢得或输掉游戏而进行的一系列下注。您将只能看到下注的玩家的价值,而不是下注的玩家的价值。您可以知道您的赌注。#形式[骆驼,玩家] player_game_bets:game_winner_bets / game_loser_bets的另一种表示形式。同样,仅查看您的机器人所下的赌注。 player_money_values:一个数组,显示每个玩家的钱数。 camel_yet_to_move:一个数组,显示骆驼是否已移动到这一轮。 除了游戏状态外,您还可以获得: 玩家:一个整数,告诉您您是哪个玩家号码(0-3)。 玩家应该返回的语法是: …

11
火箭机器人KOTH
火箭机器人 那一年是3024年。人们已经变得资源稀缺,无法在战争中冒险,因此战斗已经转移到了机器人身上。您的任务是构造一个与众不同的机器人,该机器人的火箭将摧毁敌人的敌人,击落所有即将到来的威胁。 游戏玩法 机器人 游戏玩法在10x15的网格上进行。您的机器人位于底部边缘之外,并且在网格的位置6,7和8处具有三个插槽。您的对手位于网格的顶部,在您的对面有三个插槽。 火箭队 从任何一个插槽中,您都可以发射火箭,前提是该插槽尚未销毁。火箭由创建时给出的方向列表组成,一旦发射,这些方向就无法更改。每转一圈,火箭将消耗列表的顶部,并朝该方向移动。火箭同时移动。如果两枚火箭以相同的砖块结尾,它们都会爆炸。如果火箭用完了命令,它将爆炸。如果火箭用尽燃料,则在移动100次后会爆炸。火箭爆炸时,它将在该磁贴中保留5圈,从而导致其他任何在那里移动的火箭也爆炸。 注意: 由于同时运动,两个火箭可以彼此通过而不会爆炸,只要它们不都在相同的瓦片中结束转弯即可。 目标 每场比赛的目的都是在保持对手生存的同时消灭对手的位置。可以从您拥有的任何活动插槽中发射火箭,并在发射前为其指定路径。您每转一圈发射一枚火箭,这意味着火箭将移动两次,然后再发射另一枚。决斗持续200回合,或者直到一个机器人插槽全部被破坏。 计分 比赛结束时,您每拥有一个实时角子机就获得1分,而您摧毁的每个对手角子机则得到1分。这意味着这是一场零和游戏,每场比赛将获得6分。 轮循将运行,以便每个机器人都彼此面对一次。如果有任何机器人使用RNG,则每个对决将是1000次对决。 实作 比赛代码可以在这里找到:https : //github.com/Cain93/RocketBots 每次提交都应扩大Bot班级。您必须重写该fireRocket方法。此方法接收Rocket[][]代表游戏板的Rockets的网格数组。你总是位于网格的底部,与斑点插槽[-1][6],[-1][7],[-1][8]。在网格上,未占用的地点将用表示null。如果磁贴中存在火箭,则可以通过访问该dis字段来识别它属于谁。“ ^”是您的火箭,“ v”是您的对手。 您必须返回一个给出了火箭说明的整数链接列表。要向上移动,请使用0。要向上和向右移动,请使用1,就在右边,使用2,依此类推,一直到7向上和向左。火箭将按您推动整数的顺序移动。例如,以下代码将使火箭向上旋转几圈,使之弯曲几圈,然后爆炸。 LinkedList<Integer> moves = new LinkedList<Integer>(); moves.push(0); moves.push(0); moves.push(0); moves.push(1); moves.push(7); moves.push(1); moves.push(7); 要更改从哪个插槽发射火箭,请更改curSlot字段。0是您最左边的插槽,2是您最右边的插槽。要检查插槽是否已损坏,请使用getSlot(int slotNumber)。 如果火箭在插槽上结束转弯,则该插槽将被销毁。您无需手动引爆火箭。 注意:火箭在发射出的插槽位置生成,但在评估碰撞之前会移动一次。因此,如果您从插槽0发射火箭,而第一步是正确的(2),那么您将摧毁自己的中间插槽。但是,向上和向右(1)是安全的举动。 如果要命名您的机器人,请覆盖该name()方法。 机器人将为每个决斗重新构建,因此所有静态变量都将被重置。 祝好运! 愿您的火箭真实飞行,而您的对手不过是闷烧的金属碎片。 暗示: 与试图击落对手的火箭相比,有目的地引爆火箭以产生爆炸是一种更容易防御的防御方法。 机器人例子 package bots; import java.util.LinkedList; import …

7
简单的Pazaak(旧共和国骑士团的《星球大战》纸牌游戏)
Pazaak是来自《星球大战》世界的纸牌游戏。它与BlackJack相似,两名玩家互相争夺,试图在不超过20名的情况下达到20名。每个玩家都有自己的四张牌的“副牌”,可以用来修改得分。 排行榜 截至2015年6月17日格林尼治标准时间16:40 编辑:Neptor被取消作弊资格。分数将尽快修复。 NEPTR:〜424,000 辛辛那提小子(Cincinnati Kid):〜422,000 内斯特:〜408,000 奥斯丁力量:〜405,000 巴斯蒂拉:〜248,000 愚蠢的谨慎玩家:〜107,000 傻大胆的玩家:〜87,000 模拟帕扎克杯季后赛 将尽快更新。 第一回合-内斯特vs巴斯蒂拉&奥斯汀·鲍尔斯vs辛辛那提小子 第二轮-内斯特vs奥斯汀·鲍尔斯&辛辛那提小子vs巴斯蒂拉 机械学 游戏是依次进行的。从主(房屋)副牌中拿出一张牌。娱乐场甲板可容纳40张牌:1到10的四份副本。发牌后,他们可以选择结束自己的回合并在下一回合接收新牌,保持其当前值,或者从侧甲板和站在新的价值上。玩家一决定他们想做什么之后,玩家二重复该过程。 一旦两个玩家都走了,手就被评估了。如果一个玩家被炸开了(超过20个),则另一名玩家将获胜,前提是他们也没有被炸开。如果一位玩家选择站立,而另一位玩家的手牌价值更高,则另一位玩家将获胜。如果两个玩家都选择站立,则手牌价值较高的玩家将获胜。如果出现平局,则任何玩家都不会赢。 如果不满足获胜条件,比赛将重复进行。如果玩家选择结束回合,则他们将收到一张新卡并且可以做出新选择。如果他们选择站起来,或者从侧甲板打出了一张纸牌,他们将不会获得新的纸牌,也无法选择新的动作。 这样继续游戏,直到一名玩家赢得比赛。游戏以五组中的三组中的最佳状态进行。 为什么选择“简单” Pazaak? 在《星球大战》世界中,Pazaak参与赌博。虽然包含这样的系统会为游戏增加更多的动态性,但是对于首次参加KoTH比赛来说,这有点复杂。 “真实” Pazaak侧甲板也由玩家自己提供,可以包括许多不同的牌选择,例如负牌,正负牌,翻牌,双牌和决胜局牌。这些也将使游戏变得更有趣,但是将需要一个赌博界面,并且将需要更多的竞争对手。在这个简单的Pazaak游戏中,每个玩家都拥有相同的侧甲板:从1到5的两个副本,从中随机选择四个。 根据游戏的成功程度,我可能会努力开发一个高级版本,在该版本中可以进行赌博和自定义侧甲板。 玩家们 该游戏的玩家将是您设计的机器人。每个漫游器都需要扩展Player类,导入Mechanics包并驻留在player包中,如下所示: package Players; import java.util.Collection; import Mechanics.*; public class DemoPlayer extends Player { public DemoPlayer() { name = "Your Name Here"; } …

16
CodeBots 2:事件驱动设计
欢迎使用Code Bots 2! 自上次代码漫游以来,您已经学到了教训。您试图找出更多的方法以更少的行数来适应更多的动作,现在您终于拥有了它。您将制作一个事件驱动的代码机器人。 您的漫游器必须由24行组成。每行遵循以下两种格式之一: Condition:Action 要么 Action 您的漫游器还具有足够的存储空间来存储5个A通过命名的整数E。整数可以存储0到23之间的值。 每回合,您将执行line C,除非其中一个条件为真。如果是这样,C则将包含条件为真的行号,然后将执行该行。在每个回合结束时,C将递增。 有可用条件: Start仅在第一回合才成立。您必须一次在您的代码中包含此代码 BotAt(N) 如果在N定义的位置有一个机器人,则为true Equals(A,B) 如果A等于B,则为true。它们可以是不同的类型,如果是,则它们将不相等。 Modified(A)如果A在上一回合中复制到,则为true 。 A必须是变量名,行或条件 Any(C1,C2,...) 如果任何条件为真,则为真 None(C1,C2,...) 如果没有一个条件为真,则为真 All(C1,C2,...) 如果所有条件都为真,则为真 Not(C)如果C为假,则为true。C必须是一个条件。 变量可以采用以下格式之一。前9个数字,可在此页面中使用N时使用。 A,B,C,D,E 0到23之间的数字 This 将返回当前所在的行号 Add(N1,N2,...) 将返回所有值的总和 Sub(N1,N2) 将返回N1减去N2 Mult(N1,N2,...) 将返回所有值的乘积 Div(N1,N2) 将返回N1除以N2 Mod(N1,N2) 将返回N1 mod N2 OVar(N) 将接受变量名称,并返回对手的变量 Line(N) 将在您的代码中返回第N行 Type(N) 将在您的代码中返回第N行类型(类型是操作的名称) …

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 

4
建立确定性的Go AI
这是我前几天想到的一个有趣的问题,它涉及到一些代码位与其他代码位竞争,不仅是在代码具有的属性中,而且是通过与其他代码位进行游戏。 您的任务是构建一个程序,该程序采用Go板的当前状态,并确定要采取或通过的动作。 您的程序将接受以下内容作为输入: 19行,每行19个字符,代表Go板上当前的棋子。的字符0代表一个空的正方形,1是黑色和2白色。 两个数字代表每个玩家拥有的囚犯件数(黑色,然后是白色)。 一个数字,代表要移动的人(黑色或白色)。如上所述,1是黑色,2是白色。 并输出以下内容之一: 一对坐标,a b表示移动的坐标。1 1是左上角的正方形,第一个和第二个数字分别代表向下和向右移动。 字符串pass,表示通过。 例如,该程序可能会收到以下输入: 0000000000000000000 0000000000000000000 0000000000000000000 0001000000000002000 0000000000000000000 0000000000000000000 0001210000000000000 0000100000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0002000000000001000 0000000000000000000 0000000000000000000 0000000000000000000 0 0 1 代表只玩了几步的游戏。 然后程序可能会输出6 5,这意味着“在顶部的第6点和左侧的第5点放置一块黑色的石头”。这将捕获处的白色石头7 5。董事会的状态将更改为: 0000000000000000000 0000000000000000000 0000000000000000000 0001000000000002000 0000000000000000000 0000100000000000000 0001010000000000000 0000100000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 …

1
Tatamibari求解器
背景 Tatamibari是由Nikoli设计的逻辑难题。 Tatamibari拼图游戏在带有三种不同符号的矩形网格上播放:+,-。和|。求解器必须根据以下规则将网格划分为矩形或正方形区域: 每个分区中必须只包含一个符号。 一个+符号必须包含在一个正方形。 甲|符号必须被包含在具有比宽度更大的高度的矩形。 甲-符号必须被包含在具有比高度较大的宽度的矩形。 四个片段可能永远不会共享相同的角落。(这是日本榻榻米瓷砖通常的放置方式。) 以下是一个示例难题,并提供了解决方案: 任务 解决给定的Tatamibari难题。 输入输出 输入是一个2D网格,代表给定的Tatamibari拼图。每个单元包含四个字符之一:+,-,|,和您所选择的字符来表示一个非线索细胞。在测试用例中,使用星号*。 您可以选择任何合适的输出格式,这些输出格式可以明确表示Tatamibari拼图的任何有效解决方案。这包括但不限于:(如有疑问,请在评论中提问。) 4元组的列表,其中每个元组包括矩形的顶部索引,左侧索引,宽度和高度(或任何等效表示形式) 与输入形状相同的数字网格,其中每个数字代表一个矩形 坐标集列表,每个坐标集包括矩形中单元格的所有坐标 如果难题有多个解决方案,则可以输出任意数量(一个或多个)的有效解决方案。输入保证至少有一个解决方案。 测试用例 Puzzle: |-* *+| *-* Solution: 122 134 554 ===== Puzzle: +*** **|* *+** ***- Solution: 1122 1122 3322 3344 ====== Puzzle: |*+*+ ***** ****- ***+| +**** Solution: 12233 12233 44444 55667 …

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.