解谜游戏

阅读: 评论:0

解谜游戏

解谜游戏

哈哈哈,看起来很难其实很简单啦

题目描述

小明正在玩一款解谜游戏。谜题由 24 根塑料棒组成,其中黄色塑料棒 4 根,红色 8 根,绿色 12 根 (后面用 Y 表示黄色、R 表示红色、G 表示绿色)。初始时这些塑料棒排成三圈,如上图所示,外圈 12 根,中圈 8 根,内圈 4 根。

小明可以进行三种操作:

1、将三圈塑料棒都顺时针旋转一个单位。例如当前外圈从 0 点位置开始顺时针依次是 YRYGRYGRGGGG,中圈是 RGRGGRRY,内圈是 GGGR。那么顺时针旋转一次之后,外圈、中圈、内圈依次变为:GYRYGRYGRGGG、 YRGRGGRR 和 RGGG。

2、将三圈塑料棒都逆时针旋转一个单位。例如当前外圈从 0 点位置开始顺时针依次是 YRYGRYGRGGGG,中圈是 RGRGGRRY,内圈是 GGGR。那么逆时针旋转一次之后,外圈、中圈、内圈依次变为:RYGRYGRGGGGY、 GRGGRRYR 和 GGRG。

3、将三圈 0 点位置的塑料棒做一个轮换。具体来说:外圈 0 点塑料棒移动到内圈 0 点,内圈 0 点移动到中圈 0 点,中圈 0 点移动到外圈 0 点。例如当前外圈从 0 点位置开始顺时针依次是 YRYGRYGRGGGG,中圈是 RGRGGRRY,内圈是 GGGR。那么轮换一次之后,外圈、中圈、内圈依次变为:RRYGRYGRGGGG、GGRGGRRY 和 YGGR。

小明的目标是把所有绿色移动到外圈、所有红色移动中圈、所有黄色移动到内圈。给定初始状态,请你判断小明是否可以达成目标?

输入描述

第一行包含一个整数 T (1≤T≤100),代表询问的组数。

每组询问包含 3 行:

第一行包含 12 个大写字母,代表外圈从 0 点位置开始顺时针每个塑料棒的颜色。

第二行包含 8 个大写字母,代表中圈从 0 点位置开始顺时针每个塑料棒的颜色。

第三行包含 4 个大写字母,代表内圈从 0 点位置开始顺时针每个塑料棒的颜色。

输出描述
对于每组询问,输出一行 YES 或者 NO,代表小明是否可以达成目标。

输入输出样例

输入

	2GYGGGGGGGGGGRGRRRRRRYRYYYGGGRRRRGGGYYGGGRRRRYGGG

输出

	YESNO

思路

刚看到图脑子就很懵,这是个啥???

要把所有黄色换到内层,红色换到中层,绿色换到外层。

那行吧,怎么换呢?

外圈 0 点塑料棒移动到内圈 0 点,内圈 0 点移动到中圈 0 点,中圈 0 点移动到外圈 0 点。

那我想是什么顺序能进行一次操作就形成,G,R,Y的顺序呢?


Y G R —> G R Y

那什么顺序进行一次操作能形成Y G R呢?

R Y G—>Y G R

那什么顺序进行一次操作能形成 R Y G呢?

G R Y—>R Y G

这形成了一个循环

那么只要外层的0点、中层的0点、内层的0点形成R Y G 或者Y G R我们就能使他们变换成G R Y的顺序

所以我们要不断的转直到出现那两种顺序中的一种

跳出循环的两种方式

1、所有的绿色都在外层,所有的红色都在中层,所有的黄色都在内层。

2、外层有12个,中层有8个,内层有4个,所以取他们的最小公倍数24,也就是说如果转了24次还没成功那么就不可能成功了。

代码

import os
import sys# 请在此输入您的代码n=int(input())
games=[]
for i in range(n):games.append([])for j in range(3):games[-1].append(input())def con(num):global gamescolor_1=list(games[num][0])color_2=list(games[num][1])color_3=list(games[num][2])for i in range(24):if (color_1[0]=='R' and color_2[0]=='Y' and color_3[0]=='G') or (color_1[0]=='Y' and color_2[0]=='G' and color_3[0]=='R') or (color_1[0]=='G' and color_2[0]=='R' and color_3[0]=='Y'):color_1[0]='G'color_2[0]='R'color_3[0]='Y' temp_1=color_1[0]del color_1[0]color_1.append(temp_1)temp_2=color_2[0]del color_2[0]color_2.append(temp_2)temp_3=color_3[0]del color_3[0]color_3.append(temp_3)if 'Y' not in color_1 and 'R' not in color_1:if 'G' not in color_2 and 'Y' not in color_2:if 'G' not in color_3 and 'R' not in color_3:print("YES")returnprint("NO")return
for i in range(n):con(i)

编码不易,有帮助的话点个赞支持一下吧

本文发布于:2024-02-01 12:42:25,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676254536672.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:游戏
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23