Questions tagged «king-of-the-hill»

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

12
天皇官邸
在中国古代,社会等级不是由出生或财富决定的,而是由一个人在科举考试中表现出色的能力决定的。天堂的神圣统治者翡翠皇帝号召所有臣民接受检查以确定他们的身价,然后由谁下达神圣的使命来统治中国。 官僚规则: Divine官僚机构由以0开头的非负整数值等级组成。官僚机构的每个成员(bot)都属于一个等级。每个等级可以容纳任意多个成员,但除非以上所有等级都为空,否则不能为空 游戏开始时,所有成员的等级均为0 每一次官僚机构的每个成员都必须参加考试。考试包括正确猜测列表的布尔值。列表的长度是该成员上方的等级编号。 试题由以上级别的随机成员准备。最高级别的成员直接从JadeEmperor(请参见下文)获得问题。 考试分数至少达到50%的会员有资格晋升。考试分数低于50%的成员有资格降级。 只有在以下等级中有晋升资格的成员代替其职位时,才有资格降级的成员的排名才降低一级。 只要没有排名空缺,所有有资格晋升的会员的等级都会提高一。 如果不是所有符合条件的成员都可以降级或晋升,则优先级将降到最低(降级)。最高(促销)分数。领带随机断裂。 成员等级每回合最多只能改变1。 游戏规则: 每个机器人在游戏开始时都会被随机分配一个ID,该ID在整个过程中不会改变。在JadeEmperor具有ID -1,其他所有的连续非负的ID,从0开始。 所有机器人同时竞争 游戏运行100圈,机器人的得分为其在那段时间内的平均排名。 总得分是通过运行1000场比赛并取平均结果而获得。 每个Bot是一个Python 3类,实现以下四个功能: ask(self,n,ID),它通过返回list长度为n的布尔值a进行检查。ID是必须猜测该列表的机器人的ID。ask()可以在一个机器人的单个回合中被多次调用,但一点也不被调用。 answer(self,n,ID),这是通过返回list长度为n的布尔值a来回答考试的尝试。ID是ask()生成检查的机器人的ID 。answer()每个机器人每轮准确调用一次。 update(self,rankList,ownExam,otherExams)一旦控制器执行了所有降级和降级,就会调用。它的参数是:整数列表,按所有漫游器的ID列出所有等级;一个由两个列表组成的元组,首先是考试问题,然后是漫游器给出的答案(以防万一它忘记了);然后是元组列表,类似地由考试答案对组成,这次是机器人执行的所有考试。 __init__(self, ID, n) 传递该机器人自己的ID和竞争机器人的数量。 允许类实现其他私有功能 明确允许定义其他变量,并使用它们存储有关过去考试的数据。 禁止编程元效果,这意味着任何直接访问其他机器人代码,控制器代码的尝试均会导致异常或类似情况。这是考试策略的竞赛,而不是代码黑客的竞赛。 明确允许尝试互相帮助的机器人,只要它们不通过元效应来做到,而是纯粹通过传递的信息来实现 update() 仅在其他语言可以轻松转换为Python 3的情况下才允许使用其他语言。 库numpy将作为导入np。版本是1.6.5,这意味着它使用了旧的随机库。如果您有numpy 1.7,则可以使用旧功能numpy.random.mtrand进行测试。请记住要剥离mtrand以便提交。 如果机器人在运行时导致异常,则该机器人不合格。任何代码过于混乱以至于无法确定何时在调用ask()或时answer()都不会生成长度为n的列表的bot 也会被抢先取消资格。强制我进行深度复制输出的机器人的得分为-1。 类名必须唯一 每个人可以使用多个漫游器,但是仅采用最新版本的迭代更新漫游器。 由于关于机器人相似性似乎有些困惑: 您无权发布其他漫游器的副本。这是真正适用于此挑战的唯一 标准漏洞。 您可以与其他机器人(包括其他人的机器人)共享代码。 您不得提交从另一只由一个微不足道的变化的策略(如种子为出题的变化)不同的机器人,除非你能证明这种抄送机器人的数量是成功所需的最小制定他们的策略(通常是两个机器人进行合作)。 示例机器人: 的JadeEmperor始终是比赛的一部分,但不竞争; 他是最高级别的机器人考试的生成器。他的考试是随机的,但不是统一的考试,目的是让智能机器人有进步的方法。 class JadeEmperor: …

