石头剪子布
时间限制: 1 Sec 内存限制: 128 MB
提交: 9 解决: 8
[提交][状态][讨论版]
题目描述
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入
输入包括N+1行:
第一行是一个整数N,表示一共进行了N次游戏。1 <= N <= 100。
接下来N行的每一行包括两个字符串,表示游戏参与者P1,P2的选择(石头、剪子或者是布):
S1 S2
字符串之间以空格隔开S1,S2只可能取值在{"R", "S", "P"}(大小写敏感)中。
输出
输出包括N行,每一行对应一个胜利者(P1或者P2),或者游戏出现平局,则输出T。
样例输入
3 R S P P R P
样例输出
P1 T P2
分析
此题其实是考验Pascal字符读入的能力。
以下是读入方法
procedure inp;
begin
readln(s);
for i:=1 to length(s) do
if s[i]=' ' then break; //break是直接跳出循环
s1:=copy(s,1,i-1);
s2:=copy(s,i+1,length(s);
end;
完整题解
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
const
ma:
array
[
1..3
]
of
string
=(
'R'
,
'S'
,
'P'
);//分别是石头剪子布
var
s1,s2,s:
string
;
ch:
char
;
n,i,k,m:
longint
;
Function
main(a1,a2:
string
):
string
;
var
i,j:
longint
;
begin
if
a1=a2
then
exit(
'T'
);
for
i:=
1
to
3
do
if
a1=ma[i]
then
break;
for
j:=
1
to
3
do
if
a2=ma[j]
then
break;
if
i+j=
4
then //这种情况只能是一个石头一个布(i=3,j=1或i=1,j=3)
begin
if
i
then //序号小的是石头
exit(
'P2'
);
if
j
then
exit(
'P1'
);
end
;
if
i>j
then
exit(
'P2'
);
if
j>i
then
exit(
'P1'
);
end
;
begin
readln(n);
for
k:=
1
to
n
do
begin
s1:=
''
;
s2:=
''
;
readln(s);
m:=length(s);
for
i:=
1
to
m
do
if
s[i]=
' '
then
break;
s1:=copy(s,
1
,i-
1
);
s2:=copy(s,i+
1
,m);
writeln
(main(s1,s2));
end
;
end
.