Questions tagged «king-of-the-hill»

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

9
KOTH:TNT跑步挑战赛
这是受《我的世界》迷你游戏的启发。规则很简单:您奔跑并跳来跳去,踩到的每个块都会消失。目标是成为最后一名。 您的机器人程序应该是完整的程序。它应该接受输入作为命令行参数。输入将是“世界”的地图;这是一个例子: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx x xxxxxxxxxxxxx@xxxxxxxxxxx xxxxxx1xxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxx x x xxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx xxx xx3xxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx …

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。 …

3
实施简化字距调整
介绍 字距调整是指调整文本字母之间的间距。例如,考虑Top用以下三个字形写的单词: ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... 我们可以用点填充字形之间的间隙并完成它,但是间隙看起来太宽了。相反,我们将字形滑动到左侧,以便它们几乎可以接触: #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... 看起来好多了!请注意,的条形图T在的左边框上方o。在此挑战中,您的任务是为此类矩形字形实现一个简单的字距调整程序。 字距调整过程 考虑具有.和#形状相同的两个矩形2D字符数组。在简单的字距调整过程中,我们首先将数组并排放置,中间放置一列.s。然后,我们将#右阵列中的每一个向左移动一步,直到#左右阵列中的s正交或对角相邻。字距调整的结果是引入相邻s 之前的步骤#。您的任务是实施此过程。 让我们举个例子: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