8
发起政变成为山丘之王!
排行榜 154 Calculator 144 Taxman 138 Statistician 137 Solver 137 RandoAggroLawyer 136 Gambler 134 Turncoat 119 Lawyer 119 BloodyMurder 113 Bandit 79 Challenger 74 Mask 64 Random 提供了最新匹配的存档,包括日志和所有输出文件。 Brilliand的计算器是赢家!他的回答已被接受,但这并不意味着挑战已经结束。随时提交新条目或编辑您当前的条目,并尝试将他从王位上撤下。我将在本月底向领导奖赏。 比赛规则 Coup是一款专为2-6位玩家设计的纸牌游戏,我们将与两名玩家一起玩。它由一个金库(对于我们而言是无限的)和一副15张卡片组组成,每张卡片包含以下3种类型:大使,刺客,上尉,孔戴萨,杜克。游戏开始时,每位玩家将获得一枚硬币,并随机发两张牌,直到必要时,他们都会对其保密。目标是成为手中拿着牌的最后一个玩家。 在轮到自己时,玩家可以不考虑其牌而采取以下操作之一: 收入:从金库中取出1个硬币。不可阻挡且不可挑战。 外国援助:从金库中取出2个硬币。可以被玩家与杜克封锁。勇往直前。 政变:从游戏中移除您选择的一个对手的卡牌。花费7个硬币。受害人可以选择丢弃哪张卡。如果玩家在回合开始时拥有10个或更多硬币,则他们必须发动政变。不可阻挡且不可挑战。 根据自己的牌,玩家还可以在回合时采取以下其中一项操作: 交换:带大使的玩家可以从套牌中拿出两张牌。然后,他们可以从手牌和抽牌中选择与原来数量一样多的牌。(也就是说,如果他们只有一张卡,则可以将其交换为一张已抽出的卡或保留它;如果他们有两张卡,则可以选择四张卡中的任意两张。)两张不需要的卡将退回到卡组中。不可阻挡,但具有挑战性。 暗杀:具有刺客的玩家可以花费3个硬币从游戏中删除对手的卡牌。受害人可以选择丢弃哪张卡。可以由一名持孔戴莎游戏的玩家阻止,在这种情况下,不会退还硬币。具有挑战性,在这种情况下,硬币将被退回。 偷:拥有队长的玩家可以从对手那里拿走两枚硬币。如果对手拥有一枚硬币,他们将拿走一枚硬币。如果对手的硬币为零,则他们可能不会偷。可能会被一名带大使或队长的球员阻挡。具有挑战性。 税:拥有杜克大学的球员可以从国库中取出3个硬币。不可阻挡,但具有挑战性。 政变的棘手部分是允许玩家撒谎他们所拥有的卡!不需要卡就可以尝试执行与之相关的操作或阻止。 当玩家执行纸牌动作时,任何对手(甚至没有受到该动作伤害的对手)都可以挑战演员并说他们不相信自己拥有该纸牌。如果挑战者是正确的,则该动作将被取消,并且参与者必须丢弃他们选择的一张卡(如果适用,则收回他们花费的所有硬币)。如果不是,则采取该动作,演员将被挑战的卡退还给甲板并抽出一张新卡,挑战者必须丢弃其中一张卡。玩家必须诚实面对挑战时所持的牌。 从暗杀,政变和失败的挑战中被淘汰的卡牌不会返回到副牌组,但作为获胜挑战的一部分而显示的卡牌会被返回到副牌组。 障碍可能像行动一样受到挑战。例如,如果玩家A要求外国援助,而玩家B说“我有杜克大学,而我阻止了您的外国援助”,则A可能会说“我不相信您有杜克大学”。如果这个说法是正确的,则B因被骗而丢了一张卡,A拿了2个硬币;如果不是这样,则A会丢失一张牌,并且不会获得硬币,B则必须将其公爵归还给甲板并抽取一张新卡。 必须充实与刺客合作的障碍和挑战方式。假设玩家A说“我有一个刺客,而我暗杀了玩家B”。如果B不尝试挑战或阻止A,那么暗杀将继续进行:B丢了一张牌,A支付了3个硬币。 另外,B可以通过说“我不相信你有刺客”来挑战。如果是这样,则A丢弃一张卡并返回其硬币,而B不受影响,并且A的回合结束。如果B的信念是错误的,并且A持有刺客,那么B会丢掉他们的所有牌并失败,一张是针对不正确的挑战,另一张是来自暗杀。 B不用挑战,而可以说“我有一个伯爵夫人,我阻止了暗杀者”。如果A相信B,那么A的回合结束并且他们的硬币不退还。但是A可以挑战障碍并说“我不相信您有伯爵夫人”。如果B实际上确实持有Contessa,则A会因错误的挑战而丢掉一张牌。但是,如果B不这样做,则B会因为被撒谎而丢掉一张卡,而从暗杀中又损失一张。 与上述解释类似的逻辑也适用于机长的偷窃能力,在这种情况下可以挑战动作或障碍。 如果您没有成功地暗杀一名暗杀者,或者被误认为声称自己有一名孔戴莎来阻止暗杀,则有可能丢掉您的两张牌并在一个回合中被淘汰。您从挑战中丢失了一张卡,而在暗杀中丢失了一张卡。 挑战 …

