class Ideone
{
{
String tests
[] = {"Fg",
"Xij",
"AXij",
"Dklm",
"AAg",
"AA",
"Am",
"Amp",
"Amng",
"AFADFophAAQij",
"AFADFphAAQij"};
System.
out.
println(checkGrammar
(test
)); }
}
public static boolean checkGrammar
(String input
) { while (!(input = input.replaceAll("A[g-p]|[FDQX][g-p]{2}", "g")).equals(prev)) {
prev = input;
}
return input.matches("[g-p]");
}
}
Y2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZyB0ZXN0c1tdID0geyJGZyIsICJYaWoiLCAiQVhpaiIsICJEa2xtIiwgIkFBZyIsICJBQSIsICJBbSIsICJBbXAiLCAiQW1uZyIsICJBRkFERm9waEFBUWlqIiwgIkFGQURGcGhBQVFpaiJ9OwoKCQlmb3IgKFN0cmluZyB0ZXN0OiB0ZXN0cykgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oY2hlY2tHcmFtbWFyKHRlc3QpKTsKCQl9Cgl9CgoJcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrR3JhbW1hcihTdHJpbmcgaW5wdXQpIHsKCQlTdHJpbmcgcHJldiA9IGlucHV0OwoJICAgIHdoaWxlICghKGlucHV0ID0gaW5wdXQucmVwbGFjZUFsbCgiQVtnLXBdfFtGRFFYXVtnLXBdezJ9IiwgImciKSkuZXF1YWxzKHByZXYpKSB7CgkgICAgICAgIHByZXYgPSBpbnB1dDsKCSAgICB9CgkKCSAgICByZXR1cm4gaW5wdXQubWF0Y2hlcygiW2ctcF0iKTsKCX0KfQ==