Questions tagged «king-of-the-hill»

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

24
这是Loeschian号码吗?
正整数k是Loeschian数,如果 k可以表示i*i + j*j + i*j为i,j整数。 例如,第一正Loeschian号码为:1(i=1,j=0); 3(i=j=1); 4(i=2,j=0); 7(i=2,j=1); 9(i=-3,j=3); ...注意i,j对于给定k的不是唯一的。例如,9也可以与产生的i=3,j=0。 这些数字的其他等效特征是: k可以表示i*i + j*j + i*j为i,j非负整数。(对于每对整数i,j都有一对给出相同值的非负整数k) 有一组k连续的六边形在六边形网格上形成网格化(请参见k = 4和的插图k = 7)。(由于这个属性,这些数字可在移动蜂窝通信网络中找到应用。) 在序列的OEIS页面中查看更多特征。 挑战 给定一个正整数,如果它是Loeschian数,则输出真实结果,否则,则输出虚假结果。 程序或函数应处理(例如不到一分钟)最多达1000或数据类型限制的输入。 代码高尔夫。最短的胜利。 测试用例 以下数字应输出真实结果: 1, 4, 7, 12, 13, 108, 109, 192, 516, 999 以下数字应输出虚假结果: 2, 5, 10, 42, 101, 102, 128, 150, 501, …
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

30
公共变量有什么问题?
代码机器人 我讨厌私有和保护变量。我只想访问任何东西! 如果您像我一样,那么这个挑战就是给您的! 编写一个与其他机器人协调工作的机器人,使其他机器人按您的意愿工作。您是一名程序员,并且您知道应该如何工作。您的工作是将尽可能多的其他漫游器转换为您的方式。 代码 您将有24行代码来编写您的机器人。每回合,每个漫游器将顺序执行1行。 每个漫游器A通过都存储5个变量E。 A并且B供个人使用,C存储要执行的下一行,D存储当前方向,并且E是一个随机数。变量从0开始,除了除外D,后者将从一个随机值开始。所有变量仅存储0-23。更大或更小的数字将被24调制。 在这篇文章中,我将使用对手作为您面临的相邻机器人 每行必须包含以下5个命令之一: Flag什么也没做。除了这是你赢的方式 Move将您的漫游器移向Dth方向。如果机器人已经占据了空间,则不会发生任何移动 Copy Var1 Var2 将Var1的内容复制到Var2 If Condition Line1 Line2 如果Condition为true,则执行Line1,否则执行Line2 Block Var1 阻止对变量的下一次写入 变量可以如下使用: #Var将使用该变量作为行号。如果A为17,Copy #8 #A则将第8行的内容复制到第17行。 *Var将使用对手的变量。 Copy 5 *C将对手的C变量设置为5 Var+Var将两个变量相加。 Copy D+1 D会将机器人向右旋转 当D用作指示时,[North, East, South, West][D%4]将被使用 这些修饰符可以链接在一起:Copy *#*C #9将对手将执行的下一行复制到第9行的自己的代码中。 **D是指对手的对手D变量。 条件的评估如下: 如果Var: 如果Var A通过C,则如果Var非零,它将返回true,否则返回false。 如果Var是D,则如果在此D方向上有机器人,则它将返回true ,否则返回false …

