#icpc2014autumnh. [icpc2014autumn_h]Points and Lines
[icpc2014autumn_h]Points and Lines
翻译:有一天,你发现了一个古老的卷轴,上面写着奇怪的文字。 你揭示了文字实际上是一种表示宝藏位置的表达。该表达式由以下三个操作组成: 从两点出发,得出这两点所在的一条直线。 从一点到直线,得到一个点,这个点相对于直线上的给定点对称。 两条直线相交于一个点。 表达式的语法用下面的BNF表示:
<expression> ::= <point>
<point> ::= <point-factor> | <line> "@" <line-factor> | <line> "@" <point-factor> | <point> "@" <line-factor>
<point-factor> ::= "(" <number> "," <number> ")" | "(" <point> ")"
<line> ::= <line-factor> | <point> "@" <point-factor>
<line-factor> ::= "(" <line> ")"
<number> ::= <zero-digit> | <positive-number> | <negative-number>
<positive-number> ::= <nonzero-digit> | <positive-number> <digit>
<negative-number> ::= "-" <positive-number>
<digit> ::= <zero-digit> | <nonzero-digit>
<zero-digit> ::= "0"
<nonzero-digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
每个或表示一个点,而每个或表示一个线。前一个<点因子> (X,Y)(X,Y)的概念表示在22维平面上,XX坐标为XX, YY坐标为YY的点。“@”表示对两个操作数的操作。由于每个操作通过其操作数的类型(即一个点或一条线)来区别于其他操作,所有这些操作都用相同的字符“@”表示。注意,“@”是左结合的,可以从BNF中看到。 你的任务是确定宝藏放在哪里。