9
不对称KOTH:抓住猫(猫螺纹)
不对称的KOTH:抓住猫 更新: 由于Controller.java没有捕获到异常(仅错误),因此更新了主文件(包括新的子任务)。现在,它确实可以捕获错误和异常并打印它们。 这个挑战包括两个线程,这是cat线程,catcher线程可以在这里找到。 控制器可以下载 此处。 这是一个不对称的KOTH:每个提交都是猫还是一个捕手。每对猫和捕手之间都有游戏。猫和捕手的排名各不相同。 捕手 六角形网格上有一只猫。您的任务是尽快捕获它。每转一圈,您都可以在一个网格单元上放置一个水桶,以防止猫能够去那里。但是猫不是(也许)那么笨,每当您放置一个桶时,猫都会移动到另一个网格。由于网格是六角形的,因此猫可以向6个不同的方向移动。您的目标是用水桶包围猫,速度越快越好。 猫 您知道捕手想通过在您周围放水桶来接住您。当然,您会设法逃避,但是由于您是一只懒惰的猫(就像猫一样),您当时确实迈出了一步。这意味着您不能待在同一个地方,而是必须移至周围的六个景点之一。每当您看到捕手放了一个新的水桶时,您就会进入另一个牢房。当然,您尝试逃避的时间越长越好。 格网 网格是六边形的,但是由于我们没有六边形的数据结构,因此我们采用一个11 x 11正方形的2d数组并模仿该六边形的“行为”,即猫只能在6个方向上移动: 拓扑是环形的,这意味着如果您踩到阵列“外部”的单元格,您将被转移到阵列另一侧的相应单元格。 游戏 猫从网格中的给定位置开始。捕手可以先走,然后猫及其捕手交替走动,直到猫被抓到为止。步骤数是该游戏的分数。猫试图获得尽可能高的分数,捕手试图获得尽可能低的分数。您参与的所有游戏的平均总和就是您提交的分数。有两个单独的等级,一个用于猫,一个用于捕手。 控制者 给定的控制器是用Java编写的。作为捕手或猫,您每个人都必须完整地实现一个Java类(已经有一些原始示例)并将其放置在players包中(并更新Controller类中的猫/捕手列表),但是您也可以编写该类中的其他功能。控制器随附了简单的cat / catcher类的每两个工作示例。 该字段是一个11 x 112D int数组,用于存储单元格当前状态的值。如果一个单元格为空,则它具有值0;如果有一只猫,它具有值-1;如果有一个存储桶,则有一个值1。 您可以使用一些给定的功能:isValidMove()/ isValidPosition()用于检查您的移动(cat)/位置(catcher)是否有效。 每次轮到您时,takeTurn()都会调用您的函数。参数包含当前网格的副本,并具有类似于read(i,j)读取处的单元格的方法(i,j),以及isValidMove()/ isValidPosition()检查答案是否正确的方法。这也可以管理环形拓扑的环绕,这意味着即使网格只有11 x 11,您仍然可以访问单元格(-5,13)。 该方法应返回一个int包含两个元素的数组,这些元素代表可能的移动。对于猫来说,{-1,1},{0,1},{-1,0},{1,0},{0,-1},{1,-1}它们代表了猫想去的位置的相对位置,而捕手则返回了他们想要放水桶的位置的绝对坐标{i,j}。 如果您的方法产生无效举动,则您的提交将被取消资格。如果在您的目的地已经是一个铲斗或不允许该举动/目的地已经被占用(作为猫),或者如果已经有一个铲斗/猫(作为捕手),则该举动被视为无效。您可以使用给定的功能事先检查一下。 您的提交应该相当快地工作。如果您的方法每个步骤花费的时间超过200毫秒,则也将被取消比赛资格。(最好少得多...) 程序可以在步骤之间存储信息。 意见书 您可以根据需要进行任意数量的提交。 请不要显着改变您已经提交的内容。 请每个提交一个新的答案。 每个提交最好都具有唯一的名称。 提交内容应包括您班级的代码以及可以告诉我们您提交内容的工作方式的描述。 您可以在<!-- language: lang-java -->源代码前写一行,以自动突出显示语法。 计分 所有猫都将与所有捕手竞争相同的次数。我将尝试经常更新当前分数,当活动减少时将确定获胜者。 这项古老的Flash游戏启发了这一挑战 感谢@PhiNotPi进行测试并提供一些建设性的反馈。 …

