UVA1596 找bug Bug Hunt
题目描述
输入并模拟执行一段程序,输出第一个 bug 所在行。每行程序有两种可能:
- 数组定义,格式为 `arr[size]`。例如 `a[10]` 或者 `b[5]`,可用下标分别是 $0\sim9$ 和 $0\sim4$。定义之后所有元素均为未初始化状态。
- 赋值语句,格式为 `arr[index]=value`。例如 `a[0]=3` 或者 `a[a[0]]=a[1]`。
赋值语句可能会出现两种 bug:下标 $index$ 越界;使用未初始化的变量($index$ 和 $value$ 都可能出现这种情况)。
输入不超过 $1000$ 行,每行不超过 $80$ 个字符且所有常数均为小于 $2^{31}$ 的非负整数。
输入格式
输入包含多组数据,每组数据用 `.` 隔开。输入以连续输入两个 `.` 结束。详见样例。
输出格式
每组数据你都应输出第一个 bug 所在行,如没有 bug,则输出 $0$。详见样例。
样例输入:
```
a[3]
a[0]=a[1]
.
x[1]
x[0]=x[0]
.
a[0]
a[0]=1
.
b[2]
b[0]=2
b[1]=b[b[0]]
b[0]=b[1]
.
g[2]
G[10]
g[0]=0
g[1]=G[0]
.
a[2147483647]
a[0]=1
B[2]
B[a[0]]=2
a[B[a[0]]]=3
a[2147483646]=a[2]
.
.
```
样例输出:
```
2
2
2
3
4
0
```
由 @andyli 提供翻译