Questions tagged «java»

这个挑战与Java语言有关。请注意,通常不建议要求答案使用特定语言的挑战。

30
生存游戏-创建狼
董事会 该板是单元的二维阵列。细胞由动物组成。每天,董事会中的所有动物都同时采取行动。如果两个或多个动物移到同一牢房,它们会战斗直到剩下一个。可能的移动和攻击如下: 移动 - { Move.UP,Move.RIGHT,Move.DOWN,Move.LEFT,Move.HOLD} 攻击 - { Attack.ROCK,Attack.PAPER,Attack.SCISSORS,Attack.SUICIDE} 动物通过玩剪刀石头布进行战斗。标准规则适用,但有两个修改。首先,您可以随时自杀。第二,领带被随机打破。如果有两个以上的动物相撞,则将随机选择两个动物进行战斗,直到剩下一个。 玩家们 动物的行为和外观如下。 狮子 由人物代表L。移动DOWN,RIGHT,然后重复。用PAPER或伪随机攻击SCISSORS。 熊 由人物代表B。移动DOWNx 4,RIGHTx 4,UPx 4,LEFTx 4,然后重复。攻击PAPER。 石 由人物代表S。动作HOLD。攻击ROCK。 狼 仅包括作为答案提交的狼。以“ W”表示。随动而动。任意进攻 您将通过填写以下模板中的空白来实现Wolf。所有提交都必须使用Java,并且必须包含在一个文件中。另外,@ ProgrammerDan编写了一个包装器类,将竞争范围扩展到非Java提交。 // Optional code here public class Wolf extends Animal { // Optional code here public Wolf() { super('W'); /* Optional code here …

30
生存游戏-AlienWar
异形战争 这场比赛发生在一个非常拥挤的星球上,外星人是最出色的种族。您的任务是创建自己的外星人并击败其他所有外星人。 董事会 这是一个二维板。 木板一侧的长度Math.ceil(sqrt(species * 100 * 2.5))约为所用木板的40%。棋盘是一颗行星,因此,如果您走出西部的地图,便会回到东部。如果您在北部走出去,就会发现自己在南部。 能力 地球上的每个物种都有能力。他们来了: 名称 受益 寿命HP = lifeLVL * 5(每次击中都会减少,0 =死亡),基本HP = 10 强度你的命中值在[1至强度LVL]伤害范围内随机产生一个整数 防御在[0到(50 / 防御LVL + 1)] 范围内随机选择int ,如果int == 0,则躲避下一次攻击 视力带给您视力LVL / 2视野 机灵当发送给其他外星人时,会随机模糊(增加)[从0到clevernessLVL / 2] 范围内的每个能力 游戏 每个提交将有100个实例。 实例化后,每个外星人总共可以设置10个能力点。您可以为每个实例设置不同的点。 如果设置的点数超过10,实例将死亡。 一场比赛包括1000发回合。每轮: 每个外星人都必须通过来退回行动move(char[] fields)。这包括Move.STAY。 如果有几个外星人在场上,将随机选择2个: 如果双方都同意和平(返回错误wantToFight),他们将留在原地,否则他们将战斗。 这样循环直到只有一个外星人留在田野上或者所有人都同意和平。 如果一个外星人杀死了某些东西,他将获得每一种敌人技能的1/5。获胜者HP将被补充2 * …

30
Java打高尔夫球技巧
在Java中是否可以使用任何有用的快捷方式? 如下所示,import已经在程序中添加了至少17个字符。 import java.io.*; 我知道简单的解决方案是使用另一种语言,但是缩短Java程序似乎是一个真正的挑战。 提示应特定于Java:如果它们适用于大多数类似C的语言,则它们属于更一般的提示列表。
86 code-golf  tips  java 