4
脚本机器人沃兹!
脚本机器人沃兹! 结果已经公布,刺客是我们的冠军,赢得了3场比赛中的2场!感谢所有提交脚本机器人的人!特别感谢BestOpportunityBot的号角,它显示了出色的路径并充分利用了所有操作选项。 地图1 刺客很早就拿出BestOpportunityBot,其余的比赛很无聊。详细的按此播放。 刺客:10 HP,造成10点伤害,受到3点伤害 避免者v3:10点生命值,造成0点伤害,受到0点伤害 完成吞噬:10马力,造成0点伤害,受到0点伤害 最佳机会竞猜:0 HP,造成3点伤害,受到10点伤害 地图2 BestOpportunityBot完成了本场比赛的大部分工作,但刺客最终将他带走。详细的按此播放。 刺客:2点生命值,造成10点伤害,受到9点伤害 最佳机会竞猜:0 HP,造成32点伤害,受到10点伤害 避免者v3:0点生命值,造成0点伤害,受到12点伤害 完成吞噬:0 HP,造成0点伤害,受到11点伤害 地图3 BestOpportunityBot将所有人推入了这场比赛的陷阱。很酷。详细的按此播放。 最佳机会竞猜:10 HP,造成30点伤害,受到0点伤害 刺客:0 HP,造成0点伤害,受到0点伤害 完成吞噬:0 HP,0造成的伤害,0受到的伤害 避免者v3:0 HP,0造成的伤害,0受到的伤害 感谢您的回答!由于只有4个脚本机器人,我们将放弃三场免费比赛的比赛计划,以下每张地图上都有一场比赛。获胜记录最高的脚本机器人获胜。如果出现平局,我们将突然死亡,其中打破平局的脚本机器人将首先获胜。 您应该选择接受的任务是编写一个脚本机器人,该脚本机器人可以遍历ASCII映射并销毁其对手。每场战斗都将采取基于随机启动顺序回合制游戏的形式,其中每个Scriptbot都有机会花费自己的能量点(EP)采取行动。GameMaster脚本将输入并解释每个Scriptbot的输出。 环境 每个Scriptbot都包含在其自己的目录中,在该目录中可以从map和stats文件中读取文件并对其进行读/写data操作。该data文件可用于存储任何可能有用的持久性信息。 统计文件 该stats文件包含有关您的对手的信息,其格式如下。每个玩家代表在单独的行上。第一列是玩家ID(@表示您)。第二列是该玩家的健康状况。 1,9HP @,10HP 3,9HP 4,2HP 地图文件 该map文件可能看起来像这样... #################### # # # # # 1 # # 2 …

1
设计和解决迷宫[在沙箱中暂停]
你的任务是扮演的角色都在角色这一幕从成立。在其中,Cobb给Ariadne带来了挑战: 您有两分钟的时间设计一个迷宫,需要一分钟的时间来解决。 该描述将有一些自由。最重要的是,这种挑战不是基于时间的,而是基于迷宫和迷宫求解器的效率来得出分数。 对于此挑战的许多修改,我们深表歉意,因为我们正朝着一种简单而公平的格式过渡。 第一部分:迷宫格式 所有的迷宫都是正方形。迷宫中的一个单元表示为零索引元组row column。 墙由两个二进制字符串表示:一个用于水平墙(阻止行之间的移动)和用于垂直墙(反之亦然)。在NxN迷宫中,Nx(N-1)每种类型的墙壁都有可能。让我们以一个3x3的示例为例,其中标记了单元格: A B | C --- D | E F --- G H | I 所有可能的垂直墙为:AB BC DE EF GH HI。转换为字符串,显示的墙壁011001用于垂直墙壁和010010水平墙壁。另外,“二进制字符串”是指“字符'0'和'1'”。 完整的迷宫格式是一个字符串,其中包含以下顺序: 宽度 开始元组 末端细胞元组 水平墙 垂直墙 例如,这个迷宫: 0 1 2 3 4 _________ 0 | | E| _| 1 | _|_|_ | …

15
手动逻辑门
编写一个模拟基本逻辑门的程序。 输入:一个全大写单词,后跟2个1位二进制数字,以空格分隔,例如OR 1 0。门OR,AND,NOR,NAND,XOR,和XNOR需要。 输出:输入的逻辑门的输出将被赋予两个数字:1或0。 例子: AND 1 0成为0 XOR 0 1变得1 OR 1 1成为1 NAND 1 1成为0 这是codegolf,所以最短的代码获胜。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

12
让我们玩一些收割者-提交截止
注意:本比赛的获胜者是杰克!不再接受任何提交。 这是应对挑战之王的聊天室。这是我的第一个,所以我很愿意提出建议! “收割者”是由“解决问题的艺术”开发的一种游戏概念,涉及耐心和贪婪。在修改了游戏以适应KOTH风格的比赛之后(感谢@NathanMerrill和@dzaima的建议和改进),这就是挑战。 游戏的工作原理如下:我们有一个称为Reap的值,该值在每个刻度线内乘以给定的常数。每次滴答之后,每个漫游器都可以选择“收获”,这意味着将Reap的当前值添加到一个人的分数中,并将Reap降低到1。 但是,机器人必须在“收割”之间等待一定数量的滴答声,而赢得游戏所需的点数也必须固定。 很简单?这是您的输入: 输入输出 您将在Python 3中编写一个需要3个输入的函数。第一个是self,用于引用类对象(稍后显示)。第二个是Reap,如果您要“收割”您将获得的收割的当前值。第三个是prevReap,在上一个滴答声中收获的机器人列表。 您可以在函数中访问的其他对象: self.obj: An object for your use to store information between ticks. self.mult: The multiplier that Reap is multiplied by each tick self.win: The score you need to win self.points: Your current set of points self.waittime: The amount of ticks that …