9
培养皿之战
在这一挑战中,您必须设计一种单细胞生物,以在培养皿领域中与死亡作斗争。舞台以矩形网格表示,其中每个单元占据一个空间: .....x.... ...x...o.. ...x.c..o. .......o.. 属性 每个单元都有三个属性。在游戏开始时指定细胞种类时,可以在这些属性中分配12点。 生命值(HP):如果单元的HP降至零,则死亡。新单元具有完整的HP。 当一个细胞死亡时,它会留下一具尸体,可以被其他细胞吞噬以获取能量。 单元无法恢复丢失的HP,但可以通过分裂创建具有完整HP的新单元。 能量:细胞可以采取的大多数行动都需要能量。通过主动休息,细胞可以恢复失去的能量,直至其物种的最大吸收。 能量低于5的细胞可能失败,因为它无法分裂产生新的细胞。 细胞无法获取超过其物种最大值的能量。 新创建的单元格具有从其父级复制的初始能量值(以及其物种规格所规定的最大值)。 酸度:如果一个细胞选择爆炸,则该细胞的酸度水平用于计算对相邻细胞的损害。 动作 每转一圈,每个单元格都可以执行以下操作: 移动:该单元在任何方向(N / S / E / W / NE / NW / SE / SW)上移动一个空间,其成本为1能量。 一个细胞不能移动到另一个活细胞所占据的空间。 单元不能移出网格。 移动到细胞尸体会破坏尸体。 攻击:一个细胞通过消耗1到3个能量点,攻击相邻的细胞,造成1-3伤害。 一个单元可以向任何方向(N / S / E / W / NE / NW / SE / …

30
一口价密封式拍卖
最后结果 比赛结束了。恭喜hard_coded! 一些有趣的事实: 在40920次拍卖中,有31600次(77.2%),第一轮的获胜者赢得了该拍卖中的最多回合。 如果例如机器人包括在比赛中,前九位地方不再只是改变AverageMine和heurist将交换自己的立场。 拍卖的前10名结果: [2, 2, 3, 3] 16637 [0, 3, 3, 4] 7186 [1, 3, 3, 3] 6217 [1, 2, 3, 4] 4561 [0, 1, 4, 5] 1148 [0, 2, 4, 4] 1111 [2, 2, 2, 4] 765 [0, 2, 3, 5] 593 [1, 1, 4, 4] …

7
编程吃豆人
Programmin'吃豆人 设置 您扮演吃豆人。您想在其他任何人之前收集颗粒,水果和强力颗粒,同时还要避免出现鬼影。 规则 每个有效的吃豆人都将放在一个迷宫中。10场比赛之后累积得分最高的玩家将获胜。 当所有吃豆人都死了,所有子弹都没了或经过500转时,游戏结束 如果吃豆人去世,他会继续扮演鬼魂 吃强力药丸会使你无敌10回合,并且可以让你吃鬼魂 吃鬼会把鬼传送到一个随机的位置 鬼魂除了吃豆人不能吃任何东西,也得不到任何积分 吃“吃豆人”以下物品将获得以下几点: 颗粒:10 强力颗粒:50 水果100 幽灵:200 迷宫 如果有n个 Pac-Men,则将使用Prim的算法(由于河因素低)生成大小sqrt(n)*10为的迷宫,然后完全编织,优先考虑已经存在的死角。此外,该编织可以跨边缘完成,从而从顶部到底部以及从左到右有一些路径。sqrt(n)*10 将有: 2n 鬼魂 4n 电源粒 2n 水果 n 吃豆人在相连的邻居广场是空的地方。 所有剩余的空白点将充满颗粒 因此,最初有10个玩家的地图看起来像这样(鬼魂=绿色,药丸=水色,水果=红色,吃豆人=黄色): 输入输出 在游戏开始时,系统会为您提供一行字符,这些字符代表地图每个正方形中的墙。对于每个正方形,从左上角开始,向右移动,然后环绕到下一行,您将获得一个十六进制数字,表示墙的情况: 0: No walls 1: North wall 2: East wall 3: East & North wall 4: South wall 5: South …

10
3D:离散混战决斗(现已对非Java提交开放)
更新: isSuicidal()已添加到平面类中,这使您可以检查平面是否与墙处于不可逆的碰撞过程中!! 更新: updateCoolDown()与simulateMove()分离 更新:Sparr编写的非Java条目包装器,可以进行测试,请参阅注释 Zove Games 更新为此KOTH编写了一个很棒的3D可视化程序,这是一个与PredictAndAVoid对抗PredictAndAVoid 的肮脏的youtube视频。 我们对Plane类的simulateMove()函数进行了少许修改,以使其不再更新冷却时间,请在拍摄后使用新的updateCoolDown()函数。如果飞机注定要死机,则新的isSuicidal()将返回true,使用它来修剪敌人的移动并避免撞到墙壁。要获取更新的代码,只需将Controller和Plane类替换为github存储库中的类即可。 描述 这项挑战的目标是编写两个将与另一位参赛者对抗的两架格斗飞机的代码。每转一圈,您就可以移动一个空间并有机会射击。就这样,就这么简单。 好吧,差不多... 竞技场和可能的举动 竞技场是14x14x14的空间围墙。参赛者1的平面从(0,5,0)和(0,8,0)开始,而参赛者2的平面从(13,5,13)和(13,8,13)开始。所有飞机都是从与其最接近的垂直壁水平飞行而开始的。 现在,由于您是在飞行飞机,而不是直升机,因此您不能随便改变方向甚至停止移动,因此每架飞机都有一个方向,并且每转一圈都会向该方向移动一个图块。 可能的方向是:北(N),南(S),东(E),西(W),上(U)和下(D)以及这六个的任何逻辑组合。NS轴对应于x轴,WE对应y,DU对应z。NW,SU和NED是可能的方向示例;UD是无效组合的一个很好的例子。 您当然可以更改飞机的方向,但是有一个限制,您最多只能更改45度的方向。为了可视化,请抓住您的魔方(我知道您有一个),并想象所有26个外部小立方体都是可能的方向(一个字母方向是面,两个字母方向是边,三个字母方向是角)。如果您正朝着由一个小立方体表示的方向前进,则可以将方向更改为与您的立方体接触的每个立方体(对角线触摸计数,但仅可见地触摸,即不触摸该立方体)。 在所有平面指示了它们想要改变的方向之后,他们这样做并同时移动一个图块。 您也可以选择沿有效方向移动,但继续沿原方向飞行,而不是将方向更改为所移动的方向。这类似于拐角处的汽车和变道的汽车之间的区别。 射击和死亡 您每回合最多可以射击一次,这必须在决定飞行方向时同时决定,以及是否要将飞机(以及延伸的枪支)指向同一方向。飞机移动后,子弹立即被射中。射击后有一个回合的冷静,在第三回合,您可以再去一次。您只能朝飞行的方向射击。子弹是即时的,并且会一直直线飞行,直到撞到墙壁或飞机上为止。 考虑到可以改变方向以及“改变车道”的方式,这意味着除了一些对角线,单条线之外,您还可以威胁到前方最多3x3线的列。 如果撞到飞机,该飞机会死亡并立即从板上消失(因为它会完全爆炸或其他原因)。子弹最多只能击中一架飞机。子弹同时射击,因此两架飞机可以互相射击。但是,有两枚子弹不能在空中相撞(我知道这很悲伤)。 但是,两个平面可能会发生碰撞(如果它们最终在同一个立方体中,并且如果彼此交叉而没有最终在同一平面中就不会碰撞),这会导致两个平面都垂死(并完全爆炸)。您也可以飞入墙壁,这将使有问题的飞机垂死并被拐弯处以考虑其作用。在拍摄前要先处理好碰撞。 与控制器通讯 我将接受Java以及其他语言的条目。如果您的输入使用Java,则将通过STDIN获取输入,并通过STDOUT输出。 如果您的条目使用Java,则.your条目必须扩展以下类: package Planes; //This is the base class players extend. //It contains the arena size and 4 plane objects representing the planes in …

3
救命!我的计算器坏了!(将整数表达式转换为计算器按键)
介绍 救命!我不小心将TI-84计算器掉到了窗外(不要问怎么做),它坏了。我明天要进行数学测试,唯一能找到的计算器就是这些按钮: 7 8 9 + 4 5 6 - 1 2 3 * 0 = / 我的数学测试是关于评估表达式的复习测试。我需要一个程序来接受诸如的表达式1+(5*4)/7,并将其转换为在备用计算器上求解所需的击键。(如果您想知道,这确实发生在我身上)。 挑战 鉴于含有非空输入串仅字符0-9,(,),+,-,*,和/,输出以空间分隔的字符串的键击(例如1 + 3 / 3 =)。输出末尾必须始终有一个等号。不允许出现标准漏洞。 例子: 输入:1+(5*4)/7,输出:5 * 4 / 7 + 1 = 输入:6*(2/3),输出:2 / 3 * 6 = 输入:(7-3)/2,输出:7 - 3 / 2 = 为了使这个挑战更容易: 您可能假定输入具有一系列与其关联的击键,不需要清除计算器(这1-(7*3)是无效的,因为它需要您查找7 * 3然后清除计算器才能进行1 …

6
那是BS!(纸牌游戏)
BS是一种纸牌游戏,游戏的目标是失去所有卡牌。 一个游戏由四名玩家和一张52张牌组成。每个玩家随机发13张牌。通常,卡片被标记为2-10,王牌,杰克,皇后,国王,但为简单起见,卡片将被标记为0-12(含)之间的数字。尽管玩家手中的卡数是公共信息,但只有玩家知道他手中有哪些特定的卡。 游戏过程如下:第一个玩家将任意数量的标记为0的牌放置到弃牌堆中(请注意,不需要他打出所有标记为0的牌,尽管通常这样做对他来说是最大的利益。 )。他必须至少打一张牌。第二名玩家打出想要标记为1的牌,第三名玩家打出2,依此类推。12之后,它将重置为0。 如果您没有应该玩的纸牌怎么办?请记住,您必须至少玩一张牌-实际上,您可以玩任何想要的牌!(实际上,即使您拥有正确的卡,也可以撒谎并玩另一张卡)。但是,有人可以叫你说“ BS!” 如果那个人是正确的并且你撒谎了,那么你必须把所有的牌都丢进弃牌堆;作为奖励,召唤您的玩家随机将其中一张牌放入弃牌堆。但是,如果原告错了,他必须将所有的牌都放在弃牌堆中。请注意,您不能撒谎打牌的数量。 详细信息: 在游戏开始时,选择了四个随机玩家进行游戏。由于将至少有1000场比赛,因此每个玩家都有机会玩。回合顺序是在游戏开始时随机决定的 如果您退还一张正确的卡和一张错误的卡,则认为该卡是说谎的(即,如果您给了2 s,而您给出了一张2和一张1,那么这就是在说谎) 如果两个或两个以上玩家都同时说BS,则随机选择一个。 您的分数是您赢得比赛的百分比。 最多有1000个回合,其中每个玩家进行一次回合。通常,有人在此之前获胜。如果没有人获胜,则计入总比赛数,但没有人获胜。 规格: 您应该编写一个扩展类Player。它看起来像: package players; import java.util.ArrayList; import java.util.List; import controller.*; public class Player1 extends Player { @Override protected List<Card> requestCards(int card, Controller controller) { Card[] hand = getHand(); List<Card> ret = new ArrayList<Card>(); for (Card c …

30
聪明人的海市age楼
从前,我在阅读有关Quora的问题/答案 真的有没有计算机科学学位的程序员无法通过FizzBu​​zz测试 此代码是显而易见的答案 for i in range(1, 100): if i % 3 == 0 and i % 5 == 0: print "FizzBuzz" elif i % 3 == 0: print "Fizz" elif i % 5 == 0: print "Buzz" else: print i 当然,FizzBu​​zz已经被打死了,但这并不是这个问题的实质。您会在评论中看到有人提到该答案很不错,因为很容易添加额外条件,例如将“ Jazz”打印为4的倍数。(我不同意。扩展此方案需要O(2 ** n )代码行。) 您的挑战是编写由同行判断的最漂亮的FizzJazzBuzz版本。 选民需要考虑的一些事项: 干 除法/模运算的效率 …
29 popularity-contest  code-challenge  word  popularity-contest  string  grid  language-design  code-golf  source-layout  math  fastest-algorithm  assembly  code-golf  json  code-golf  arithmetic  array-manipulation  code-golf  ascii-art  code-golf  crossword  code-golf  string  restricted-complexity  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  decision-problem  balanced-string  syntax  code-golf  grid  puzzle-solver  hexagonal-grid  code-golf  math  number  sequence  code-golf  string  decision-problem  code-golf  cryptography  king-of-the-hill  code-challenge  fastest-code  code-golf  number  code-golf  code-golf  string  code-golf  cryptography  king-of-the-hill  java  code-golf  number-theory  base-conversion  code-golf  code-golf  array-manipulation  code-golf  array-manipulation  sorting  code-challenge  restricted-source  quine  code-golf  tips  python  king-of-the-hill  code-golf  source-layout  fractal  code-golf  tips  game  king-of-the-hill  path-finding  grid  code-golf  kolmogorov-complexity  natural-language  code-golf  tips  python  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  number  combinatorics  random  integer-partitions  code-golf  string  code-golf  vim  comment  code-golf  combinatorics  counting  code-challenge  rosetta-stone  code-golf  combinatorics  sequence  subsequence  code-golf  code-challenge  restricted-source  primes  printable-ascii  popularity-contest  graphical-output  image-processing 

21
莫拉,国王的高贵游戏
背景 Morra游戏是一个简单的游戏。在“原始”版本中,几个玩家同时用双手抛出0-5,同时猜测每个人的总手数。我将在此处使用的版本已经过修改,以增加潜在的非平凡策略,下面对此进行了说明: 有两个球员。 就像剪刀石头布一样,玩家同时移动。 每回合,每个玩家选择一个0-5的数字,并猜测对手的选择0-5。这意味着每转输出两个数字。为了明确起见,两个数字的输出应在0-5(含)范围内。 如果您正确猜出了对手的选择,但是您的对手猜错了,您将赢得一定数量的点数,该点数等于两个数字之和。例如,如果打出的数字是3和5,则正确的猜测将价值8分。 如果两个或两个玩家都猜对了,则不会获得任何积分。 1000回合后得分最高的人将赢得比赛。 比赛 比赛将以循环赛的方式进行,并通过创建每个可能的参赛者配对来进行。每次胜利,参赛者将获得2胜利分。每次平局都会获得1个胜利点。没有获得胜利点的损失。 凭直觉,比赛的获胜者是与他人对分最高的选手。 输入方式 提交机器人进行比赛的方式有两种。第一种也是首选的方法是实现控制器提供的Java接口。第二种方法是编写一个独立的程序。 让我们首先介绍Java方法。您将需要实现的接口是Player,它定义了两种方法:public String getName()标识您的机器人,并public int[] getMove(String[] args)采用args六个字符串组成的数组mychoices myguesses myscore opponentchoices opponentguesses opponentscore。下面是一个示例: 042 045 0 324 432 6 这意味着我在第一轮选择了0,并且猜到了我的对手将掷出0。我的对手投了3,然后猜到了我将投掷4。在第三轮中,我的对手做出了正确的猜测,我将投出2,表示他获得2 + 4 = 6分。 您的方法将返回一个由两个整数组成的数组,分别是您的选择和猜测。一个例子是{4,2}选择4和猜测2。 这是作为方法编写的完整Java机器人的示例。如果需要,您的提交只需包含getMove方法中的操作。 import java.util.Random; /** * A simple example Morra bot to get you started. …

13
废墟中的冒险家
测试驾驶员 • 挑战讨论 • 提交冒险家 (图片来源) 几个竞争对手冒险者正在废墟中寻宝,但他们一次只能携带这么多东西,而且承受力有限。他们希望获得最有价值的宝藏,并在他们变得疲倦而无法继续之前走出去。他们正设法从掠夺的恶作剧中致富。 游戏玩法 每个冒险家都从地牢的第一个房间开始,并获得1000点耐力点和背包中50公斤的空间。 游戏以回合制为基础,所有玩家同时解决回合。每转一圈,您可以执行以下操作之一: 移到下一个房间。 移到上一个房间。 竞买耐力拿宝。 丢下宝藏。 在各个房间之间移动需要10个耐力,而背包中当前每5公斤要加1个耐力。例如,一名冒险者携带3公斤宝藏需要移动11体力,而一名携带47公斤宝藏的冒险者需要移动20体力。 掉落宝藏需要1个耐力,无论掉落的宝藏如何。 离开废墟后,玩家将不再转弯。 如果玩家不能采取任何这些行动(由于缺乏耐力或缺少宝物),则冒险者会死于精疲力尽,将其持有的宝物洒入当前占用的房间。同样,如果玩家尝试执行无效操作,则冒险者将被陷阱杀死,从而导致相同的宝藏溢出。 投标 宝物的最低出价是每1公斤宝物称重1个耐力。您也可以出价额外的耐力点,以更有可能获得宝藏。不管结果如何,被消耗的耐力都会被消耗掉。 如果有多个玩家竞标购买同一宝藏,则出价最高的玩家将获得该宝藏。如果有一个以上的玩家出价最高,那么他们都将不会获得宝藏。 获胜条件 总资产最大的玩家是赢家。如果发生平局,领带的总重量最小,然后是最小数量的宝物,然后是最有价值的珍宝的价值,其次是最有价值的,第三...直到领带被打破。如果在这种情况下仍然有平局,测试驾驶员会说“拧”,从而任意确定获胜者。 在锦标赛中,玩家将排名第一,获得10分,第二名获得9分,第三名获得8分,依此类推,死者和没有宝藏的冒险家获得0分。 关于废墟 每个房间最初包含之间⌊ [R3⌋ + 3⌊[R3⌋+3\lfloor{r \over 3}\rfloor + 3和⌊ [R2⌋ + 5⌊[R2⌋+5\lfloor{r \over 2}\rfloor + 5珍品。([R[Rr是房间号) 有任意多个房间,仅受冒险者的耐力和探索意愿的限制。 每件宝物将具有货币价值(总计$)和重量(总计kg)。 当您深入废墟时,珍宝往往更有价值和更多。 生成宝物的具体公式如下:(对骰子使用X dÿXdÿxdy表示法) 重量首先产生利用下式2 天6 − 22d6-22d6 - …

6
希尔团队!
这项挑战的灵感来自@HelkaHomba出色的挑战,即Red vs. Blue-Pixel Team Battlebots。这一挑战可能是我在本网站上看到的最好的挑战。曾经 我的挑战仍然很大,但是@HelkaHomba的灵感值得称赞。 总览 这是一个团队之王,您的团队通过让所有玩家都存活在团队中而获胜。换句话说,最后一支球队获胜。抽奖将被重做。 您在董事会上。您知道自己在第一轮的位置(打勾0)。您还知道周围的人是谁: 在这种情况下,您一个人(或者您认为)独自一人,周围没有人。您可以在ontick处理程序的第一个参数中看到周围的项目。稍后会更多有关API的信息。 你的团队 您的团队由您的用户ID决定。要找出答案,请单击您的个人资料图片: 然后在地址栏中找到您的用户ID: 如果很奇怪,那么您就是蓝队。 如果是偶数,则说明您是红色团队。 手绘圈欢迎您。 您(机器人的)名字 您的漫游器名称以团队的第一个字母(“ r”或“ b”)开头。它必须匹配正则表达式/^(r|b)[A-Za-z_-]$/。除此之外,您还可以选择机器人的名称。请不要使用已经存在的一个。 开始 红色玩家将从地图顶部附近开始,蓝色玩家将从底部附近开始。environment在ontick函数的参数的第一个刻度(转弯)上会给您特殊信息。我建议将其存储。有关详细信息,请参见API。 轮到你了 回合顺序最初是随机的,但随后保持不变。 转身动作 您每回合只能做一个动作。 移动 当您想移动时,可以调用this.move(num)API。num您想移至的单元格: 可以移动到的数字的相对位置存储在全局常量中threeByThree: [ [0, 1, 2], [3, undefined, 4], [5, 6, 7] ] 如果您进入墙壁或其他播放器,则什么也不会发生。 旋转 要旋转,请致电this.rotate(num)。Num是您要旋转的方向: 旋转是绝对的。 杀 如果您所面对的牢房中有另一个玩家(来自另一个团队),则可以呼叫this.kill()并杀死他们。如果那里没有人,或者他们在您的团队中,则无济于事。例: 如果转到0,您可以杀死绿色。如果将其设置为1,则可以杀死蓝色。如果转到2,则可以杀死橙色。如果转到3,则可以杀死黄色。 炸弹 爆炸会杀死您周围9个方格中的所有玩家,包括您和队友。例: 您为什么要这样做? …

9
山丘之王-消防员
在草原上,这是一个干燥的夏天。该地区的四位农民意识到他们可以烧掉邻居的农作物来垄断玉米市场。但是他们需要这样做的策略。那就是你进来的地方。 您的任务是编写一个机器人来告诉农民要燃烧的东西。目标是用最大的未燃烧土地完成游戏。比赛场地是32x32的网格。每个单元格可以是以下之一: . - Ground @ - A bot # - Ash W - Wet ground 1,2,3,4,5, or 6 - Fire 烈火每回合增加1点。一旦达到3或更高,它将在其旁边(水平或垂直)着火。着火后,它变成了灰烬。 在每个回合中,漫游器收到以下内容作为STDIN:漫游器开始x,漫游器开始y,漫游器当前x位置,漫游器当前y位置和板,以换行符分隔。一个例子: 8 22 6 24 ................................ ................................ ................................ .....................1.......... ....................1#1......... ...................1#363........ ....................16@1........ .....................31......... ................................ .........1.1.................... ........15#62................... ........15@2.................... .........32..................... ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ ....4.1......................... …

30
最小唯一数KoTH
创建一个机器人以选择最小的唯一编号。 (基于我多年前听说的一项心理学实验,但无法再次进行追踪。) 规则 每个游戏将由10个随机选择的机器人组成,每个机器人进行1000回合。 每回合,所有漫游器都会从1到10(包括10)之间选择一个整数。选择相同值的所有漫游器都将被排除,剩下的拥有最小值的漫游器将获得一个分数。 如果没有机器人选择唯一的值,则不会获得任何积分。 在1000回合结束时,得分最高的机器人(或所有得分最高的机器人)将赢得比赛。 比赛将持续200 *(玩家人数)游戏。 获胜百分比最高的机器人将赢得比赛。 技术指标 Bots必须是Python 3类,并且必须实现两个方法:select和update。 机器人将使用索引构建。 select不传递任何参数,并返回机器人在当前回合中的选择。 update传递了上一轮每个机器人所做选择的列表。 例 class Lowball(object): def __init__(self, index): # Initial setup happens here. self.index = index def select(self): # Decision-making happens here. return 1 def update(self, choices): # Learning about opponents happens here. # Note that …

15
KOTH:每个硬币都有两个面
最终结果可用 介绍 在我以前以重主题(幻想战争,全球性大流行 ……)进行KOTH之后,我又回来了一款全新的轻松游戏。这次,您将面临“类似于棋盘游戏”的局面。一堆倒置的硬币放在一张大桌子的中央,您决心分担赃物! 词汇表 硬币:可以翻转或翻转的令牌。 未翻转:硬币放置在桌子上,其价值朝下。这是硬币的默认状态。 翻转:硬币放在桌上,其价值朝上。 本地:指您的一堆硬币。 全局:指位于中心的一堆硬币。 原理 在游戏开始时,每个玩家从0点和0个硬币(翻转或未翻转)开始。该游戏是回合制的。在回合中,玩家最多可以执行3个动作,与桌子中央的一堆硬币,自己的一堆硬币或与其他玩家进行交互。 游戏开始时会随机定义播放顺序。玩家在参数列表中的顺序代表转牌顺序,在该列表中从左到右。如果您是两边的最后一个,则“下一个”和“上一个”分别带有循环,分别表示“在该列表的右侧”和“在该列表的左侧”。 游戏持续50回合,或者直到玩家回合结束时中心处有0个硬币为止(这意味着即使您在第一个动作之后堆成空,您也将完成3个动作,并且您可以放回硬币以让游戏继续)。使用以下公式随机定义全局硬币的起始数目: (2 ^ nb_players) + (nb_players * 10) - random(1 + (nb_players ^ 2))` 每个动作都会使您获得积分(或使您输掉一些),并且在游戏结束时,您拥有的每个硬币都会被添加到您的积分中(未翻转为-1,翻转为+2)。得分最高的玩家获胜。 控制器通过命令参数为您提供输入,而程序必须通过stdout输出。 句法 输入项 每次调用程序时,它将收到以下格式的参数: Round;YourPlayerId;Coins;PlayerId_Points_Flipped_Unflipped;PlayerId_Points_Flipped_Unflipped;... 轮次按1分索引。 输入示例 6;2;52;1_20_3_12;0_-2_0_1;2_12_1_0 在这里,您看到它是第六轮,您是玩家2。中央一堆有52个硬币。您有12点,1个倒装硬币和0个未倒装硬币。积分可以是负数。 输出量 您必须输出三个字符(无空格,无分隔符),每个字符对应于本轮将要执行的一个动作。字符的顺序决定了动作的顺序。您可以多次输出相同的动作。如果没有足够的硬币来完成操作,它将使用可用硬币的最大数量,并且仅对所使用的硬币计数。 N:不 1采取任何行动:从中央筹码中拿出 1个硬币[效果:+1局部不翻转/ -1点/ -1整体不翻转] 2:从中央堆中获取2个硬币[效果:+2局部不翻转/ -2点/ -2全局未翻转] 3:从中央筹码中取出3个硬币[效果:+3本地未翻转/ -3点/ -3全局未翻转] …

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.