解决手风琴游戏
我最近碰到过手风琴纸牌游戏,几乎所有布局都可以解决,但是难以置信。你可以在这里玩。 规则 52张脸部卡以随机顺序正面朝上放置。 每回合,您用一张新卡替换一张卡,其中两张卡: 分享西服或号码,然后 的距离为1(相邻)或3(之间为两张卡)。 仅剩1张卡时赢得比赛。您可以假定每个输入都是可解的。更换的卡必须始终在更换的卡之前。 例 例如,请考虑以下布局: 2H,2S,1S,2D (H: Hearts, S: Spades, D: Diamonds) 这里有3种可能的动作: 将其替换为2H相邻的2S,这样我们最终得到2S,1S,2D 将其替换为2S相邻的1S,这样我们最终得到2H,1S,2D 更换2H用2D(以3的距离),所以我们结了2D,2S,1S 在这3个动作中,只有最后一个有获胜的可能(您先替换2D <- 2S,然后获胜2S <- 1S)。 输入输出 您的工作是编写手风琴求解器。您会收到一张纸牌列表,并且需要返回一个动作列表来解决游戏。 您以逗号分隔的字符串形式传递卡片列表,其中,每张卡片均以代表其数值的整数传递,然后以代表其西装的字符传递。 您必须以逗号分隔的字符串形式返回替换列表,其中每个替换均采用以下格式Card <- Card(遵循上述卡格式)。每对中的第一张卡是要更换的卡。 测试用例: 5H,1C,12S,9C,9H,2C,12C,11H,10C,13S,3D,8H,1H,12H,4S,1D,7H,1S,13D,13C,7D,12D,6H,10H,4H,8S,3H,5D,2D,11C,10S,7S,4C,2H,3C,11S,13H,3S,6C,6S,4D,11D,8D,8C,6D,5C,7C,5S,9D,10D,2S,9S 5H,9C,11H,7S,7D,12D,6H,10S,3H,4D,12C,2S,3C,5C,7H,6S,1H,8S,2H,11S,4C,10D,12H,9H,2D,4H,6C,13H,11C,2C,10H,8C,1S,11D,3S,12S,7C,5D,13S,8D,4S,6D,13C,3D,8H,13D,1D,9D,9S,1C,5S,10C 7H,11C,8C,7S,10D,13H,4S,10C,4D,2C,4H,13D,3C,2H,12C,6C,9H,4C,12H,11H,9S,5H,8S,13S,8H,6D,2S,5D,11D,10S,1H,2D,5C,1C,1S,5S,3H,6S,7C,11S,9C,6H,8D,12S,1D,13C,9D,12D,3D,7D,10H,3S 尽管这场比赛是一场代码竞赛,但我对省时的解决方案特别感兴趣,并有可能通过赏金来奖励巧妙的解决方案。即便如此,花费天文数字的解决方案仍然可以接受(我建议您在较小的纸牌上进行测试,例如16张卡,4套西装的纸牌)。