35 lines
846 B
Text
35 lines
846 B
Text
|
|
int reg_match(int[] str, int[] reg, int p1, int p2, int last) {
|
||
|
|
if (str[p1] == 0 & reg[p2] == 0) {
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
if (str[p1] == 0 & reg[p2] != 0) {
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
if (str[p1] != 0 & reg[p2] == 0) {
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
if (reg[p2+1] == 42) {
|
||
|
|
return reg_match(str, reg, p1, p2+1, reg[p2]);
|
||
|
|
}
|
||
|
|
if (reg[p2] == 42) {
|
||
|
|
var result = reg_match(str, reg, p1, p2+1, 0);
|
||
|
|
if (result == 1) {
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
if (str[p1] == last | last == 46) {
|
||
|
|
return reg_match(str, reg, p1+1, p2, last);
|
||
|
|
}
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
if (str[p1] == reg[p2] | reg[p2] == 46) {
|
||
|
|
return reg_match(str, reg, p1+1, p2+1, 0);
|
||
|
|
}
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
int program(int argc, string[] argv) {
|
||
|
|
var str = new int[]{97, 98, 99, 99, 99, 99, 99, 100, 101, 102, 0};
|
||
|
|
var reg = new int[]{97, 103, 42, 46, 99, 42, 99, 42, 100, 101, 42, 102, 0};
|
||
|
|
return reg_match(str, reg, 0, 0, 0);
|
||
|
|
}
|