Questions tagged «board-game»

应对涉及棋盘游戏的挑战。

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

3
确切的封面难题
挑战 给定一组分组的字母,将它们排列在板上,以便它们完全覆盖该区域。 董事会代表(又名船舶甲板) 该板是一个6x6的网格。 总会有36个正方形。 列标记为AF。 行标记为1-6。 例: A B C D E F +---+---+---+---+---+---+ 1 : : : : : : : +---+---+---+---+---+---+ 2 : : : : : : : +---+---+---+---+---+---+ 3 : : : : : : : +---+---+---+---+---+---+ 4 : : : : : : : …

4
Winnable纸牌Mancala板
曼卡拉(Mancala)是一系列棋盘游戏的名称,通常涉及一系列杯子,杯子中装有玩家操纵的珠子。该挑战将为游戏的单人纸牌变体使用特定的规则集。 该板的一端是一个“篮子”,然后是无数个杯子(从1开始编号)。某些杯子中会有一些珠子。如果n杯子中恰好有n珠子,则可以从中“撒出”珠子。播种是指将所有n珠子从杯子中取出,然后一次将它们在每个杯子中​​朝篮子放置。最后的珠子将进入篮子。当棋盘上的所有珠子都在篮子中时,玩家获胜。 显然,有许多棋盘无法胜出,例如,第二个杯子中恰好有一个珠子。没有合法玩法,因为不能播种所有带有0个珠子的杯子,并且第二个杯子没有要播种的珠子。显然这没什么好玩的,所以您的任务是创建可赢得的棋盘。 任务 给定表示多个珠子的正整数,将输出一个非负整数的列表,该非负整数表示应放入每个杯子中​​以制成如上所述的可取下的棋子的珠子的数量。此列表不应包含任何尾随零。 对于任何给定数量的珠子,始终只有一种可胜任的棋盘配置。 示范 这是演示如何玩可赢局并输入4的示例[0, 1, 3]。可赢局是。我们从唯一可用的举动开始,从第三个杯子中播出珠子,得到[1, 2, 0]。现在我们实际上有一个选择,但是唯一正确的选择是播下第一个杯子,得到:[0, 2, 0]。然后,我们播种第二个杯子[1, 0, 0],最后我们再次播种第一个杯子,以得到所有空杯子。 测试用例: 1 => [1] 2 => [0, 2] 3 => [1, 2] 4 => [0, 1, 3] 5 => [1, 1, 3] 6 => [0, 0, 2, 4] 7 => [1, 0, 2, 4] …

2
玩完美的4x4十六进制游戏
背景 Hex是在K×K六角形菱形菱形上玩的两人抽象策略游戏。菱形的两个相对的边都被涂成白色,另外两个被涂成黑色,两个玩家(黑与白)轮流将其颜色的标记放置在一个空置的瓷砖上。首先设法在其颜色的相对两侧之间建立路径的玩家是获胜者。众所周知,游戏无法以平局告终,并且不管棋盘大小如何,第一位玩家都有获胜的策略(有关详细信息,请参阅Wikipedia页面)。 任务 在此挑战中,我们将板子尺寸固定为K = 4,并将板子表示为以下网格。粗线表示相邻的图块。 您的任务是为第一个玩家制定一个获胜策略,您可以选择是黑人还是白人。这意味着无论对方球员采取何种合法行动,您的比赛都必须取得胜利。您的输入是一个游戏位置(板上的代币排列),而您的输出是合法移动,采用以下指定的格式。如果您想自己找到一个成功的策略,请不要阅读以下内容: 假设白人先行,则可能的制胜策略概述。 首先选择5。之后,如果您有从5到最底行的路径,或者黑色在任何时候都选择0或1,请选择0或1中的任何一个作为响应。如果黑色选择9或13,则选择10,然后选择14或15中的任何一个。如果黑色未选择9、13或14,则选择9,然后选择13或14中的任一个。如果黑色选择14,则通过选择15进行响应。接下来,如果空白则选择10;否则,选择10。如果黑色选择10,则响应为11。如果黑色选择6,则响应7,然后选择2或3中的任一个。如果黑色未选择6,请选择它,因此您具有从5到最底行的路径。 输入输出 您输入的字符串是16个字符WBE,代表白色,黑色和空白。它们代表了上面所列举的板块。您可以从以下选项中选择输入法(这也决定了您的输出法): 从STDIN输入,输出到STDOUT。 输入作为一个命令行参数,输出到STDOUT。 输入为16个单字符命令行参数,输出到STDOUT。 输入作为命名函数的参数,输出作为返回值。 您的输出代表您放置下一个标记的磁贴,因为该旋转了。您可以从以下输出格式中选择: 从零开始的索引(如上图所示)。 一个基于索引的索引。 输入字符串与一个E由两者的替代W或B您选择您的播放器。 规则 您的策略必须是确定性的。您不需要使用您的策略来正确处理空局无法到达的游戏位置,或已经为任一位玩家赢得的位置,您可能会因此而崩溃。相反,在使用您的策略可以到达的板上,您必须返回合法举动。 这是代码高尔夫球,因此最低的字节数为准。不允许出现标准漏洞。 测试中 我已经编写了一个Python 3控制器来验证条目,因为手工操作非常繁琐。你可以在这里找到它。它支持前三种输入格式和Python 3函数(必须将其他语言的函数包装到程序中),所有三种输出格式以及这两种播放器。如果某策略没有获胜,它将输出发现的失败游戏,因此您可以调整程序。

