【2012.03.09普及组】骰子 (Standard IO)

让我们一起来看下,一个放在桌面上的骰子,如图1 所示:

   图1 初始方位

数字1在上方,数字2在South(南)方位,数字3在East(东)方位。每一对相反方位的数字之和是7,按照上述规则,数字5在North(北)方位,数字4在West(西)方位, 数字6在下方,如图1 所示,数字4,5,6在图1中是看不到的。

骰子的初始位置如图1所示,按照下列6条规则旋转骰子,规则如图2和图3所示:



图2:旋转规则North(北)、 East(东) 、West(西)、 South(南)

 

图2中所示的4条旋转规则是将骰子按照规则指定的方位旋转90度。

图3中所示的2条旋转规则是将骰子沿水平方向分别向Left(左)或Right(右)方位旋转90度。



图3:旋转规则Left(左)、Right(右)

你的任务是编写一个程序,从图1所示的方位开始,根据给定的一系列规则连续的旋转骰子,程序要求输出旋转骰子过程中位于上方的数字之和(其中包括图1所示的初始方位上方的数字1)。

题解:

模拟。

代码:
var
  a:array[1..6]of longint=(1,6,2,3,5,4);
  n:longint;
procedure jh(x,y:longint);
var
  z:longint;
begin
  z:=a[x];a[x]:=a[y];a[y]:=z;
end;
procedure init;
var
  i,ans:longint;
  s:string;
begin
  readln(n);ans:=a[1];
  for i:=1 to n do
    begin
      readln(s);
      if s='North' then
        begin
          jh(1,3);
          jh(2,5);
          jh(3,5);
        end;
      if s='East' then
        begin
          jh(1,6);
          jh(2,4);
          jh(4,6);
        end;
      if s='West' then
        begin
          jh(1,4);
          jh(2,6);
          jh(4,6);
        end;
      if s='South' then
        begin
          jh(1,5);
          jh(2,3);
          jh(3,5);
        end;
      if s='Right' then
        begin
          jh(5,6);
          jh(4,6);
          jh(3,6);
        end;
      if s='Left' then
        begin
          jh(3,6);
          jh(4,6);
          jh(5,6);
        end;
      ans:=ans+a[1];
    end;
  writeln(ans);
end;
begin
  init;
end.
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值