/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
static class BlackListRule {
this .a = a;
this .b = b;
this .c = c;
}
return ( "*" .equals ( this .a ) || this .a .equals ( a) )
&& ( "*" .equals ( this .b ) || this .b .equals ( b) )
&& ( "*" .equals ( this .c ) || this .c .equals ( c) ) ;
}
public String toString
( ) { return String .
format ( "%s-%s-%s" , a, b, c
) ; }
public int hashCode( ) {
return Arrays .
deepHashCode ( new char [ ] [ ] { a.
toCharArray ( ) , b.
toCharArray ( ) , c.
toCharArray ( ) } ) ; }
public boolean equals
( Object o
) { return o instanceof BlackListRule && ( ( BlackListRule) o) .hashCode ( ) == hashCode( ) ;
}
}
private static Set< BlackListRule> blacklist = new HashSet<> ( ) ;
static {
blacklist.add ( new BlackListRule( "a" , "*" , "*" ) ) ;
blacklist.add ( new BlackListRule( "b" , "c" , "*" ) ) ;
blacklist.add ( new BlackListRule( "x" , "y" , "z" ) ) ;
blacklist.add ( new BlackListRule( "x" , "y" , "z" ) ) ;
}
return blacklist.stream ( ) .anyMatch ( rule -> rule.matches ( a,b,c) ) ;
}
System .
out .
println ( blacklist
) ; Scanner sc
= new Scanner
( System .
in ) ; while ( sc.hasNext ( ) ) {
sc.nextLine ( ) ;
System .
out .
printf ( "%s %s %s : %s%n" , a, b, c, isBlacklisted
( a, b, c
) ? "blacklisted" : "pass" ) ; }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lIHsKCQoJc3RhdGljIGNsYXNzIEJsYWNrTGlzdFJ1bGUgewoJICAgIFN0cmluZyBhOwoJICAgIFN0cmluZyBiOwoJICAgIFN0cmluZyBjOwoJCgkgICAgQmxhY2tMaXN0UnVsZShTdHJpbmcgYSwgU3RyaW5nIGIsIFN0cmluZyBjKSB7CgkgICAgCXRoaXMuYSA9IGE7CgkgICAgCXRoaXMuYiA9IGI7CgkgICAgCXRoaXMuYyA9IGM7CgkgICAgfQoJCgkgICAgcHVibGljIGJvb2xlYW4gbWF0Y2hlcyhTdHJpbmcgYSwgU3RyaW5nIGIsIFN0cmluZyBjKSB7CgkgICAgICAgIHJldHVybiAoIioiLmVxdWFscyh0aGlzLmEpIHx8IHRoaXMuYS5lcXVhbHMoYSkpCgkgICAgICAgICAgICAgJiYoIioiLmVxdWFscyh0aGlzLmIpIHx8IHRoaXMuYi5lcXVhbHMoYikpCgkgICAgICAgICAgICAgJiYoIioiLmVxdWFscyh0aGlzLmMpIHx8IHRoaXMuYy5lcXVhbHMoYykpOwoJICAgIH0KCSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeyByZXR1cm4gU3RyaW5nLmZvcm1hdCgiJXMtJXMtJXMiLCBhLCBiLCBjKTsgfQoJICAgIAoJICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CgkgICAgCXJldHVybiBBcnJheXMuZGVlcEhhc2hDb2RlKG5ldyBjaGFyW11bXXthLnRvQ2hhckFycmF5KCksIGIudG9DaGFyQXJyYXkoKSwgYy50b0NoYXJBcnJheSgpfSk7CgkgICAgfQoKICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKICAgICAgICAJcmV0dXJuIG8gaW5zdGFuY2VvZiBCbGFja0xpc3RSdWxlICYmICgoQmxhY2tMaXN0UnVsZSlvKS5oYXNoQ29kZSgpID09IGhhc2hDb2RlKCk7CiAgICAgICAgfQoJICAgIAoJfQoJCglwcml2YXRlIHN0YXRpYyBTZXQ8QmxhY2tMaXN0UnVsZT4gYmxhY2tsaXN0ID0gbmV3IEhhc2hTZXQ8PigpOwoJCglzdGF0aWMgewoJCQoJCWJsYWNrbGlzdC5hZGQobmV3IEJsYWNrTGlzdFJ1bGUoImEiLCAiKiIsICIqIikpOwoJCWJsYWNrbGlzdC5hZGQobmV3IEJsYWNrTGlzdFJ1bGUoImIiLCAiYyIsICIqIikpOwoJCWJsYWNrbGlzdC5hZGQobmV3IEJsYWNrTGlzdFJ1bGUoIngiLCAieSIsICJ6IikpOwoJCWJsYWNrbGlzdC5hZGQobmV3IEJsYWNrTGlzdFJ1bGUoIngiLCAieSIsICJ6IikpOwoJfQoJCglwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNCbGFja2xpc3RlZChTdHJpbmcgYSwgU3RyaW5nIGIsIFN0cmluZyBjKSB7CgkJcmV0dXJuIGJsYWNrbGlzdC5zdHJlYW0oKS5hbnlNYXRjaChydWxlIC0+IHJ1bGUubWF0Y2hlcyhhLGIsYykpOwoJfSAKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uIHsKCQlTeXN0ZW0ub3V0LnByaW50bG4oYmxhY2tsaXN0KTsKCQlTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQl3aGlsZSAoc2MuaGFzTmV4dCgpKSB7CgkJCVN0cmluZyBhID0gc2MubmV4dCgpOwoJCQlTdHJpbmcgYiA9IHNjLm5leHQoKTsKCQkJU3RyaW5nIGMgPSBzYy5uZXh0KCk7CgkJCXNjLm5leHRMaW5lKCk7CgkJCVN5c3RlbS5vdXQucHJpbnRmKCIlcyAlcyAlcyA6ICVzJW4iLCBhLCBiLCBjLCBpc0JsYWNrbGlzdGVkKGEsIGIsIGMpID8gImJsYWNrbGlzdGVkIiA6ICJwYXNzIik7CgkJfQoJfQp9