30
从原动力中恢复原动力
定义:素数幂是自然数,可以以p n的形式表示,其中p是素数,n是自然数。 任务:给定素数p n > 1,返回素数p。 测试用例: input output 9 3 16 2 343 7 2687 2687 59049 3 计分:这是代码高尔夫球。以字节为单位的最短答案将获胜。
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 

7
筷子用KoTH点突变
基本规则(与我的不同) 故事 现在是4579年,人类现在有2只手,每只手有1001个手指。筷子已变得毫无根据。而且@Dennis比@Martin代表更多...手绘红色圆圈现在已被否决... Jon Skeet在每个SE网站上都达到2万亿代表...是的,我知道 筷子是一个已经解决的手游戏。因此,为了解决这个问题,我创建了它的变异体。我增加了手指的数量。 游戏规则 播放方式 每个人都从两只手开始。每只手有1001根手指。每只手都以每只手上的一根(一根)手指开始。在回合中,您可以“击中”其他玩家的手。要进行击中,请选择一只手来进行打击,然后选择一只手来进行打击。现在,被击中的手的手指数量与刚开始时的手指数量相同,并且在您用其击打时手上的手指数量也是如此。 前 P1: 1,1 P2: 1,1。P1[0]命中P2[1]。现在手指在P1:1,1 P2:1,2。现在P2[1]点击p1[0]。现在,手指为P1:3,1P2 1,2。 如果一只手的手指向上伸出1001或更多,则那只手伸出。然后,获得帮助的玩家(轮到他们)可以“分开”。分裂是指将手伸进去并且将手指的数量减半(向上舍入),然后将这些手指放在另一只手上,将其重新伸入。 前 P1:1000,2P2 7,7。P2[0]命中P1[0]。分数为P1:0,2P2 1,1。P1[1]轮到他拆分,得分为P1:1,1和P2 7,7。 当一名玩家举手时游戏结束。得分由获胜者的手指数量来得分。积分越多越好。失败者一分未得。 使用了其他规则,但是这里使用了这些规则。 每个人都扮演所有人(循环赛) 结束游戏 从您赢得的每一轮中累计您的积分。然后平均每个人的分数。将您的总数除以平均分,得出最终分数。多数积分获胜。 实际规则 标准漏洞 请不要不尝试解决游戏。我实际上必须能够运行它:P 确保机器人可以快速运行。判断轮数需要一段时间 程序中需要的所有库都必须位于默认的python库中。同时列出您需要导入的文件。进口也只是基本的进口(在数学我做的:import math) 答案必须在Python 3.x中有效 处理程序 您的机器人将是带有play功能的自己的Python 3文件。 play将通过两个分别由两个数字组成的列表。该数字表示每只手上的手指数。第一个清单是您自己的手。 如果您选择打对方的手,则返回两位列表。第一位是您用来击打的手的索引(对于第一手0,1最后一位),第二位是您在对手上击打的手的索引。 如果选择拆分,则返回任何其他真实值。 多田! 控制器可以在这里找到。将每个漫游器保存在自己的文件中,并在中列出每个漫游器的文件名(不带.py)botnames。 最后说明: 您和其他漫游器将首先轮流使用。如果游戏没有在100,000(十万)回合中终止,则该游戏将终止并且任何机器人都不会赢。 不能保护控制器免受永久性移动的困扰,但是不必要的开销将被强烈反对。