28
你是最弱的一环,再见
这个特大号的最山上的挑战是基于关闭的游戏节目,最薄弱的环节。对于那些不熟悉该节目的人,此挑战的症结在于您要投票否决谁: 如果其他玩家比您聪明,那么您获得底池的机会就更少。 如果其他玩家比您还笨,那么您所拥有的底池就更少了。 在每个回合开始时,底池从$ 0开始。组成一个由9个玩家组成的组,每个玩家都被赋予1到9之间的唯一智慧。 在每个回合开始时,每个Pot += Smartness仍在回合中的玩家。然后,玩家对希望删除的玩家进行投票。得票最多的玩家将被删除。如果出现平局,则保留更聪明的玩家。 当本轮只剩下2位玩家时,他们将在智慧之战中对峙。玩家获胜的机会是Smartness/(Smartness+OpponentSmartness)。然后获胜的玩家将收到整个彩池。 在游戏结束时获得最多钱的玩家将获胜。 输入输出 每回合,您将收到当前的对手列表。您可以通过Player类中的功能访问自己的聪明才智和所有玩家的整个投票历史记录。 作为输出,您必须返回一个整数,代表您希望投票的球员(代表他们的聪明才智)。投票为自己被允许(但不推荐)。 9回合将重复进行,直到所有玩家至少玩了1000 10000回合,并且所有玩家都参加了相同的回合数。 您可以在这里找到控制器:https : //github.com/nathanmerrill/WeakestLink 要创建播放器,您需要扩展Player类,并将您的播放器添加到PlayerFactory类。您的课程必须遵循以下规则: 严禁与任何其他播放器(包括您的其他同类型播放器)进行通信或干扰。 不允许使用反射和静态变量(常量除外)。 如果要使用随机性,我getRandom()在Player类中提供了一个函数。使用它,因此模拟可以是确定性的。 我在Player类中提供了许多功能,以便于访问数据。您可以在Github上在线找到它们。您的玩家将在每个新回合实例化。允许“愚蠢/自杀”玩家(但不允许使用具有相同策略的玩家)。 分数 377195 WeakestLink.Players.PrudentSniper 362413 WeakestLink.Players.Sniper 353082 WeakestLink.Players.VengefulSniper 347574 WeakestLink.Players.AntiExtremist 298006 WeakestLink.Players.BobPlayer 273867 WeakestLink.Players.MedianPlayer 247881 WeakestLink.Players.TheCult 240425 WeakestLink.Players.Leech 235480 WeakestLink.Players.SniperAide 223128 WeakestLink.Players.Guard 220760 WeakestLink.Players.Anarchist 216839 WeakestLink.Players.RevengePlayer 215099 WeakestLink.Players.IndependentVoter …

19
团契之战
在这个挑战中,您将创建一个战利品,目标是在战斗中击败所有其他奖学金。 奖学金(团队)由3个字符组成。每个角色的行动都与团队其他成员无关,但是在与敌人作战时,他们需要共同努力。团队将以旋转的方式面对面面对面。胜利值得3分,平局值得1分,损失值得0分。 角色具有能力。选择角色具有的能力是本KotH中最关键(也是最有趣)的部分之一。它们都很强大,并且有可能消灭敌人。 角色拥有生命值(HP),并且当他们的HP达到(或低于)0时,他们将死亡。如果对手团队中的所有角色死亡,那么您就赢了! 角色有法力值。大多数动作都需要Mana来执行,如果您没有足够的力量,则该动作对您不可用。 角色有转弯延迟。这确定了每回合之间的刻度数(从100开始)。越低越好。 字符具有属性。每个字符在每个属性中均以5为底,并且还为您分配了20个额外的属性点。分配属性点后,您的主要属性将被设置为最高属性。 可用的属性有: 力量:每回合能提供10最大生命值和0.5生命值 智力:每回合提供7点最大魔力和0.1点魔力 敏捷度:减少转弯延迟1 运动,视觉,范围 范围如下(以0为中心)。一些范围是基数,这意味着它们只能直接向上,向左,向右或向下移动。 444 43334 4322234 432111234 432101234 432111234 4322234 43334 444 角色的初始视野为2。相同研究对象的玩家之间的视野是共享的。 怎么玩 建设者 将建立他们的团契。 您需要执行以下步骤: 给每个角色属性点。每个角色的每个属性开头都是5,另外还有20个角色在3个角色之间分配。 赋予每个角色能力。每个角色以4个异能槽开始,默认情况下,异能占据1个槽。一些能力是可重复的,并且可以多次赋予一个角色。未经所有者许可,不允许使用其他提交的功能集。 为您的机器人编写一些代码。该代码必须使用Java,并将用于战斗(下一步) 动作 所有字符均以3个标准动作开头: 步骤:在1个基本范围内移动角色 切片:在1个基本范围内攻击PrimaryAttribute的敌人 微笑:无所事事 在角色回合上,然后必须选择要执行的动作。动作可能会消耗法力值,并且可能会有冷却时间,该时间定义了再次执行该动作之前必须等待的回合数。 能力 每个角色都有4个能力槽。如果一个能力用斜体表示,那就是一个动作。 能力 名称说明法力冷却 移动 闪烁 移至一个正方形,范围4 2 2 交换 与目标5交换位置5 传送 随处移动20 5 …

