Questions tagged «king-of-the-hill»

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

1
KoTH:Gomoku(连续5个)
五子棋或连续五人棋盘游戏是由两个玩家在网格中用黑白石头玩的。能够连续放置5块石头(水平,垂直或对角线)的人将赢得比赛。15 × 1515×1515 \times 15555 规则 在此KoTH中,我们将玩Swap2规则,这意味着游戏包含两个阶段:在初始阶段,两个玩家确定谁先打谁/谁打黑,然后从玩家开始每回合放置一块石头谁选了黑色。 初始阶段 让玩家成为A和B,A将打开游戏: A在板上放置了两个黑色和白色的石头 B可以选择以下三个动作之一: 玩家B决定玩黑棋:初始阶段结束 玩家B决定放置白色石头并进行白色游戏:初始阶段结束 玩家B决定玩一个黑色和白色的石头:A可以选择颜色 游戏阶段 每位玩家将一块彩色的棋子放在棋盘上,从扮演黑色的棋手开始,直到没有更多的可用空间(在这种情况下是平局)或一位棋手设法在棋盘中玩枚棋子为止行(在这种情况下该玩家获胜)。555 行表示水平,垂直或对角线。胜利就是胜利-玩家是否得分超过一排并不重要。 KoTH游戏规则 每个玩家对战两次: 最初将随机决定谁先 在接下来的游戏中,最后玩的玩家先行 一场胜利值得2分,平局1输0 目标是获得尽可能多的分数 你的机器人 为了使这一挑战适用于尽可能多的语言,将通过stdin / stdout(基于行)来进行输入 / 输出。判断程序将通过在您的机器人的stdin上打印一行来提示您的程序,而您的机器人将在stdout上打印一行。 收到EXIT消息后,您将有半秒钟的时间来完成对文件的写入,然后法官将终止该过程。 随机性 为了使锦标赛可验证,裁判使用种子随机化,并且出于同样的原因,您的机器人也必须这样做。该机器人将通过应使用的命令行参数获得种子,请参考下一节。 争论 该漫游器接收两个命令行参数: 对手的名字 随机种子 用户状态 由于您的程序始终会针对每个游戏重新启动,因此您需要使用文件来保存要保留的所有信息。您可以在当前目录中读取/写入任何文件或创建/删除子文件夹。您无权访问任何父目录中的任何文件! 输入/输出格式 BOARD((X,Y),COLOR)XY[ 0 ,15 )[0,15)[0,15)COLOR"B""W" SPXY(X,Y)[ 0 ,15 )[0,15)[0,15)| 在初始阶段,有三种不同类型的消息: Prompt (judge) …

6
N个碱基中的回文数
给定一个非负整数n >= 0,请永远输出x_i >= 3以完全n不同b的底数为回文数的整数序列,底数可以是2 <= b <= x_i-2。 这基本上是OEIS A126071的反函数,在此输出中该序列中的哪些索引具有值n。有点不同,因为我更改了它,所以您忽略了碱基b = x_i-1, x_i, x_i+1,因为这些碱基的结果始终是相同的(值始终是回文率,或者始终不是)。此外,偏移量也不同。 x_i限制为数字,>= 3因此每个结果的第一项n为A037183。 请注意,输出格式是灵活的,但是应该以很好的方式分隔数字。 例子: n seq 0 3 4 6 11 19 47 53 79 103 137 139 149 163 167 ... 1 5 7 8 9 12 13 14 22 23 25 29 35 …
10 code-golf  sequence  base-conversion  palindrome  code-golf  array-manipulation  matrix  code-golf  string  ascii-art  code-golf  ascii-art  physics  code-golf  number  sequence  fibonacci  code-golf  ascii-art  packing  code-golf  string  hexadecimal  code-challenge  restricted-source  decision-problem  binary  code-golf  code-golf  code-golf  stack-exchange-api  code-golf  string  parsing  generation  data-structures  code-golf  kolmogorov-complexity  graphical-output  code-golf  array-manipulation  integer  generation  data-structures  code-golf  number  random  probability-theory  king-of-the-hill  java  minesweeper  code-golf  string  kolmogorov-complexity  animation  code-golf  string  code-golf  code-golf  quine  code-golf  internet  code-golf  arithmetic  base-conversion 