4
狮子座的扑克脸
扑克脸 介绍 Leo喜欢玩扑克,但是他在Tech Inc.的工作要求他学习如何打法。不反对作为计算机科学家的Leo。他决定花更多的时间来学习扑克,并用它编写一个扑克机器人来帮助他玩得更好。但是现在,狮子座遇到了一个问题:为了了解如何更好地玩游戏,狮子座需要观察由多个“人物”组成的多个游戏,但是“人物”需要不同的游戏风格来提高游戏的质量和真实性。 挑战 Leo回忆说,实际上有一个致力于编程挑战的网站,正在寻求您的帮助!您的工作是编写一个程序,玩“ Pokerface”(五张扑克)的修改版。该程序将以您希望的任何格式将其输入为5张牌,然后程序将输出: 如果玩家希望交换纸牌,则完全(区分大小写)为“ true”,“ 1”或“ t”,否则为任何其他非空输出。 如果为true,则显示玩家希望交换的卡片索引列表和/或卡片名称。 0到3之间的一个数字,指定玩家需要多少张额外的纸牌。 打印出玩家希望使用的手。 (请参见下面的格式) 扑克规则 由于pokerface是基于文本的冒险游戏,因此必须以一致的方式提供卡片。卡用两个字符代码表示,第一个字符是西服,第二个字符是卡的名称。 牌: 2-9 = 2-9 10 = T 杰克= J 皇后= Q 国王= K ace = A 西装: 黑桃= S 球杆= C 心= H 钻石= D 所以黑桃的王牌是SA,红心的10是HT,钻石的第4是D4,依此类推。 一轮Pokerface包含四个步骤: 重新洗牌,向每位玩家发五张牌。 每个玩家都有机会交换任意数量的卡。 每个玩家都有机会再获得最多三张牌。 每个玩家都必须展现自己的最佳手牌。 最佳牌手获胜,并获得该玩家的积分。如果出现平局,两位选手都将获得积分。 在一个游戏中,进行了十轮比赛,得分最高的玩家获胜并获得一个“胜利点”。如果出现平局,则两个玩家都将赢得一个胜利点。 …

10
代码机器人3:并行编程反模式
欢迎回来!我很高兴提出第三个CodeBots挑战。这已经花了很长时间了。这项挑战将分为3个部分:简短版本,详细版本和其他详细信息。 短版 每个参赛者将编写一个24命令程序。这些bot会在世界各地移动并将其代码复制到其他bot中,同时试图阻止其他bot这样做。可能的命令之一是no-op Flag。如果一个机器人拥有Flag比其他任何一个机器人更多的东西Flag,那么您将获得积分。您可以通过获得最多的积分来获胜。 以上所有这些对于过去的两个挑战都是正确的。这次,机器人将能够同时运行多行代码。 长版 API 每个漫游器将精确地有24行,每行采用以下格式: $label command parameters //comments 标签和注释是可选的,并且每个命令具有不同数量的参数。一切都不区分大小写。 参量 输入的参数可以是以下格式: 介于0到23之间的值。 一个变量:A,B,C,D 使用加法的值:A+3或2+C 用#符号指定的一行代码(#4代表第5行,而#C+2代表由计算得出的行C+2)。 您可以使用$label而不是指定一行代码。 对手的变量或代码行,由指定*。您的对手是您面对的方形机器人。(*B代表对手的B价值,而*#9代表对手的第十行)。如果那个方格中没有人,则不执行该命令。 指令 移动V 移动机器人North+(V*90 degrees clockwise)。运动不会改变方向。 转V V*90 degrees顺时针旋转机器人。 复制大众 将任何内容复制V到中W。如果V是行号,则W必须是行号。如果V是变量或值,则W必须是变量。 旗 什么也没做。 星空卫视 启动附加到变量的新线程V。立即,在以后的每个回合中,线程将在line上执行命令V。 如果V已经连接到线程,则此命令为无操作。如果V是对手的变量,那么对手将启动附加到该变量的线程。 停止V V在此回合结束时停止附加到变量的线程。 锁V 防止V以任何方式使用该行或变量,除非被称为的线程使用Lock。随后Lock由同一线程进行的调用将解锁V。不能在对手的变量或行上调用锁。 如果康德大众 这将测试Cond。如果条件为true,则它将线程指针移至行号V,否则移至行号W。该行将立即执行。 条件句可以X=Y,X<Y,!X,或?X: X=Y 测试两条线是否属于同一类型且来自同一机器人的行,或者测试两条值是否等于相同数量。 X<Y测试的值X是否小于Y。 !X测试变量或行X是否被锁定(如果锁定,则返回true) ?X 测试给定变量是否附加了线程 额外细节 …

