#P2122. Japan Plotter Driver
Japan Plotter Driver
题目描述
你所在的一家日本公司生产能够绘制精美图片的绘图仪设备。为了支持那些没有这种特殊硬件的客户,你被要求编写一个模拟驱动程序,模拟绘图仪的工作并在计算机屏幕上打印图片。
绘图仪由几种简单的绘图命令驱动:
POINT x y
:在给定坐标处绘制一个小圆圈。TEXT x y txt
:在给定坐标处显示一行文本。LINE x1 y1 x2 y2
:在指定的两点之间绘制一条直线。CLEAR x1 y1 x2 y2
:清除给定的矩形区域。PRINT
:打印输出页面并终止当前任务。
模拟驱动程序使用ASCII字符来表示图片,每个字符代表坐标系中的一个基本单位。左上角字符的坐标为(1,1)。X轴向右延伸,Y轴向下延伸。
命令模拟方式
POINT
:在给定坐标处放置小写字母"o"。TEXT
:显示单行文本,第一个字符位于给定坐标,文本始终向右延伸。LINE
:模拟两点之间的直线,根据方向使用字符:横线("-")、竖线("|")、斜线("/")或反斜线("")。CLEAR
:用空格填充指定的矩形区域,包括边界行和列。PRINT
:打印图片,并用加号("+")、减号("-")和竖线("|")组成的边框包围。
重叠字符规则
- 如果同一字符被多次绘制,保持不变。
- 如果只有竖线和横线重叠,结果为加号("+")。
- 如果只有斜线和反斜线重叠,结果为小写字母"x"。
- 其他情况显示星号("*")。
输入说明
输入包含多个脚本。每个脚本以两个整数X和Y开始,表示页面的尺寸。接下来的每一行包含一个命令。命令总是大写,参数之间用一个空格分隔。PRINT
命令总是脚本的最后一条命令。输入以两个0结束。
输出说明
对于每个脚本,输出模拟的图片,按照上述规则生成。每个图片后输出一个空行。
示例输入 1
20 10
LINE 3 2 11 10
LINE 3 10 11 2
LINE 20 3 8 3
TEXT 6 8 TEST
LINE 19 1 19 10
LINE 17 10 17 1
LINE 16 1 16 10
LINE 13 6 20 6
CLEAR 20 5 15 7
LINE 18 1 18 10
TEXT 12 10 NICEPICTURE
POINT 1 1
POINT 3 2
PRINT
1 1
POINT 1 1
CLEAR 1 1 1 1
PRINT
3 3
LINE 2 1 2 3
LINE 1 2 3 2
LINE 2 3 2 1
LINE 3 2 1 2
LINE 2 1 2 3
LINE 1 2 3 2
PRINT
0 0
示例输出 1
+--------------------+
|o |||| |
| * / |||| |
| \ --*-----++++-|
| \ / |||| |
| \ / | |
| x -- | |
| / \ | |
| /TES* |||| |
| / \ |||| |
| / \NICE****U|
+--------------------+
+-+
| |
+-+
+---+
| | |
|-+-|
| | |
+---+