4
秩序与混沌与密码高尔夫
Order and Chaos是在6x6板上播放的Tic-Tac-Toe的变体。然而,使游戏与众不同的是,两个玩家都可以放置X或O!每回合(从订购开始),玩家将在任何未占用的方块中放置X或O。 获胜很简单。如果板上连续有5个X或O(垂直,水平或对角线),则订单获胜。如果棋盘已满,并且棋盘上没有5个X或O的字符串,则混沌获胜。你的工作?好吧,由于这是《Programming Puzzles》和《 Code Golf》,因此您将对游戏进行编程,然后进行高尔夫。 规则 您必须接受输入为x y t,其中x和y是坐标,并且t是图块类型(X或O)。坐标从0 0左上角开始,一直增加到5 5(右下角)。 您必须接受q退出,并INVALID在用户输入无效的坐标,磁贴,任何非形式的输入时进行打印x y t,或尝试将磁贴放置在已经存在的位置。(唯一的例外是q,因为这会退出程序。) 如果Order获胜,您将输出P1 WINS。如果混沌获胜,您将输出P2 WINS。 必须先下订单。 空格由表示.。 磁贴为X和O(大写)。您不必接受小写字母,但必须使用大写字母。 您的董事会只能由组成.XO。 您实际上是在模拟两个玩家在玩游戏,而不是获得董事会和检查谁获胜。它接受一个动作作为输入,然后打印棋盘,接受另一个动作,依此类推,直到一个玩家获胜。 起始板如下所示: ...... ...... ...... ...... ...... ...... 在第一个玩家(订购)输入之后1 2 X,它应该如下所示: ...... ...... .X.... ...... ...... ...... 同样,当下一个玩家(混沌)输入时3 3 O,它将如下所示: ...... ...... .X.... ...O.. ...... ...... 直到一位玩家获胜为止。 …

