#P1815. 蠕虫游戏

蠕虫游戏

题目描述

蠕虫是一个古老的电脑游戏,它有许多版本。但所有版本都有一个共同的规则:操纵一条蠕虫在屏幕上转圈,并试着去避免撞到自己或障碍物。

这里我们将模拟一个简单的版本。游戏将在 50×5050 \times 50 的棋盘上进行,棋盘的左上角为 (1,1)(1,1),蠕虫在初始时是一串 2020 个相连的方格。所谓相连是指方格在水平或垂直方向上相接。蠕虫开始时是水平地伸展开的,从 (25,11)(25,11)(25,30)(25,30)。其中 (25,30)(25,30) 是它的头。蠕虫只能向东 E\verb!E!、西 W\verb!W!、南 S\verb!S!、北 N\verb!N! 四个方向移动,但不能向自己移动,因此在开始时向西 W\verb!W! 是不允许的。每次移动时,蠕虫向给定的方向移动,一次只移一格,并且保持它的长度不变。因此只有蠕虫的头和尾所占据的方格在移动一步后被改变。注意:蠕虫的头能移动到虫尾刚刚让出的空格。

你将被给定一系列移动指令并模拟虫的移动,直到蠕虫撞上了自己,或者蠕虫越出了棋盘,或者蠕虫成功地完成了这些指令。在前两种情况下你应当忽略剩下的指令。

输入格式

每个输入文件包含了多组数据,每个数据占两行。

第一行是一个整数 n (n<100)n\ (n<100),表示移动指令的指令数(以 n=0n=0 表示输入结束);

第二行包括了 nn 个字符,只有可能是 ESWN\verb!ESWN! 中的一种,字符之间没有空格,表示移动的指令。

输出格式

每个数据输出一行,格式为以下 33 种中的一种:

  • $\texttt{The worm ran into itself on move \textrm{\it m}.}$
  • $\texttt{The worm ran off the board on move \textrm{\it m}.}$
  • $\texttt{The worm successfully made all \textrm{\it m} moves.}$

其中,mm 是你要决定输出的步数。

18 
NWWWWWWWWWWSESSSWS 
20 
SSSWWNENNNNNWWWWSSSS 
30 
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 
13 
SWWWWWWWWWNEE 
0
The worm successfully made all 18 moves. 
The worm ran into itself on move 9. 
The worm ran off the board on move 21. 
The worm successfully made all 13 moves.