9
在荒岛上寻宝
介绍 您和一些仆人一起被困在荒凉的岛屿上,正在寻找宝藏。搜索时间越长,发现的宝藏越多。搜索的人越少,找到的人就越多。 由于物资有限,这位领导人决定每晚减少几个人,最多占四分之一。他决定不提前告诉任何人确切的死亡人数。 您控制着一个由5人组成的小组,他们将冒险逃出营地为您寻找宝藏。 目的 这项比赛的目的是积累尽可能多的财富。您的仆人每一次不尝试返回营地的回合,都会发现一定数量的宝藏。您的仆人可能会在不同时间返回营地。 工人停留在每一个转弯寻找宝藏的时候,工人都会发现1+R宝藏,这R是已经回到营地的工人人数(在所有机器人中)。僵尸程序不计入此计算。 在每天开始时,将选择一个n从2到的随机数()max(3, floor(num_live_players/4))。(对于10名选手的第1天,这是2对max(3,50/4)=12。对于20名球员,第1天,这将是2对max(3,100/4)=25。)这个数字代表的球员谁将会留下来的那一天死亡的人数,并且不会给你的程序。 如果仆人是最后n归还的人之一,他/她将死去并且无法将他/她发现的宝藏转移给您。此外,在接下来的冒险中,仆人将无法参加寻宝活动。 您的最终分数是每次冒险(控制者的奔跑)获得的平均宝藏量。 如果尝试在同一转弯返回营地的人多于空位,则随机数将确定谁进入和死亡。 从日出到日落,这个岛上的一天持续30转。由于夜间有许多危险的动物,因此日落之前无法归还意味着您将无法进入营地。 输入输出 您的程序应在整个模拟过程中运行。 在仿真开始时,INDEX I将输入Ibot的索引(该索引从1开始计算)。 在每天的开始,START_DAY D/N将输入到您的程序中,其中D是天数(从开始1),并且N等于max(3, floor(num_live_players/4)),这是该天可能死亡的最大人数。 每次转弯开始时,START_TURN T都会输入到您的程序中,T转弯编号(从开始1)在哪里。 程序收到此消息后,它将以仆人的动作列表作为响应,每个动作用逗号隔开。 有效的动作是: R:尝试返回营地。 S:继续寻找宝藏。 N:仆人已经死亡或在营地。 输入无效的举动将被解释S为该机器人还活着并且不在营地内,N否则。 在每个回合结束时,将一个字符串传递给您的程序: END_TURN [Turn #] [Bot 1 Moves] [Bot 2 Moves] ... 每个漫游器的仆人动作都以逗号分隔。 这些举动将是以下之一: R:成功返回该回合的营地。 r:未能返回该回合的营地。 S:仍在寻找宝藏。 D:死于较早的回合。 N:已经回到营地了。 在整个模拟过程中,机器人和仆人保持相同的顺序。 例如: INDEX 2 …

2
BlackJack KOTH比赛
黑杰克 当我为最初的KOTH挑战进行爆炸时,我想提出另一个挑战。对我而言,这些AI挑战的乐趣在于改进了一个相对简单的机器人,该机器人巧妙地玩了非常简单的游戏。由于纸牌游戏的概率性质,我认为二十一点就像TPD一样可能是一个有趣的KOTH游戏。 所有规则均源自该网站对BlackJack鞋子的描述 卡片和套牌规则 机器人在四(4)名竞争对手和一(1)名经销商的牌桌上玩 所有玩家和发牌者都共用一(1)张鞋(洗过的甲板),直到用尽为止,此时将添加新的随机洗过的甲板,并继续比赛。目前,尚未通知机器人已添加新平台。如果缺少此功能会引起足够的困扰/麻烦,则可以添加此类通知。 每回合买入10张,免费提供卡 完美/理想手牌得分为21 所有面部卡的值为10 所有数字卡都值钱 ace值11或1。这将由框架自动处理,而不是由自动程序处理。 按照规则,所有玩家的卡面朝上并可见。经销商的一张牌面朝下,另一张牌面朝上。 计分 得分超过21且使用ace作为11迫使ace的价值降低到1 超过21的分数不能强制低于21“破坏”机器人的阈值 经销商 庄家抽牌直到他破产或得分超过17 ,这时他被迫站立 博彩和筹码 在每一轮的开始,一个买入的10充电,所以有最低持股比例的10,最小下注 1 注 -赌注是下注参数的绝对值,所以也懒得尝试下注。 无法负担买入的机器人被从比赛中删除 下注时,机器人不能下注超过其拥有的筹码 如果有可能下注,则将筹码下注从机器人中删除并添加到赌注中 赢得下注将使机器人获得2倍筹码下注。但是,由于从筹码中减去了赌注,因此该机器人收支平衡,然后赢得了该赌注的1倍。 机器人只有在其分数大于发牌人的分数时才能赢得赌注 游戏性细目 单手 游戏开始时,每位玩家都会迭代发一张牌,并从其筹码中减去10美元的买入费/最低赌注。 经销商抽奖 第二次过关,并且另一张卡发给所有玩家。 经销商抽奖 然后(按照处理它们的顺序)按照“程序员界面”部分中的说明执行每个漫游器,并且必须移动或站立。博彩被视为举动。注意,下注不会影响机器人进行进一步移动的能力。很有可能先下注然后下一张牌,也有可能在出局前先下多张牌并下注。 当所有机器人停止运行或站起来时,发牌人的游戏极限达到17 然后将机器人的分数与庄家的分数进行比较,赌注获胜和输掉 一轮 被认为构成五(5)手。在两手之间,对参赛者列表进行排序以删除玩家,然后进行进一步处理,以确保所有机器人都玩相同数量的手(这一事实规定,参赛人数不会在四人桌之间平均分配) )。 程序员的界面和法律举措 如CardShark文件中所述: # DOCUMENTATION # INPUT SPECIFICATION # $ ./foo.bar …