5
编写最短的alak游戏
Alak由数学家AK Dewdney发明,并在1984年的著作Planiverse中进行了描述。Alak的规则很简单: Alak是在具有11个插槽的一维板上玩的两人游戏。每个插槽一次最多只能容纳一个。有两种,“ x”和“ o”。x属于一个玩家,o属于另一玩家。该单板的初始配置为: xxxx___oooo 玩家轮流移动。在每个回合中,每个玩家只能移动一次。玩家在转牌时无法通过。玩家可以将自己的任何一块游戏移至其右侧或左侧的下一个未占用的插槽,这可能涉及跳过占用的插槽。玩家不能将棋子从棋盘的一侧移开。 如果移动产生了一种模式,对手的棋子在两侧被动子的两个棋子颜色包围(中间没有闲置的空白插槽),则这些棋子被从棋盘上移开。 游戏的目标是删除对手的所有棋子,然后游戏结束。删除所有的一个也将结束游戏,因为对手无法用一个包围你,因此无论如何都会输掉几步。 我在网上找到了这个游戏,想知道:可以打高尔夫球吗? 高尔夫规则 您的代码必须遵循游戏中的所有规则,处理捕获,正确移动等(唯一的例外是您不必添加机器人,但必须以某种方式控制两个玩家,并且一个玩家必须是人类。) 输入必须在图块X到图块Y处移动,或者退出。例如,您可以1 4说“将此块从图块1移动到图块4”。quit将结束该程序,尽管使用Control- C是可以接受的。您还必须检查移动是否无效(通过走出木板或移动到您不得不越过空闲的空间才能到达或发送不是一对磁贴或的消息quit)。 玩家赢得的和无效的输出必须是P1 WINS,P2 WINS和INVALID分别。(所有这些都是7个字符。) 输出必须显示板。这就是全部。 是否使用任何辅助工具(如编号的瓷砖或其他物件)都没关系。 该挑战在以下情况下结束: 一个答案可获得50票 3个星期内,一个答案仍然是票数最高的答案,并且在那时没有其他答案发布 并且挑战至少有3个答案(所以有一些真正的竞争)。 游戏规则 左边的玩家必须先开始。 一次只有一块占据一个正方形。您可以向左或向右移动片段,直到碰到一个空位。木板不包裹,您不能在未占用的区域中移动。例如: xoo__o。在这里,x向右移动会将板更改为_oox_o。 xxooo_。在这里,最左边的x可以移动到yield _xooox,它捕获os,离开_x___x。 x__oox。在此,o不捕获s(仍然存在间隙)。无法捕获,因为您无法在闲置空间中移动。在x左侧只能移动一分格,因为没有其他部分之间(离开_x_oox)。 如果组被对手的棋子包围,则可以一次捕获多个相邻棋子。例如,从x_oox至_xoox将同时捕获os和_x__x。 如果在移动之后,首先要捕获对手的棋子,然后再检查是否应删除自己的棋子。举两个例子: o_oxx到oxox_。首先,o捕获第二个ox_x_,因此第一个x保留在板上。 o_oox到oxoo_。这次,没有o捕获到,因此x捕获了。 如果只有一件,则游戏结束,因为您不能仅凭一件就捕捉到。 让游戏开始!我期待看到您的想法。

2
Quarto中有多少次平局?
介绍 此挑战类似于欧拉计划问题。我之所以提出这个建议,是因为我在玩一个看似简单的棋盘游戏,却无法提出一个有效的解决方案来回答有关其机制的简单问题。 Quarto是连续4个有趣的变体。它在4 x 4板上演奏,有16个独特的乐段(没有乐段重复)。每位玩家每回合将1个棋子放在棋盘上。每块都有4个二进制特征(短/高,黑/白,正方形/圆形,空心/实心)。目标是针对四个特征中的任何一个,水平,垂直或沿2个对角线连续制作四个!因此有4个黑​​色块,4个白色块,4个高块,4个短块,4个正方形块,4个圆形块,4个空心块或4个实心块。 上图显示了完成的游戏,由于有4个正方形棋子,所以连续有四个。 挑战 在Quarto中,某些游戏可能以平局结束。 可能的最终头寸总数16!约为20万亿。 这些平局中有多少是平局? 规则 解决方案必须是一个程序,该程序计算并输出绘制的最终位置总数。正确答案是414298141056 您只能使用人工推导的游戏规则信息(无计算机辅助证明)。 可以对问题进行数学简化,但是必须在解决方案中(手动)进行说明和证明。 赢家是在CPU运行时间方面最优化的解决方案。 为了确定获胜者,我将在MacBook Pro 2.5 GHz Intel Core i7和16 GB RAM上运行每个报告的运行时间少于30m的解决方案。 提出与其他尺寸的电路板都兼容的解决方案没有任何加分。即使那会很好。 如果适用,您的程序必须在1分钟内在上述硬件上编译(以避免滥用编译器优化) 不允许默认漏洞 意见书 请发表: 该代码或指向该代码的github / bitbucket链接。 代码的输出。 您本地测量的运行时间 您的方法的说明。 最后期限 提交截止日期为3月1日,因此还有很多时间。