7
构造雅可比矩阵
取未知向量,并应用一些通用的微分函数。的雅可比然后通过矩阵给出,使得: 例如,假设m=3和n=2。然后(使用基于0的索引) 雅可比f然后 这个挑战的目标是打印这个雅可比矩阵。 输入值 你的程序/功能应该采取作为输入两个正整数m和n,其代表的部件的数目f和u分别。输入可以来自任何所需的来源(stdio,功能参数等)。您可以指定接收顺序,对于输入的答案必须一致(请在答案中指定)。 输出量 代表雅可比矩阵的东西。此表示形式必须明确拼出Jacobian矩阵的所有元素,但是每个术语的确切形式都是实现定义的,只要明确区分什么以及关于什么进行区分,并且每个条目均以逻辑顺序输出。用于表示矩阵的示例可接受形式: 列表列表,其中外部列表​​的每个条目都对应于雅可比行的一行,内部列表的每个条目都对应于雅可比行的列。 字符串或文本输出,其中每行是Jacobian行,每行中由定界符分隔的条目对应于jacobian的列。 矩阵的一些图形/视觉表示。示例:使用MatrixForm命令时Mathematica显示的内容 其他每个条目都已存储在内存中并且可以查询的密集矩阵对象(即,您不能使用生成器对象)。例如,Mathematica如何在内部表示Matrix对象 条目格式示例: 形式为的字符串d f_i/d u_j,其中i和j是整数。例如:d f_1/d u_2。请注意,d和f_1或之间的这些空格x_2是可选的。此外,下划线也是可选的。 形式为d f_i(u_1,...,u_n)/d u_j或的字符串d f_i(u)/d u_j。也就是说,功能组件的输入参数f_i是可选的,并且可以明确地拼写出来或以紧凑形式保留。 格式化的图形输出。例如:计算表达式时Mathematica会打印什么D[f_1[u_,u_2,...,u_n],u_1] 您可以选择起始索引u和目标索引f(请在答案中指定)。输出可以是任何所需的接收器(stdio,返回值,输出参数等)。 测试用例 以下测试用例使用约定m,n。索引显示为从0开始。 1,1 [[d f0/d u0]] 2,1 [[d f0/d u0], [d f1/d u0]] 2 2 [[d f0/d u0, d f0/d u1], [d f1/d u0, d …

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 …

3
Euchre机器人(纸牌游戏)
这个挑战的想法很简单:创建一个机器人来玩纸牌游戏Euchre。 对于那些还不了解它们的人,我在这里向Euchre列出了规则,因为它们与这项挑战有关。 我建议使用python或类似的东西,但唯一真正的限制是它必须与控制器代码兼容 输入: 根据游戏或回合的当前阶段,您的euchre机器人将获得不同种类的输入。一般而言,您将在第一行进入游戏阶段,然后是逗号和团队所拥有的积分数量,然后在接下来的几行获得相关数据。 按时间顺序,您的漫游器将按以下顺序获取输入: Ordering Trump: js,ah,qc,ts,jc // the cards in your hand 2 // number of points your team has 0 // number of tricks your team has taken ordering // the phase of the game th // the turned up card p,p // each previous player’s …

8
城墙之王
注意 这项挑战已经结束,不再需要重新判断,但可以随时发布答案并使用“控制程序”与其他程序进行测试! 这项挑战的目的是通过在25x25的网格上策略性地绘制一堵墙来阻挡对手,从而使AI赢得与另一AI的对抗。 输入值 25行;,以命令行参数分隔并以结尾。这将包括: 空的空间 . 墙 # 玩家1和2(对手总是2) 例 ###############..........;..............#..........;..............#..........;..............#..........;..............#..........;...........1###..........;.........................;.........................;.........................;.........................;.........................;.........................;.........................;.........................;.........................;.........................;.........................;.........................;.........................;...................###...;...................#.##..;2..................#..#..;#..................##.#..;#...................#.###;....................#####; 代表以下地图: ###############.......... ..............#.......... ..............#.......... ..............#.......... ..............#.......... ...........1###.......... ......................... ......................... ......................... ......................... ......................... ......................... ......................... ......................... ......................... ......................... ......................... ......................... ......................... ...................###... ...................#.##.. 2..................#..#.. #..................##.#.. #...................#.### ....................##### 输出量 写入控制台的字符串,其开头的字符代表AI希望转向的方向。这是区分大小写的! 北 N 东 E 南 S 西方 W 放弃(别的) 例 …

5
饥饿的斑点
比赛结束!阅读有关Blob的评论以查看其得分。 此KoTH受到Primer自然选择模拟的大致启发。您的漫游器是一个Blob。为了生存,您必须吃掉颗粒以重新获得用于移动的能量。有了额外的能量,斑点可以一分为二。 能量与运动 您的Blob每回合都会以100的能量开始,并且对其可以收集的能量数量没有限制。每个回合都是轮流进行,每个Blob可以选择在任意给定的回合中向北,向东,向南或向西移动,或保持静止。移动消耗1能量,而静止不动使用0.25能量。地图的边长是ceil(0.25 * blobCount) * 2 - 1单位,最少9个单位。所有Blob都始于地图的边缘,每个角处都放置一个Blob,随后的每个Blob都应与其他Blob放置2个单位。每30圈,一阵子弹便被放置在地图周围的任意位置,距离任意边缘至少1个单位。每次出现一波颗粒波时,下一波中的颗粒数量(最初为斑点数的两倍或图的宽度(以较大者为准))减少1,迫使斑点数随时间减少。每个药丸可恢复5至15的能量。当Blob的能量小于或等于0时,它就会死掉。 吃 如果两个或多个Blob试图占据同一位置,则能量最大的一个将吞噬其他能量,并吸收它们的能量。如果两者具有相等的能量,则两者都会消失。 检测与信息 斑点可以在4个单位的距离内看到任何颗粒或其他斑点。调用其函数时,将为blob提供: 地图的边长 斑点在地图上的位置 所有小球在其搜索半径内的位置及其值 所有Blob在其搜索半径内的位置,以及它们的能量和UID 执行功能的Blob的能量,UID和位置 Blob唯一的存储对象 通过拆分由与该blob相关的所有blob共享的存储对象 分裂 如果斑点的能量超过50,则可以选择拆分。拆分会消耗50能量,并且所有剩余能量将在两个Blob之间平均分配。所有blob都是原始副本或拆分副本,每个副本都可追溯到原始副本。所有这些都是“亲戚”。所有亲戚都有一个公共存储对象。亲戚仍然可以互相吃饭,可以分裂,使用自己的存储对象或收集能量而不会影响他人。 能量转移 如果两个Blob彼此相邻(移动后),则其中一个机器人可以将能量传递给另一个机器人。这是通过返回完成SendNorth(amt),SendEast(amt),SendSouth(amt),或SendWest(amt),其中amt是代表所述量的号码发送。这可以是发件人可以负担的任何金额,包括其所有能量。建议告知接收能量的斑点在公共存储中保持静止,以使其在转移能量时不会移开(尽管在这种情况下不会从发送者的总量中扣除能量)。 函数,存储和UID 为了允许更复杂的学习行为,所有Blob都将被赋予一个整数UID(唯一标识符)。这些UID将在每个地图上随机生成,从而防止基于单个目标的策略。调用Blob的函数时,将为其传递四个参数: 地图的边长(整数) 具有两个数组的对象:pellets和blobs。两个数组都包含对象,两个对象都具有一个pos属性,该属性包含格式为的颗粒或团块位置[x,y]。丸粒将具有energy属性,而斑点将具有uid属性和energy属性 含有团块的各种属性的对象它被传递给:energy,uid,和pos。该pos阵列被格式化为[x,y] 包含Blob的两个存储对象的对象。一个self属性包含一个可以修改的单独存储对象,但是blob认为合适(通过操纵所传递对象的communal属性),以及一个可以被任何亲戚修改的属性。 斑点不立即移动以防止较早/较晚的转弯具有优势。所有运动均按组进行处理(所有碰撞/进食,然后是所有药丸,然后分裂,等等)。如果某个药丸落在药丸或较小药丸上,并且在此过程中使用了其最后的能量,药丸仍将消耗药丸/能量,而不管其总能量是否大于0。 为了使相对Blob能够相互识别,必须为每个Blob使用公用存储,以在阵列中或通过其他系统记录其UID。 返回值 为了移动或拆分,使用了函数的返回值。首先,基本方向在坐标方面的含义: 北= -Y 东= + X 南= + Y 西= -X 请注意,它[0,0]是左上角,并且Y随您的下降而增加。函数的返回值应遵循以下规则: 不执行任何操作:不返回任何内容,0,null,undefined,false或任何其他等于false的值 移动:返回四个全局变量之一:北,东,南或西,它们等于“北”,“东”,“南”或“西”(也可用作返回值) 要拆分:返回全局变量SplitNorth,SplitEast,SplitSouth或SplitWest,其方向指示将新Blob放置在何处 如果返回拆分命令,并且所需能量大于或等于斑点的能量,则不会发生任何事情。Blob将无法离开地图。 …

4
洞穴游侠-探索黑暗
您的地质学家哥们突然闯进办公室门,激动地睁大了眼睛,请您与他一起去他刚刚发现的地方。在途中,他解释说,他认为自己确实击中了金子。唯一的问题是,它被埋在地下非常不稳定的洞穴中。进行洞穴探险实在太危险了,因此他希望您对他的一个洞穴探险机器人进行编程,以在将其拉回之前收集尽可能多的黄金。他还提到自己已经探查了洞穴,发现了一些可能对机器人有害的野生生物,并且还把一些仍可以使用的设备丢到了那里。每个机器人都配备有两个手臂和一系列传感器。当您到达现场时,他告诉您他正在计划招募更多编码员, 现在,深入到细节。传感器将信息作为ASCII字符传递到您的程序。以下是每个角色的含义以及机器人可能在山洞中遇到的任何事物的描述的列表: Code Name/Description Y Your bot You do things @ Other bots They do other things - Ground This doesn't do things C Centipede These will bite you and leave a poison effect The bite will cost 1 health The poison effect will last for 3 turns, costing 2 …

8
保持距离成圈
这是基于这一挑战以及Geobits / CarpetPython提出的改进建议: 保持距离! 对于此挑战,两个数字之间的距离是在一个循环中测量的,因此,例如0与999之间的距离为1。这应避免总是每次都选择最低或最高数字之类的策略。唯一的其他变化是,现在可以选择的最低数字为0而不是1。 我在这里总结一下: 用Java,Python或Ruby编写一个带有三个参数的函数: 到目前为止打过的回合数 玩家人数 前几轮中选取的数字,以空格分隔的字符串数组形式 它应返回0到999之间的整数(含) 每个程序的得分是每个程序选择的数字的距离的平方根之和 100回合后得分最高的程序获胜。 每人一个答案 控制程序在这里: https://github.com/KSFTmh/src/ 排行榜 TheBestOne的NumberOne获奖。 一号-9700 NumberOnePlusFourNineNine-9623 古代历史-9425 FindCampers-9259 WowThisGameIsSoDeep-9069 采样器-9014 破坏者露营车-8545 显然,我的露营者破坏活动... er(?)不能很好地工作。 这是完整的结果:https : //github.com/KSFTmh/src/blob/master/results-3 我认为这足够不同,不能重复。 顺便说一句,这是我第一次在Stack Exchange上提问,所以请让我知道我做错了什么。

3
部分可观察的Connect-4
游戏 您将玩(几乎)Connect-4的标准游戏。不幸的是,这是一个对应游戏,有人从底部开始在第二行上放了黑色胶带,因此您在这些行中看不到对手的任何举动。 在已经满满的栏中进行的任何移动都将视为您的回合,如果游戏进行的时间超过6 * 7回合,则将其视为平局。 挑战规格 您的程序应实现为Python 3函数。第一个参数是棋盘的“视图”,代表已知棋盘的状态,是从下到上的2D行列表,其中1第一个玩家2移动,第二个玩家移动,0空位置或隐藏被你的对手移动。 第二个参数是从索引的转码0,其奇偶性告诉您您是哪个玩家。 最后一个参数是任意状态,初始化为None每个游戏开始时的状态,您可以使用该状态来保留回合之间的状态。 您应该返回要播放的列索引的2元组,并在下一轮返回新状态。 计分 胜利计为+1,平局计为,0损失计为-1。您的目标是在循环锦标赛中获得最高的平均分数。我会尝试根据需要进行尽可能多的比赛,以确定明确的获胜者。 规则 任何竞争者一次最多只能拥有一个竞争机器人,但是如果您进行了改进,可以更新您的参赛作品。请尝试将您的漫游器限制为每转大约1秒的思考时间。 测试中 这是控制器的源代码,以及一些非竞争性示例bot供参考: import itertools import random def get_strides(board, i, j): yield ((i, k) for k in range(j + 1, 7)) yield ((i, k) for k in range(j - 1, -1, -1)) yield ((k, j) for …
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.