4
Splix.io-大地之王
您是一个有进取心的人,希望增加其控制下的土地。这很简单-离开您当前的土地,然后循环回到您的土地,该循环中的所有东西现在都归您所有。但是有一个问题!如果其他点以某种方式找到您的循环并穿过该循环,则您将死亡。 如果尚未尝试过,请转到Splix.io并尝试游戏。使用箭头键控制您的移动。 GIF 图片来源:http://splix.io/ 细节 所有玩家都从200x200板上的随机位置开始。(我保留更改此内容的权利:)。您将有一定数量的动作来积累尽可能多的积分。得分如下: 您杀死的玩家人数乘以300 一轮结束时您拥有的土地数量 这就提出了别人可以偷走你的土地的观点。如果他们开始了与您的某些土地相交的循环,那么他们可以要求它。如果您在回合中死亡,则该回合的所有分都将丢失。 每个回合都有一个随机选择的玩家组(最多5个唯一的玩家)(可能会发生变化)。每个玩家都参加相同数量的回合。您的机器人的最终得分取决于其平均每游戏得分。每个游戏包括2000回合(可能随时更改)。所有漫游器都同时移动。 死亡案件 头屁股 两名球员在彼此对撞时死亡。即使两个玩家都在自己的空间边缘,这仍然是正确的。 但是,当只有一名玩家在他的土地上时,另一名玩家死亡。 线交叉 在这种情况下,只有紫色玩家死亡。 你不能越过自己的界限。 退出董事会 如果玩家试图退出棋盘,他将死亡并失去所有积分。 捕获区域 玩家在有足迹并再次进入自己的土地时将占领区域。 红色填充在两条红线之间。玩家不填写的唯一情况是其他玩家进入循环。需要明确的是,这仅在其他玩家本人处于循环中时才适用,而不仅仅是他所拥有的土地。玩家可以从另一个人手中夺取土地。如果玩家无法填写其足迹周围的区域,则足迹将直接转换为正常土地。如果另一个玩家落地循环中的玩家死亡,则该循环中的区域将被填充。每次玩家死亡时,都会重新检查棋盘上可以填充的区域。 控制器详细信息 控制器在这里。它与原始游戏非常相似,但由于技术原因,已进行了一些小的改动以使其更适合KotH。它是使用@NathanMerrill的KotHComm库构建的,并且在@NathanMerrill的大力帮助下也是如此。如果您在聊天室的控制器中发现任何错误,请告诉我。为了与KotHComm保持一致,我在整个控制器中都使用了Eclipse集合,但是只能使用Java集合库来编写机器人。 一切都打包在github版本页面上的uberjar中。要使用它,请下载它并将其附加到您的项目中,以便可以将其用于自动完成(IntelliJ的说明,Eclipse)。要测试您的提交,请使用运行jar java -jar SplixKoTH-all.jar -d path\to\submissions\folder。确保path\to\submissions\folder有一个名为的子文档java,并将所有文件放在此处。不要在您的机器人中使用程序包名称(尽管KotHComm可能会使用它,但这只是麻烦一点)。要查看所有选项,请使用--help。要加载所有机器人,请使用--question-id 126815。 写一个机器人 要开始编写机器人,必须先扩展SplixPlayer。 Direction makeMove(ReadOnlyGame game, ReadOnlyBoard board) 在这里,您可以决定要让机器人执行哪一步。不得返回null。 HiddenPlayer getThisHidden() 获取的HiddenPlayer版本this。对于将您的机器人与主板进行比较很有用。 enum Direction 价值观 East (x = 1; y …