7
打假素!
简介/背景 在最近一次关于加密聊天的讨论中,我被挑战去讨论/帮助Fermat素数测试和Carmichael数字。该测试基于a^(p-1) mod p==1始终适用于素数p而不适用于复合材料的前提。现在,carmichael号码本质上是Fermat考验的最大敌人:您必须选择一个号码,a以使其不与素数p相抵a^(p-1) mod p!=1。现在,如果a不是互质,则基本上可以发现一个非平凡的因子p众所周知,保理可能相当困难。特别是在所有因素都足够大的情况下。您现在可能已经意识到,为什么在实践中不经常使用Fermat测试(还有更好的算法),这是因为作为防御者(在安全性方面)您需要为某些数字做与攻击者(即数量)。 因此,既然我们知道为什么这些数字有些引人入胜,我们将以最短的方式生成它们,因此只要需要,我们就可以记住生成的代码! Carmichael编号在OEIS上也称为A002997。已经 存在一个相关的挑战,但是这里的条目没有竞争力,因为它们是针对速度而非大小进行了优化的。同样的论点也适用于反方向,此处的输入可能会在速度上做出取舍,而有利于大小。 规格 输入项 这是一个标准 序列挑战,因此您将正整数或非负整数n作为输入。n可以根据需要选择0或1的索引(请指出)。 输出量 根据需要,您的输出将是n-th carmichael数或第一个ncarmichael数(请指出)。 规格 一个整数x是卡迈克尔数当且仅当x是复合材料和所有的整数y与gcd(x,y)=1,它认为y^(x-1) mod x==1。 谁赢? 这是 代码高尔夫球,因此以字节为单位的最短代码获胜!适用标准IO和漏洞规则。 测试用例 前几个carmichael号码是: 561,1105,1729,2465,2821,6601,8911,10585,15841, 29341,41041,46657,52633,62745,63973,75361,101101, 115921,126217,162401,172081,188461,252601,278545, 294409,314821,334153,340561,399001,410041,449065, 488881,512461
9 code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

13
扩大比较链
与大多数语言不同,Python a<b<c会像在数学中一样进行评估,实际上是比较三个数字,而不是将布尔值a<b与进行比较c。用C(以及许多其他语言)编写此代码的正确方法是a<b && b<c。 在这个挑战中,您的任务是将这样任意长度的比较链从Python /直观表示扩展到如何用其他语言编写。 技术指标 您的程序必须要处理运算符:==, !=, <, >, <=, >=。 输入将具有仅使用整数的比较链。 不用担心一路比较的真实性,这纯粹是语法/语法上的挑战。 输入将没有任何空格,以防止答案因分割空格而使解析变得琐碎。 但是,您的输出可能只有一个空格,要么仅包含&&,要么包含比较运算符和&&,或者两者都不包含,但是要保持一致。 测试用例 Input Output --------------------------------------------------------------- 3<4<5 3<4 && 4<5 3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9 3<5==6<19 3<5 && 5==6 && 6<19 10>=5<7!=20 10>=5 && 5<7 && 7!=20 15==15==15==15==15 …
9 code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

30
给定int输入n,输出n * reversed(n)
给定一个整数n,打印输出n * reversed(n) reversed(n)是当您reverse的数字为时得到的数字n。 reverse(512) = 215 reverse(1) = 1 reverse(101) = 101 >>>>>>>> func(5) = 5*5 = 25 func(12) = 12*21 = 252 func(11) = 11*11 = 121 func(659) = 659*956 = 630004 最短的代码胜出! 排行榜 显示代码段 var QUESTION_ID=144816,OVERRIDE_USER=71625;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var …
9 code-golf  math  arithmetic  code-golf  math  integer  code-golf  arithmetic  integer  code-golf  sequence  base-conversion  palindrome  code-golf  math  primes  integer  code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