8
KOTH:每个人都喜欢代币
在这个游戏中,两个玩家争夺吃掉最多积分的代币,但是有一个转折!连续吃多个相同颜色的代币会带来越来越多的奖励,但是要当心,否则您的对手会通过吃掉您想要的代币来破坏您的计划! 规则: 1对1 n x n板(随机大小在5x5和15x15之间) 您和您的对手将在同一个随机细胞中产生 整个棋盘将在某些单元格中随机生成数字,范围从1-3 将生成2 *(板的宽度)令牌,但可以覆盖,因此可能会更少。 每个数字都是十六进制RGB格式的三种颜色之一:红色,绿色或蓝色 每回合,玩家1移动并更新棋盘,然后玩家2移动并更新棋盘。因此,每个玩家都可以根据棋盘状态的变化有效地判断前一个玩家的动作。这将一直持续到游戏结束为止,如下所述。 您有6个可能的转弯动作:上,右,下,左,进食和通过 4个移动命令是不言自明的,您可以转弯。如果您退回无意义的举动,我们将假设您的意思是通过。如果您尝试移开电路板的边缘,则不会移动。边缘不包裹。 EAT消耗您当前所在位置与 您获得的积分与您消费的积分一样多 如果您连续吃两个相同颜色的数字,您将获得+1 如果您连续吃3个相同颜色的数字,则得到+2 如果您连续吃相同颜色的m个数字,则得到+(m-1) 这些奖金是累加的,因此在您吃另一种颜色时,连续获得m个数字将导致m *(m-1)/ 2。 游戏结束条件: 所有数字都被消耗掉 任一位玩家(没有任何代币都可以2 *(宽度)到达)进行4 *(棋盘的宽度)转弯而没有有效吃掉(只是说“ EAT”,没有你要的标记没有计数)移动,因此只有在两个玩家都没有单个目标标记的情况下,才会超过此界限) 您的AI只需不到一秒钟的时间就可以采取行动,否则将通过PASS作为您的选择。 锦标赛将是轮巡赛,有很多回合,例如100或1000。将生成一个随机棋盘,并且该棋盘上将运行每个有序对的不同玩家。比赛结束后,我们将按总得分对人员进行排名。因此,即使您是一场比赛的玩家2,您的目标仍然是获得尽可能多的积分。 AI提交:我的控制器支持的语言是Javascript。允许多次提交。每个人都为这样的对象提交构造函数: function (player1) { this.yourMove = function (b) { return "MOVE"; } } 输入的内容player1是布尔值,表示您是否是玩家1。您的构造函数必须具有该yourMove函数,但也可以具有任意数量的其他函数或值。不要定义任何全局变量,只需将它们作为变量放在对象上即可。每次比赛开始时都会创建一个新版本的对象,并yourMove在每次旋转时以当前棋盘为输入在其上调用该对象的新版本 ,并应返回有效的移动。 b,是的输入yourMove,是当前电路板的副本,以下是构造函数以及输入示例,尽管您不能自己调用​​它们: function token(color, points) { …

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,因为它使创建答案更加容易,因为您可以从控制器提供的方法中受益。但是,如果有人创建包装器,我将使用其他语言。

5
山丘之王:速度线索AI
速度线索 Cluedo / Clue是一款经典的棋盘游戏,具有引人入胜的演绎游戏元素。Speed Clue是3-6位玩家的变体,仅使用纸牌来强调此组件。结果是标准Cluedo和Speed Clue之间的唯一区别是,仍在游戏中的每个玩家都可以在转弯时提出自己喜欢的任何建议,而不必等着掷骰子和其他玩家的建议等待到达特定的房间。如果您以前从未玩过Cluedo,或者想确定两个版本之间的明显区别,可以在此处找到完整的Speed Clue规则集。 目标 在2014年5月15日格林威治标准时间00:00之前编写并提交AI程序来玩Speed Clue。在那之后,我将使用所有合法条目进行比赛。AI在比赛中赢得最多比赛的参赛者将赢得挑战。 AI规格 只要AI 通过TCP / IP连接严格使用应用程序协议来与服务器玩游戏,就可以使用几乎任何语言编写您的AI,无论使用哪种技术。有关所有限制的详细说明,请参见此处。 怎么玩 首先分叉竞赛GitHub存储库。在entries使用您的StackExchange用户名命名的目录下添加目录 ,并在该文件夹中开发代码。当您准备提交条目时,请提出您的修订请求,然后按照以下说明进行操作在此站点上宣布您的条目。 我已经在core目录中提供了一些代码和JAR,以帮助您入门。请参阅我的网站以获取有关材料的粗略指南。此外,其他参与者除了输入内容外,还提交了辅助代码,以帮助您启动和运行。花一些时间浏览这些条目,并且不要忘记在提交之前将您的条目与其他条目进行测试! 结果 Place | User | AI | Result ------+--------------+--------------------+------------------------------------------------------- 1 | gamecoder | SpockAI | 55.75% 2 | Peter Taylor | InferencePlayer | 33.06% 3 | jwg | CluePaddle | 20.19% …

15
半回文之谜
回文是一个本身相反的词。 现在有些单词看起来像回文,但看起来却不然。例如,考虑单词 sheesh, sheesh不是回文,因为它的反向是hseehs不同的,但是如果我们认为sh是单个字母,那么它的反向是sheesh。我们将这种词称为半回文。 具体来说,如果我们可以将单词拆分成一定数量的块,则该单词为半回文,这样当块的顺序颠倒时,便形成了原始单词。(因为sheesh这些块是sh e e sh),我们也将不要求任何块包含两个单词的字母(否则每个单词都是半回文)。例如rear,不是半回文,因为它r ea r具有一个块(ea),其中包含来自原始单词两边的字母。我们认为奇数长度的单词的中心字符不在单词的两侧,因此对于奇数长度的单词,中心字符必须始终位于其自己的块中。 您的任务是获取正整数列表,并确定它们是否为半回文。您的代码应输出两个一致的不相等值,如果输入是半回文,则应输出一个,否则将输出另一个。但是,代码的字节序列本身必须是半回文。 答案将以字节计分,而字节数越少越好。 测试用例 [] -> True [1] -> True [2,1,2] -> True [3,4,2,2,3,4] -> True [3,5,1,3,5] -> True [1,2,3,1] -> False [1,2,3,3,4,1] -> False [11,44,1,1] -> False [1,3,2,4,1,2,3] -> False 程序生成更多的测试用例。 borrible指出,这些与广义Smarandache回文相似。因此,如果您想做进一步的阅读,那是一个开始的地方。

15
证券交易所
股市全与知识的速度有关。与以前的挑战不同,当前的股价不是随机的:它是由玩游戏的人确定的。 如果您能在其他任何人之前发现低价股票,那么您已经为自己编写了赚钱程序。 价格是指人们交易股票的数量,价值是指游戏结束时股票的价值。 每个玩家以每只股票1000头开始,相对净资产为0。 每只股票都有一个秘密价值,您在游戏结束时的得分是(stockValue for each ownedStock) + netWorth。您的净资产可能为负。在N玩家游戏中,有N只股票。 脚步: 游戏遵循以下步骤: 您将获得单只股票的秘密价值。 您提出要价以$ Z卖出X股Y股票 所有玩家都获得了优惠,每个人都可以选择一个接受 通知所有玩家已接受的报价 返回步骤2 每个步骤的详细信息如下: void secretValue(int stockType, int value): 您学到的价值不会透露给其他任何玩家。 值介于0和之间1000 低值比高值更容易发生(平方均匀分布) Offer makeOffer(List<Stock> currentStock) 您可以返回null不提供任何报价。 Offer acceptOffer(List<Offer> offers) 您可以返回null接受任何一个 如果没有可用的报价,则不会调用此报价 如果您接受,则您的资产净值下降$ Z(可能变为负数)并获得X的Y股票。与卖方相反。 如果您接受报价,则交换将立即发生,并且报价将被删除,因此其他玩家将无法接受。 void acceptedOffers(List<Offer> offers) 包括您接受的优惠 不允许使用静态变量或写入文件。(游戏之间不存在持久数据)允许非严重竞争者。 接口: public final class Stock { …

7
金笔!(点和盒)
这是“点和盒子”(又名“笔猪”)挑战山丘之王。游戏很简单,轮到您只需在空的栅栏上画一条线。每次完成一个正方形,您都会得到一个分数。另外,由于我们按照锦标赛的规则进行比赛,如果您在转弯中至少完成一个平方,则您将获得一个额外的转弯。这是一次循环锦标赛,每个漫游器在9x9网格上互相对战两次,每次12次。看看这两个重量级巨人之间的比赛,ChainCollector在其中做得很出色,成为了卫冕冠军Asdf的肉类: 规则 每次移动0.5秒时间限制。 不会干扰其他机器人。 使用PigPen.random()和PigPen.random(int)获得随机性。 不写入文件。 每次对手改变时(每12回合),机器人及其所有持久性数据将被重置。 机器人 每个机器人都扩展Player.java: package pigpen; public abstract class Player { public abstract int[] pick(Board board, int id, int round); } Board是游戏板,主要用来让您进入Pen课程,并且id是您的玩家ID(告诉您是第一还是第二,它round告诉您在哪个回合中与同一个对手(1或2)对战。返回值为an int[],其中第一个元素是penID(1索引),第二个元素是fenceID(0索引)。请参阅参考资料Pen.pick(int),以轻松生成此返回值。有关播放器和JavaDoc的示例,请参见Github页面。由于我们仅使用正方形网格,因此忽略与六边形相关的任何函数和字段。 怎么跑 从Github下载源代码。 编写您的控制器机器人(确保包括package pigpen.players)并将其放入src/文件夹中; 用编译javac -cp src/* -d . src/*.java。运行java pigpen.Tournament 4 9 9 false(可以更改最后两个数字以调整网格大小。仅true当您希望使用pp_record软件时,才应将最后一个变量设置为。) 分数 连锁收藏家:72 助理秘书长:57 懒骨头:51 装订器:36 = LinearPlayer:18 …

6
热土豆推销员
给定点列表,找到访问所有点并返回起点的最短路径。 该旅行商问题是在计算机科学领域的知名,因为有很多方法来计算/近似它。它已经解决了非常多的问题,但是其中一些最大的问题需要很多CPU年才能完成。 不要被土豆烧死。 Hot Potato游戏是2位以上的玩家在播放音乐的同时绕过一个“土豆”的游戏。目的是将其快速传递给下一个玩家。如果在音乐停止播放时握住马铃薯,那就出门了。 Hot Potato Salesman的对象是: 给定一组100个唯一点,请以更好的顺序返回这些点(较短的总距离(进一步定义)。这会将问题“传递”给下一个玩家。他们必须对其进行改进,然后再传递给下一个,依此类推。如果一个玩家无法对其进行改进,则他们将退出比赛并继续比赛,直到剩下一名玩家为止。 为了避免这种竞争成为“暴力之路”竞赛,有以下规定: 您传递马铃薯的时间不能超过一分钟。如果一分钟后还没有找到并通过一个较短的解决方案,那么您就出局了。 您不能更改超过25点的位置。确切地说,>= 75分数必须与收到分数的位置相同。决定更改哪些内容与您更改的金额无关紧要。 当只剩下一名球员时,他就是那场比赛的获胜者,并获得一分。锦标赛由5*n游戏组成n,玩家人数在哪里。每场比赛,起始玩家将被轮换,其余的玩家顺序将被洗牌。最后得分最高的玩家是比赛的获胜者。如果比赛以并列第一名结束,则只有那些参赛者才能参加新的比赛。这将一直持续到没有平局为止。 每个游戏的起始玩家将收到一组伪随机选择的点,顺序不特定。 点定义为x,y笛卡尔网格上的一对整数坐标。距离使用测量曼哈顿距离,|x1-x2| + |y1-y2|。所有坐标都将在[0..199]范围内。 输入项 输入带有单个字符串参数。它将由201个逗号分隔的整数组成,这些整数代表当前玩家(m)的数量和100分: m,x0,y0,x1,y1,x2,y2,...,x99,y99 这些点的顺序是当前路径。总距离是通过将每个点到下一个(dist(0,1) + dist(1,2) + ... + dist(99,0))的距离相加得出的。计算总距离时,不要忘记返回开始! 请注意,m是不是的球员在比赛开始的数字,它是仍处于数量。 输出量 输出与输入减负的方式相同m;单个字符串,其中包含用逗号分隔的整数,这些整数表示其新顺序的点。 x0,y0,x1,y1,x2,y2,...,x99,y99 控制程序将仅等待一分钟的输出。收到输出后,它将验证: 输出格式正确 输出包括仅与所有的100个点中的输入呈现 >=75 点位于其原始位置 路径长度小于上一个路径 如果这些检查中的任何一项失败(或没有输出),则说明您退出比赛了,游戏将继续进行到下一位玩家。 控制程序 您可以在此链接中找到控制程序。控制程序本身是确定性的,并带有一个虚拟种子1。计分过程中使用的种子会有所不同,因此不要费心尝试分析它吐出的转弯顺序/点列表。 主要的课程是Tourney。运行该程序将进行完整的锦标赛,并以参赛者作为参数。它吐出每场比赛的获胜者,并在末尾统计。具有两个SwapBots的示例Tourney看起来像: Starting tournament with seed 1 (0) SwapBot wins …

24
ogl-edocf挑战
输入项 一个非空的字符串,由范围内的ASCII字符组成。[ 32..126 ][32..126][32..126] 输出量 通过对输入字符串进行连续旋转来获得输出。 对于[a-zA-Z]输入字符串中的每个字母(),从左到右: 如果字母是大写字母,请将其前面的所有字符向左旋转一个位置 如果字母是小写字母,请将其前面的所有字符向右旋转一个位置 例 输入:“ Cb-Ad” 第一个字母是“ C ”。我们应该向左旋转,但是这个“ C ” 之前没有字符。因此,没有任何旋转。 下一个字母是“ b ”。我们向右旋转“ C ”。因为它是单个字符,所以它保持不变。 字符“ - ”不会触发任何旋转,因为它不是字母。 下一个字母是“ A ”。我们轮流“ CB- ”到左边,这给“ 公元前广告” 第四个也是最后一个字母是“ d ”。我们向右旋转“ b-CA ”,即为“ Ab-C d” 因此,预期输出为“ Ab-Cd ”。 规则 您可以将输入作为字符串或字符数组进行输入-根据您的语言,输入内容可能相同也可能不同。 您也可以输出字符数组而不是字符串。 这是ogl-edocf 代码高尔夫 测试用例 "cbad" -> …
22 code-golf  string  code-golf  string  code-golf  string  parsing  brainfuck  code-challenge  python  hello-world  error-message  code-golf  string  code-golf  number  integer  counting  subsequence  code-golf  string  cipher  code-golf  array-manipulation  arithmetic  integer  matrix  code-golf  math  sequence  code-golf  restricted-source  pi  popularity-contest  cops-and-robbers  polyglot  popularity-contest  cops-and-robbers  polyglot  code-golf  file-system  king-of-the-hill  code-golf  number  sequence  integer  rational-numbers  string  code-challenge  source-layout  code-golf  ascii-art  king-of-the-hill  code-golf  array-manipulation  sorting  code-golf  string  code-golf  restricted-source  source-layout  tips  math  code-challenge  permutations  logic-gates  code-golf  number  random  integer  code-golf  math  code-golf  math  number  decision-problem  king-of-the-hill  python  board-game  code-challenge  brainfuck  busy-beaver  code-golf  number  cops-and-robbers  polyglot  obfuscation  answer-chaining  code-golf  number  integer  conversion  code-golf  string  parsing  code-golf  ascii-art  number  king-of-the-hill  javascript  code-golf  source-layout  radiation-hardening  code-golf  array-manipulation  matrix  code-golf  string  graph-theory  code-golf  array-manipulation  decision-problem  code-golf  string  ascii-art  code-golf  string  code-golf  array-manipulation 

3
Scrappers v0.1:佣工程序员
在一个荒芜,饱受战争摧残的世界中,城市被暴徒和小偷所淹没,文明以小型,孤立的工业合作社的形式重塑了自己,散布在整个先前无人居住的地区。这些社区的存在依赖于称为““子”的雇佣军团队,他们在未驯服的领土上寻找有价值的材料出售给合作社。随着这些材料变得越来越稀缺,报废已变得越来越困难和危险。脆弱的人类工人大多已被称为“机器人”的远程机器人替身所代替,典型的雇佣军更可能是熟练的程序员,而不是武装的焊工。随着人类报废的存在减少,雇佣军之间的相互尊重也减少了。机器人不仅具有收集废料的能力,而且还可以防御废品,在某些情况下,可以用武力将其收起。Bot程序员不遗余力地制定新的策略,以超越竞争对手的废品,从而导致攻击性越来越强的机器人,这对于在社区墙外冒险的人们来说是另一种危险。 (是的,徽标被搞笑地裁剪了) 欢迎使用Scrappers! 这是Scrappers的早期版本,其中未实施废料收集和工厂。从根本上说,这是“向上射击”。 您是一名雇佣兵程序员,其任务是创建一个程序来远程引导您的机器人,以击败竞争对手的报废团队。您的机器人是类似于蜘蛛的机器,其核心是电力和盾构发电机,周围环绕着许多配有抓取,切割和攻击工具的附件。发电机每刻可产生12个功率单位(pu)(刮板的时间单位)。您可以控制这种力量在机器人的三个主要需求之间的分配方式:机芯,护盾和火力。 爬虫机器人是非常敏捷的机器,可以轻松地在遇到的任何障碍物上方,下方和周围移动。因此,冲突不是程序需要考虑的事情。您可以自由分配机器人可用的全部12pu或全部12pu,只要您进行整数交易即可。将0pu分配给机器人的移动功能会使它无法移动。分配2pu将使机器人能够在每个滴答声中移动2个距离单位(du),5pu将导致5du / tick,11pu将导致11du / tick,依此类推。 机器人的盾牌生成器会在他们的身体周围投射出偏转能量的气泡。盾牌在弹出之前最多可以偏转1点伤害,从而使您的机器人处于暴露状态,直到它的盾牌生成器生成足够的功率以将盾牌重新固定到位。您可以自由分配所有,部分或不分配给机器人的12pu作为其屏蔽。将0pu分配给机器人的防护罩意味着它永远不会生成防护罩。分配2pu可使机器人在12个滴答中生成2个新盾,或者每6个滴答生成一次。5pu将导致每12个滴答中有5个更新盾牌,依此类推。 通过在其焊接激光器中建立电荷,您的机器人可以在短距离内以相当的精度发射破坏性光束。就像生成盾牌一样,您的机器人的发射速度取决于分配给其激光器的功率。将0pu分配给机器人的激光器意味着它永远不会触发。分配2pu可使机器人在每12个滴答声中触发2个,依此类推。机器人的激光将一直传播,直到遇到物体或消失为止,因此请注意友善的射击。尽管您的机器人非常准确,但它们并不完美。您应该期望+/- 2.5度的精度差异。随着激光束的传播,其粒子逐渐被大气偏转,直到激光束在足够的距离内变得无害为止。激光在空白点范​​围内造成1点伤害,每行进的机器人长度造成的伤害降低2.5%。 爬虫程序机器人具有足够的自治能力来处理基本功能,但是依靠您(他们的程序员)来使它们作为一个整体有用。作为程序员,您可以为每个单独的机器人发出以下命令: 移动:指定机器人将朝其移动的坐标。 目标:确定一种在功率分配允许时瞄准并开火的机器人。 力量:在机芯,护盾和火力之间重新分配力量。 技术游戏详情 您需要熟悉三个程序。该游戏引擎是重提升,并提供了TCP API玩家程序连接到。播放器程序就是您要编写的程序,这里我提供了一些带有二进制文件的示例。最后,渲染器处理游戏引擎的输出以产生战斗的GIF。 游戏引擎 您可以从此处下载游戏引擎。启动游戏后,它将开始在端口50000(当前不可配置)上侦听玩家的连接。一旦收到两个玩家连接,它将向玩家发送READY消息并开始游戏。播放器程序通过TCP API将命令发送到游戏。游戏结束后,将创建一个名为scrappers.json的JSON文件(目前也无法配置)。这就是渲染器用来创建游戏GIF的东西。 TCP API 播放器程序和游戏引擎通过TCP连接来回传递第四个换行符终止的JSON字符串进行通信。可以发送或接收的五种不同的JSON消息。 准备好消息 READY消息从游戏发送到播放器程序,并且仅发送一次。该消息告诉玩家程序其玩家ID(PID)是什么,并提供游戏中所有机器人的列表。PID是确定哪些机器人对敌人友好的唯一方法。有关以下机器人字段的更多信息。 { "Type":"READY", // Message type "PID":1, // Player ID "Bots":[ // Array of bots { "Type":"BOT", "PID":1, "BID":1, "X":-592, ... }, ... …

30
获取一个具有不同数字的随机n位数字,第一个不是0
我读了这个问题,并认为这将是一个不错的挑战。 任务 给一个输入0<n<10生成一个随机数 正好n位数字 第一个不是 0 所以 f(n)>10**(n-1)-1 不同的数字 获奖标准 这是代码高尔夫球,因此最短的代码获胜。 随机 我的意思是随机分布均匀。因此,从程序的角度来看,每个可能的数字都有相同的机会。如果您使用的语言具有一个奇怪的随机数生成器,则可以使用该生成器。 例 要从中随机选择的值的列表n=2是: [10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, …
22 code-golf  number  random  grid  game  king-of-the-hill  javascript  code-golf  arithmetic  statistics  code-golf  math  code-golf  math  code-golf  string  palindrome  code-golf  string  interactive  code-golf  quine  polyglot  code-golf  string  stack-exchange-api  code-golf  number-theory  decision-problem  code-golf  tips  code-golf  string  internet  code-golf  graphical-output  image-processing  fractal  code-golf  ascii-art  geometry  hexagonal-grid  code-golf  string  restricted-source  hello-world  code-golf  game  code-golf  cipher  code-golf  permutations  cops-and-robbers  permutations  cops-and-robbers  code-golf  internet  stack-exchange-api  code-golf  ascii-art  random  code-golf  tips  code-golf  ascii-art  code-golf  code-golf  kolmogorov-complexity  code-golf  string  unicode  code-golf  number  sequence  primes  palindrome  code-golf  game  decision-problem  code-golf  math  geometry  code-golf  graphical-output  interactive  code-golf  set-partitions  code-golf  number  arithmetic  restricted-source  code-golf  decision-problem  python  recursion  code-golf  ascii-art  code-golf  source-layout  code-golf  function  recursion  functional-programming  code-golf  game  combinatorics  permutations  code-golf  string  file-system  code-golf  string  hashing  code-golf  stack-exchange-api  code-golf  string  code-golf  math  number  arithmetic  polyglot 

9
山丘之王-骗子的骰子
说谎者的骰子是一个相当简单的骰子游戏。我看到了一些不同的规则变体,但这是我最熟悉的版本: 每个玩家以5d6开始 除了在回合结束时计算骰子时,每个玩家都可以看到自己的骰子,但看不到任何对手的骰子 在任何给定回合开始时,所有玩家都掷出他们当前拥有的任何骰子 然后,一个玩家(通常是前一轮的获胜者,或者是上次开始的玩家左侧的玩家;我们将前者用于此KotH;随机玩家在第一轮开始)猜测桌子上有多少个特定数字(很野生) 竞标继续向右移动,每次竞标都更高(例如,3个5、3个6和4个2都高于3个4个,但3个3个不是; 4个也更高,但竞标可能会使您处于坏处); 直到任何玩家称他们之前的玩家为骗子 在这一点上,所有玩家都展示自己的骰子,并在桌子上一并计算最后一次竞标的次数 如果总价低于出价,则出价的玩家必须给称他们为说谎者的玩家致死,否则,称出价者为说谎者的玩家必须给出价者致死(这样,出价者获胜。如果他们的数量至少等于他出价的数量,则不必是确切的数量) 当骰子用完时,您会输 最后一名站长获胜 例如: 玩家一有1,1,2,4,6 玩家二有1,2,2,3,5 玩家三有1,3,3,4,6 玩家一:三分之六。 玩家二:四分之二。 玩家三:四个三分。 玩家一:五分之二。 玩家二:六个二。 玩家三:六个三分。 玩家一:六四。 玩家二:骗子! 他们露出自己的骰子,并数出骰子(因为有些是野生的)和四数。 事实证明,实际上恰好有六个四。 因此,第二个玩家给一个玩家一个死亡。 他们重新投掷,第一人开始下一轮比赛。 您必须编写一个机器人才能玩此游戏。它必须实现以下抽象java类: public abstract class Player { public Player() {} public String toString() { return this.getClass().getSimpleName(); } public abstract String bid(int yourId, int[] …

13
西部最快的枪,挑战山丘之王
这是循环赛中的山丘之王挑战赛。寻找西方最好的枪手是一场战斗! 为了能够参加这场比赛,您需要具备两个职能。第一个设置枪手的属性,第二个设置枪手的主要逻辑功能。 属性功能 function () { var bot = { name: "testBot", numbOfBullets: 7, reloadSpeed: 1, shotsPerTurn: 1, moveSpeed: 2 } return bot } 该属性函数包含5个变量,您需要根据一些规则进行设置(但该变量name可以是任何字符串)。您必须在枪手上总共花费15分,而没有全部花掉15分的枪手不符合资格。属性的工作方式如下: numbOfBullets -定义枪支可容纳多少发子弹。 的初始值和最小值numbOfBullets是1。每增加一个子弹将花费1点,最多花费16个子弹,花费15点。 reloadSpeed -定义您的枪手用完子弹后需要多少回弹才能重新装填枪支。 基本和最大值为4,最小值为1。将此属性减少1将花费2分。 shotsPerTurn -定义您的枪手在一回合内可以射击多少次。 基本值和最小值是1。每增加1,您将得到3分,因此您每轮最多可以有6张射击,花费15点。将这个属性提高到上面numbOfBullets会适得其反,因为您不能发射更多的子弹,而枪支则无法容纳。 moveSpeed -定义您的枪手可以在一转内跑多少个空间。 基本和最小值是1。每增加1,就会花费3点,最多花费6点速度,花费15点。枪手每转一圈可以向左或向右奔跑,以达到最大移动速度。他还可以保持静止不动,这会给他带来奖金(稍后会详细介绍)。 上面的示例函数在子弹上花费6点,在重装速度上花费6点,在移动上花费3点。 主功能 function main(bulletsLeft, yourShots, enemyShots, yourMovement, enemyMovement) { var shots = []; …

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.