#P2556. Edge
Edge
题目描述
对于包装在小包装中的产品,需要将包含使用说明的纸张折叠,直到其尺寸足够小。我们假设纸张是矩形的,并且只能沿着初始较短边的平行线进行折叠。然而,沿这样的线折叠可以通过两种方向进行:要么将纸张的顶部表面叠在一起,要么将底部表面叠在一起。在这两种情况下,被折叠线分隔的矩形两部分会整齐地叠在一起,我们忽略折叠后纸张厚度的差异。
经过多次这样的折叠步骤后,我们可以再次展开纸张,观察其较长边,将其视为一维曲线(实际上是多个线段的连接)。如果我们沿着这个曲线以固定方向移动,可以将每个折叠处分类为类型 (表示顺时针转向)或类型 (表示逆时针转向)。给定这样的分类序列,绘制纸张较长边的示意图,假设在等距位置以 度转向。
输入格式
输入包含多个测试用例,每个测试用例占一行。每行包含一个由字符 和 组成的非空字符串,描述纸张较长边的折叠类型。可以假设字符串的长度小于 。输入文件在最后一个测试用例后立即结束。
输出格式
对于每个测试用例,生成一个 PostScript 绘制的边线图,每条命令占一行。每个绘图从坐标 开始,使用命令 300 420 moveto
。第一次转向发生在 ,使用命令 310 420 lineto
。然后根据输入字符串进行顺时针或逆时针转向,使用一系列 x y lineto
命令,转向点之间的距离为 单位。不要忘记边的终点,并在每个测试用例结束时添加命令 stroke
和 showpage
。
可以使用 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
来源
乌尔姆年本地赛(题目来源)