20
战略投票,游戏
单赢者选举最常见的投票系统之一是复数投票法。简而言之,得票最多的候选人获胜。但是,从数学上讲,多元投票是不合理的,并且容易造成选民被驱使投票赞成“两个邪恶中的较小者”,而不是他们真正喜欢的候选人。 在这个游戏中,您将编写利用多个投票系统的程序。它将在选举中为三名候选人之一投票。每个候选人都为自己带来一定的回报,而您的目标是使您的预期回报最大化。 收益是“均匀地”随机分布的,随每次选举而变化,并增加到100。候选人A可以拥有40收益,候选人B可以拥有27收益,候选人C可以拥有33收益。每个玩家都有一组不同的收益。 轮到您投票时,您将获得不完整的信息。下面列出的是您将可以使用的信息。由于您不知道其他玩家的个人收益是多少,因此根据当前的投票结果预测他们如何投票将是您的挑战。 到目前为止的部分选举结果 尚未投票的参与者(不包括您自己)的数量 您为每位候选人的个人收益 每个候选人的团体总收益 在给每个玩家投票的机会之后,投票最多的候选人将按照多次投票获胜。然后,每个玩家都会收到与该候选人的收益相对应的积分数。如果票数相等,则分配的分数将是并列候选人的平均值。 比赛结构 首次实例化时,将告知参赛者在锦标赛中举行的选举次数。我将尝试进行大量的选举。然后,每次选举将一一进行。 参加者洗牌后,每个人都有投票权。他们只能获得上面列出的有限信息,并返回一个数字表示他们的投票。每次选举结束后,将为每个漫游器提供最终的民意调查结果,并从该选举中增加其得分。 在举行了许多次选举之后,得奖者将是总分最高的人。控制器还通过将每个参赛者的得分与为随机投票机器人预测的得分分布进行比较来计算每个参赛者的“标准化”得分。 提交内容 提交将采用Java 8类的形式。 每个参赛者必须实现以下接口: public interface Player { public String getName(); public int getVote(int [] voteCounts, int votersRemaining, int [] payoffs, int[] totalPayoffs); public void receiveResults(int[] voteCounts, double result); } 您的构造函数应采用一个int作为参数,该参数将代表将举行的选举次数。 该getName()方法返回要在排行榜上使用的名称。这样您就可以拥有格式精美的名称,只是不要发疯。 该getVote(...)方法返回0,1或2以表示将获得投票的候选人。 该receiveResults(...)方法主要是为了实现使用历史数据的更复杂策略的存在。 您几乎可以创建任何其他想要记录和处理提供给您的信息的方法/实例变量。 比赛周期,扩大 每个参赛者都以实例化new …

