题目描述
让我们一起来看下,一个放在桌面上的骰子,如图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)。
输入
第一行输入一个整数n(n<=1000),表示执行旋转的总步数。
第2——n+1行分别输入6条旋转规则中6个方位中的一个
输出
最后一行输出旋转过程中位于骰子上方的数字之和。
异常暴力的模拟,判断输入的每一个数,然后强行按题目的做就可以了
const f:array[1..6] of integer=(1,6,3,2,4,5); var a:array[1..6] of integer; i,j,k,n,m,s:longint; ch:string; begin readln(n); s:=1; for i:=1 to n do begin readln(ch); if ch='North' then begin a:=f; f[1]:=a[4]; f[2]:=a[6]; f[4]:=a[2]; f[6]:=a[1]; s:=s+f[1]; end else if ch='East' then begin a:=f; f[1]:=a[5]; f[3]:=a[1]; f[2]:=a[3]; f[5]:=a[2]; s:=s+f[1]; end else if ch='West' then begin a:=f; f[1]:=a[3]; f[3]:=a[2]; f[2]:=a[5]; f[5]:=a[1]; s:=s+f[1]; end else if ch='South' then begin a:=f; f[1]:=a[6]; f[2]:=a[4]; f[4]:=a[1]; f[6]:=a[2]; s:=s+f[1]; end else if ch='Right' then begin a:=f; f[3]:=a[6]; f[4]:=a[3]; f[5]:=a[4]; f[6]:=a[5]; s:=s+f[1]; end else if ch='Left' then begin a:=f; f[3]:=a[4]; f[4]:=a[5]; f[5]:=a[6]; f[6]:=a[3]; s:=s+f[1]; end; end; writeln(s); end.
]]>
Comments NOTHING