2
KOTH:击沉
介绍 对于我的第5个KOTH,我向您提出了一个基于著名游戏《战舰》的挑战,但有一些曲折。您将只指挥一艘船,您可以在5个“传统”级中进行选择,但是您每回合就可以采取多种行动,包括移动!这是一个FFA(全民免费)计划,您的目标将是成为最后一名战舰。 原理 该游戏是回合制的。在游戏开始时,您必须选择飞船的等级。然后,每回合,玩家将能够根据自己的飞船执行几个动作。 游戏在2D网格(X,Y)上进行,该网格的边以这种方式定义: X = 30 + numberOfPlayer Y = 30 + numberOfPlayer 每艘船的起始位置都是随机的。 播放顺序在每个回合中都是随机的,您将不知道自己在“队列”中的位置或玩家数量。游戏持续100转或直到只有一艘船还活着。 每当您击中敌舰或被击中时,您将获得或失去积分。得分最高的玩家获胜。优胜者将获得赏金(价值取决于参与者的数量)。 控制器通过命令参数为您提供输入,而程序必须通过stdout输出。 句法 第一回合 您的程序将被调用一次,没有任何参数。您必须输入1到5(含)之间的整数来选择您的飞船: 1:驱逐舰[长度:2,移动/转弯:3,射击/转弯:1,射程:9,地雷:4] 技能:自由轮旋转(无冷却) 2:潜艇[长度:3,移动/转弯:2,射门/转弯:1,射程:5,地雷:4] 技能:可以俯冲/浮出水面(见输出)。在水下时,您只能使用“运动”动作,并且只能通过扫描才能看到。您不会被射击击中,但是会受到地雷的伤害。 3:巡洋舰[长度:3,移动/转弯:1,射击/转弯:2,射程:9,地雷:2] 技能:可以修理(参见输出) 4:战舰[长度:4,移动/转弯:1,射击/转弯:3,射程:7,地雷:1] 技能:可以屏蔽(见输出) 5:运载工具[长度:5,移动/转弯:1,射击/转弯:1,射程:7,地雷:3] 技能:射门对目标造成AOE(作用范围)伤害(1点飞溅伤害)。如果目标被击中出手,高达2个细胞这船也将被破坏。 转弯 输入值 每次调用程序时,它将收到以下格式的参数: Round;YourPlayerId;X,Y,Direction;Hull;Moves,Shots,Mines,Cooldown;Hits,Sunken,Damage;Underwater,Shield,Scan;Map 轮次按1分索引。 输入示例 1;8;1,12,0;111;1,2,2,0;0,0,0;0,0,0;UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.O.....UUUUUUUUXXXX.O.....UUUUUUUUXXXX.O.....UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUXXXX.......UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 在这里,这是第一轮,您是玩家8。 您的船位于(X = 1,Y = 12)上,您的方向朝顶部(0 =顶部,1 =右,2 =底部,3 =左) )。 …

19
KOTH-加载的RPS
竞赛永久开放-2017年8月10日更新 即使在2017年6月5日,我宣布了一个获胜者(他将被保留为最佳答案),我仍将选择新的机器人并更新结果。 6月5日的结果 恭喜用户1502040 由于没有平局,我只显示获胜的百分比。 Statistician2-95.7% Fitter-89.1% Nash-83.9% Weigher-79.9% ExpectedBayes-76.4% AntiRepeater-72.1% Yggdrasil-65.0% AntiGreedy-64.1% Reactor-59.9% NotHungry-57.3% NashBot-55.1% Blodsocer-48.6% BestOfBothWorlds-48.4% GoodWinning-43.9% Rockstar-40.5% ArtsyChild-40.4% Assassin-38.1 % WeightedRandom-37.7% Ensemble-37.4% UseOpponents-36.4% GreedyPsychologist-36.3% TheMessenger-33.9% Copycat-31.4% Greedy-28.3% SomewhatHungry-27.6% AntiAntiGreedy-21.0% Cycler-20.3% Swap-19.8% RandomBot-16.2% 我使用每个配对结果的网格创建了一个Google表格:https : //docs.google.com/spreadsheets/d/1KrMvcvWMkK-h1Ee50w0gWLh_L6rCFOgLhTN_QlEXHyk/edit? usp =sharing 多亏了陪替氏困境,我发现自己能够应付这位山丘之王。 游戏 游戏是一个简单的“石头剪刀布”,带有扭曲:游戏中每次胜利都会增加点数(加载R,P或S)。 纸胜摇滚 剪刀胜纸 摇滚胜剪刀 获胜者获得的积分与其在游戏中的负担一样多。 失败者的游戏负担增加1。 在平局的情况下,每个玩家的游戏负担增加0.5。 经过100场比赛,获胜者将获得更高分。 …

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.