2
一百个最常用的单词
之所以写这个问题,是因为“ Thing Explainer”很有趣,并且给了我一个主意。 编写“使计算机做事的东西”,以读取/获取一组字母,数字和类似的东西"#%|?,True / 1如果所有单词都属于该集合,则返回。 如果所有单词都不属于该集合,请返回不属于该集合的单词。 在任何情况下都可以认为本网站是正确的。编写规则是为了遵守该站点上的规范。 例子: Truthy: 如果将第一条水平线上方的整个文本粘贴为输入,则代码应返回真实值。 以下几行应返回真实值(输入之间用分隔###) This returns "Hello, World!" ### tHiS rEtUrNs TrUe... ### Thing Explainer is a book written by a man. The man writes books with simple words. ### This set of stuff "#!^{>7( must return true 虚假的: 在以下示例中,输入和输出用分隔***。不同的测试用例用分隔###。 This code …
9 code-golf  string  parsing  code-golf  array-manipulation  random  permutations  code-golf  string  code-golf  parsing  code-golf  string  quine  code-golf  string  parsing  comment  code-golf  string  counting  natural-language  code-golf  string  decision-problem  code-golf  math  code-challenge  metagolf  test-battery  code-golf  string  code-golf  math  number  arithmetic  source-layout  code-golf  number  primes  decision-problem  code-golf  math  arithmetic  code-golf  date  code-golf  string  cryptography  code-golf  code-golf  chess  board-game  code-golf  geometry  grid  puzzle-solver  set-partitions  code-golf  number  natural-language  code-golf  ascii-art  code-golf  math  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  string  natural-language  code-golf  game  board-game  tic-tac-toe  code-golf  ascii-art  hexagonal-grid  code-golf  string  comment  code-golf  internet  code-golf  sorting  code-golf  kolmogorov-complexity  unicode  code-golf  tips  code-golf  string  natural-language  code-golf  string  kolmogorov-complexity  source-layout  hello-world  code-golf  string  kolmogorov-complexity  counting  natural-language  code-golf  random  quine  code-golf  string  math  bitwise  code-golf  permutations  code-golf  string  code-golf  arithmetic 

1
大炮可以去哪里?
介绍 象棋游戏,又称为中国象棋,是一种在中国,越南,台湾和其他东亚国家流行的象棋游戏。象棋两侧的颜色是红色和黑色。象棋有七个部分:将军(G),顾问(A),大象(E),马(H),战车(R),大炮(C)和士兵(S)。出于此挑战的目的,大写字母被认为是红色,小写字母被认为是黑色。这些棋子中的大多数与西方国际象棋的棋子大致相当,但是有一个完全独特的棋子:大炮。 该炮移动像在国际象棋一个车或在象棋战车(移动的任何数量的在任一X或Y轴的空间),但不能攻击这种方式。相反,它沿着X或Y轴(它移动以同样的方式)在攻击由跳跃一个片的任何颜色(朋友或敌人)和着陆的相反色片,它然后捕获的。请注意,像所有国际象棋和象棋棋子一样,大炮无法捕捉到自己颜色的棋子。 例如,在下图中,假定大炮(C)可以移动到的空间标记为*,而大炮()可以跳转和捕获的空间标记为X,假设其中存在黑色/小写字母。 ....X.... ......... ......... ....h.... ....*.... ****C**aX ....E.... ....X.... ....g.... ....R.... 挑战 编写一个程序或函数,以象棋板和该板上的一门大炮的坐标为输入,输出一个大炮可以移动或跳转到的坐标列表。 所有I / O的格式都很灵活。 xiangqi板可接受的格式包括用换行符分隔的字符串,字符串列表或带有不在其中的任何其他分隔符的字符串aceghrsACEGHRS.。您可能会假设该板将始终为9x10,即祥起板的大小。 电路板本身的内容将由多个句点(.)组成,它们表示电路板上的空白点,而字符则表示块。字符到字符的映射如下: A -> advisor C -> cannon E -> elephant G -> general H -> horse R -> chariot S -> soldier 大写字母代表红色,小写字母代表黑色。此处未列出的字符(即不在中aceghrsACEGHRS.)将不会出现在面板中。 输入坐标的格式是灵活的,不需要与输出坐标的格式匹配。例如,它可以是两个整数元素,两个元组,两个带分隔符的数字或两个字符的列表。它也可以是0索引或1索引。您可以假设板上的坐标将始终解析为大炮(C或c)。 加农炮可以跳转和移动到的坐标必须出现在输出的同一列表中。两者之间没有区别。任何单个输出坐标的可接受格式与输入坐标的格式相同。坐标可以用换行符分隔,作为列表输出或任何其他表示形式。不需要特定的命令;顺序甚至不必是确定性的。 请注意,跳到大炮相同颜色(大小写)的片段上是不合法的,因此不能出现在输出中。 测试用例 请注意,并非所有的测试用例都可以使用。 Input board …

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.