29
美元钞票拍卖
这是美元博弈游戏理论上的KOTH挑战。其中,一美元被卖给出价最高的人。出价以5美分递增,失败者也支付出价。他们的想法是,为了减少损失,两家公司都将竞标战争升级到远远超过一美元的价值。 希望您的机器人比这更聪明。 您将通过扩展net.ramenchef.dollarauction.DollarBidder课程来创建一个玩这种游戏的机器人。nextBid给定另一个机器人的先前出价,您必须实现返回机器人的下一出价的方法。如有必要,您还可以使用该newAuction方法为对手的机器人等级进行每次拍卖重置。 public abstract class DollarBidder { /** * Used by the runner to keep track of scores. */ long score = 0; /** * (Optional) Prepare for the next auction. * * @param opponent The class of the opponent's bot. */ public void newAuction(Class<? extends DollarBidder> opponent) {} …

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 

19
敌对因子数
一些正整数的除数确实很讨厌彼此,并且他们不喜欢共享一个或多个公共数字。 这些整数称为敌对数数(HDN) 例子 Number 9566有4除数:(1, 2, 4783 and 9566 如您所见,其中没有两个共享相同的数字)。 因此,9566是一个ħ ostile d ivisor Ñ棕土 号码9567是不是HDN,因为它的除数(1, 3, 9, 1063, 3189, 9567)具有一些共同的数字。 这是前几个HDN 1,2,3,4,5,6,7,8,9,23,27,29,37,43,47,49,53,59,67,73,79,83,86,87,89,97,223,227,229,233,239,257,263,267,269,277,283,293,307,337... 任务 上面的列表继续,您的任务是找到第n个 HDN 输入值 n从1到的正整数4000 输出量 该nth HDN 测试用例 这是一些1索引测试用例。 请说明您在答案中使用的索引系统,以避免造成混淆。 input -> output 1 1 10 23 101 853 1012 26053 3098 66686 4000 85009 这是代码高尔夫球,因此以字节为单位的最低分数获胜。 …

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 

14
代码机器人4:函数式编程
嘘,这真的是第四吗?对于所有老用户来说,核心挑战是相同的,但是我们使用Java而不是自定义语言。如果您有兴趣,这里是过去三个 CodeBot 挑战。 CodeBots的目标是使您的机器人尽可能地具有病毒性。每个漫游器都带有一个Flag,并且您需要确保您的Flag 到处都是。 API 漫游器将遵循标准化的“协议”,而漫游器将同步执行以下步骤: IPAddress selectMessageRecipient() 允许机器人选择他想向其发送“友好”消息的对象。 Message sendMessage() 允许漫游器选择他将发送的消息的内容。 processMessage(IPAddress, Message) 机器人收到的每条消息都会被调用。 FunctionType selectFunctionToBlock()阻止当前回合中的函数被覆盖。请参阅步骤7。 IPAddress selectAttackTarget()允许漫游器选择他想要DDOS的对象。如果该机器人同时被3个机器人作为目标,则DDOS攻击成功。如果攻击成功,则每个攻击者都可以执行步骤6和7。 readData(ReadonlyBot) 允许机器人读取易受攻击的机器人上存储的数据。 FunctionType selectFunctionToReplace()是挑战的关键。您可以选择1个功能(在此列出的8个功能中)从您的机器人复制到他们的机器人。然后,将调用您的函数而不是它们的函数。如果多个机器人选择了相同的功能,则随机将成功。 String getFlag()在游戏结束时被调用,并且应返回您提交的唯一字符串。您的函数应始终返回相同的字符串。游戏结束时带有最多标记的提交将获胜。 存储 您有3种存储形式,一个AddressBook,一个Log和一个Variables。 这些存储形式是函数运行所在的bot的本地存储(因此,如果函数被复制,则每个对象的内容将有所不同)。所有这些对象都可以手动修改或清除。要获取这些对象,您的班级中有一个吸气剂(例如getLog())。 该通讯录存储列表ip地址,每一个地址类型,它可以让你在不同类型的地址进行分类。 AddressBook将始终至少包含1个地址(如果清除该地址,则会添加一个随机的地址)。不允许清除地址簿以获取多个IPAddress。 该日志存储有关的行动采取的所有行动,以及数据的列表。它还包括所有成功攻击的历史记录(尽管您不知道它们重写了哪些功能) 该变量对象允许你存储连接到一个字符串名称字符串变量。在游戏开始时,变量将包含一个变量,ID其中包含一个随机生成的ID,该ID对于您的机器人类型是唯一的。 您还具有其他访问功能: int getTurnNumber() 返回当前转弯的整数 bool functionsMatch(ReadonlyBot, FunctionType) 测试以查看ReadonlyBot的函数是否与您的函数匹配 IPAddress personalAddress() 返回您的IPAddress 如何实施 您可以从Github获取代码 将您的漫游器添加到该\bots文件夹,然后在其中添加对您的漫游器的引用controller\CodeBotFactory.java 您的漫游器必须扩展codebots.bot.CodeBot或codebots.bots.DefaultCodeBot 如果要运行控制器,则需要Java 8。 …

9
象棋比赛
这是具有简化规则的国际象棋-象棋(因为国际象棋本身已经很复杂,通过简单的程序玩国际象棋并不容易)。目前,它仅限于Java(版本8),但是创建包装器类并不那么困难(以防有人想要这样做)。 棋盘 控制程序中的棋盘使用ICCF数字符号的修改版本。它是从零开始的,表示左下角的字段是位置0,0,而右上角的字段是position 7,7。 修改规则 传递将被忽略。 卡丁车是不可能的。 在五十移动规则适用自动(意为平局的游戏结束)。 当棋子到达棋盘末端时,棋子自动升为皇后。 如果玩家需要超过2秒的移动时间,他将输掉比赛。 返回无效的举动将导致游戏失败。 为了赢得胜利,您必须抓住敌人的国王。扼杀敌人还不够。 这也使您可以将国王移到敌人可以俘获您的领域。 怀特开始比赛。 白色位于字段的“底部”(y = 0),黑色位于顶部(y = 7)。 禁止访问除您的漫游器以外的其他资源(互联网,文件,其他漫游器,...)。 计分 获胜将使您获得3分,平局1分,而输0分。 每个提交将与对方提交进行10次对战(白色5次,黑色5次)。 控制者 您可以在github上找到控制程序。 要参与,您必须在player包内创建一个类,并且该类必须是的子类Player。例如,查看 TestPlayer(也将包含在评分中)。 在每个游戏中,控制器都会创建您的玩家的新实例。然后,每转一圈您都必须返回一个动作。控制器为您提供了Board的副本,其中包含8x8的Field数组。甲字段包含关于它的颜色,它的位置和信息片就可以了,如果有一个。 控制器还为您提供有关敌方玩家的信息,例如isCheck和getPieces()。召唤getMove()敌人会使您失去参赛资格。 计分板 01)AlphaBetaPV:229 02)AlphaBeta:218 03)计件器:173 04)奶酪:115 05)ThreeMoveMonte:114 06)StretchPlayer:93 07)不要想太多:81 08)SimplePlayer:27 09)TestPlayer:13 该竞赛仅限于Java,因为它使创建答案更加容易,因为您可以从控制器提供的方法中受益。但是,如果有人创建包装器,我将使用其他语言。

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.