#P2556. Edge

Edge

题目描述

对于包装在小包装中的产品,需要将包含使用说明的纸张折叠,直到其尺寸足够小。我们假设纸张是矩形的,并且只能沿着初始较短边的平行线进行折叠。然而,沿这样的线折叠可以通过两种方向进行:要么将纸张的顶部表面叠在一起,要么将底部表面叠在一起。在这两种情况下,被折叠线分隔的矩形两部分会整齐地叠在一起,我们忽略折叠后纸张厚度的差异。

经过多次这样的折叠步骤后,我们可以再次展开纸张,观察其较长边,将其视为一维曲线(实际上是多个线段的连接)。如果我们沿着这个曲线以固定方向移动,可以将每个折叠处分类为类型 AA(表示顺时针转向)或类型 VV(表示逆时针转向)。给定这样的分类序列,绘制纸张较长边的示意图,假设在等距位置以 9090 度转向。

输入格式

输入包含多个测试用例,每个测试用例占一行。每行包含一个由字符 AAVV 组成的非空字符串,描述纸张较长边的折叠类型。可以假设字符串的长度小于 200200。输入文件在最后一个测试用例后立即结束。

输出格式

对于每个测试用例,生成一个 PostScript 绘制的边线图,每条命令占一行。每个绘图从坐标 (300,420)(300,420) 开始,使用命令 300 420 moveto。第一次转向发生在 (310,420)(310,420),使用命令 310 420 lineto。然后根据输入字符串进行顺时针或逆时针转向,使用一系列 x y lineto 命令,转向点之间的距离为 1010 单位。不要忘记边的终点,并在每个测试用例结束时添加命令 strokeshowpage

可以使用 gv PostScript 解释器查看这些绘图,也可以先使用 ps2ps 工具进行转换。

输入样例 1

V
AVV

输出样例 1

300 420 moveto
310 420 lineto
310 430 lineto
stroke
showpage
300 420 moveto
310 420 lineto
310 410 lineto
320 410 lineto
320 420 lineto
stroke
showpage

来源

乌尔姆20032003年本地赛(题目来源)