import scala.
runtime.
SeqCharSequence;
implicit def charSeq2Better
(cs
: CharSequence
) = new BetterCharSequence
(cs
); //implicit def better2CharSeq(bcs: BetterCharSequence) = bcs.s;
}
class BetterCharSequence
(val s
: CharSequence
) { for(i
<-
(0 until s.
length)) case c
: CharSequence
=> return equals
(new BetterCharSequence
(c
)); }
}
}
var temp
= new SeqCharSequence
("test"); println (temp.subSequence(0, 1) equals temp.subSequence(3, 4));
System exit 0;
val N
= readLine.
toInt; //length of p val p
:Set
[BetterCharSequence
] = readLine.
split(" ").
map((x
:String
) => new BetterCharSequence
(new SeqCharSequence
(x
))).
toSet; println
(p contains
new SeqCharSequence
("qwe").
subSequence(1,
3)); System exit 0;
val pass
= getPass
(new SeqCharSequence
(readLine
), p,
0); println("WRONG PASSWORD");
println(pass);
}
}
}
def getPass
(pass
: SeqCharSequence, p
: Set
[BetterCharSequence
], pos
: Int
):String
= { if(pass.
length-pos
== 0) return new String
(); //base case while(len
<= 10 && pass.
length >= len+pos
) { //max length of a password val temp
= pass.
subSequence(pos, pos+len
); val next
= getPass
(pass, p, pos+len
); return temp.
toString +
" " + next
; }
}
len += 1;
}
}
}
aW1wb3J0IHNjYWxhLnJ1bnRpbWUuU2VxQ2hhclNlcXVlbmNlOwppbXBvcnQgQkNTSW1wbGljaXRzLl87CgpvYmplY3QgQkNTSW1wbGljaXRzIHsKICBpbXBsaWNpdCBkZWYgY2hhclNlcTJCZXR0ZXIoY3M6IENoYXJTZXF1ZW5jZSkgPSBuZXcgQmV0dGVyQ2hhclNlcXVlbmNlKGNzKTsKICAvL2ltcGxpY2l0IGRlZiBiZXR0ZXIyQ2hhclNlcShiY3M6IEJldHRlckNoYXJTZXF1ZW5jZSkgPSBiY3MuczsKfQoKY2xhc3MgQmV0dGVyQ2hhclNlcXVlbmNlKHZhbCBzOiBDaGFyU2VxdWVuY2UpIHsKICBvdmVycmlkZSBkZWYgZXF1YWxzKGE6IEFueSk6Qm9vbGVhbiA9IHsKICAgIGEgbWF0Y2ggewogICAgICBjYXNlIGM6IEJldHRlckNoYXJTZXF1ZW5jZSA9PiBpZihzLmxlbmd0aCAhPSBjLnMubGVuZ3RoKSByZXR1cm4gZmFsc2U7CiAgICAgICAgZm9yKGkgPC0gKDAgdW50aWwgcy5sZW5ndGgpKQogICAgICAgIGlmKHMuY2hhckF0KGkpICE9IGMucy5jaGFyQXQoaSkpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBjYXNlIGM6IENoYXJTZXF1ZW5jZSA9PiByZXR1cm4gZXF1YWxzKG5ldyBCZXR0ZXJDaGFyU2VxdWVuY2UoYykpOwogICAgICBjYXNlIF8gPT4gcmV0dXJuIGZhbHNlOwogICAgfQogIH0gCn0KCm9iamVjdCBNYWluIGV4dGVuZHMgQXBwIHsKICAKICBvdmVycmlkZSBkZWYgbWFpbihhcmdzOiBBcnJheVtTdHJpbmddKSB7CiAgICB2YXIgdGVtcCA9IG5ldyBTZXFDaGFyU2VxdWVuY2UoInRlc3QiKTsKICAgIHByaW50bG4gKHRlbXAuc3ViU2VxdWVuY2UoMCwgMSkgZXF1YWxzIHRlbXAuc3ViU2VxdWVuY2UoMywgNCkpOwogICAgU3lzdGVtIGV4aXQgMDsKICAgIHZhbCBUID0gcmVhZExpbmUudG9JbnQ7CiAgICBmb3IoaSA8LSAoMCB1bnRpbCBUKSkgewogICAgICB2YWwgTiA9IHJlYWRMaW5lLnRvSW50OyAvL2xlbmd0aCBvZiBwCiAgICAgIHZhbCBwOlNldFtCZXR0ZXJDaGFyU2VxdWVuY2VdID0gcmVhZExpbmUuc3BsaXQoIiAiKS5tYXAoKHg6U3RyaW5nKSA9PiBuZXcgQmV0dGVyQ2hhclNlcXVlbmNlKG5ldyBTZXFDaGFyU2VxdWVuY2UoeCkpKS50b1NldDsKICAgICAgcHJpbnRsbihwIGNvbnRhaW5zIG5ldyBTZXFDaGFyU2VxdWVuY2UoInF3ZSIpLnN1YlNlcXVlbmNlKDEsIDMpKTsKICAgICAgU3lzdGVtIGV4aXQgMDsKICAgICAgdmFsIHBhc3MgPSBnZXRQYXNzKG5ldyBTZXFDaGFyU2VxdWVuY2UocmVhZExpbmUpLCBwLCAwKTsKICAgICAgaWYocGFzcyA9PSBudWxsKSB7CiAgICAgICAgcHJpbnRsbigiV1JPTkcgUEFTU1dPUkQiKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcmludGxuKHBhc3MpOwogICAgICB9CiAgICB9CiAgfQogIAogIGRlZiBnZXRQYXNzKHBhc3M6IFNlcUNoYXJTZXF1ZW5jZSwgcDogU2V0W0JldHRlckNoYXJTZXF1ZW5jZV0sIHBvczogSW50KTpTdHJpbmcgPSB7CiAgICBpZihwYXNzLmxlbmd0aC1wb3MgPT0gMCkgcmV0dXJuIG5ldyBTdHJpbmcoKTsgLy9iYXNlIGNhc2UKICAgIHZhciBsZW4gPSAxOwogICAgd2hpbGUobGVuIDw9IDEwICYmIHBhc3MubGVuZ3RoID49IGxlbitwb3MpIHsgLy9tYXggbGVuZ3RoIG9mIGEgcGFzc3dvcmQKICAgICAgdmFsIHRlbXAgPSBwYXNzLnN1YlNlcXVlbmNlKHBvcywgcG9zK2xlbik7CiAgICAgIGlmKHAgY29udGFpbnMgdGVtcCkgewogICAgICAgIHZhbCBuZXh0ID0gZ2V0UGFzcyhwYXNzLCBwLCBwb3MrbGVuKTsKICAgICAgICBpZihuZXh0ICE9IG51bGwpIHsKICAgICAgICAgIHJldHVybiB0ZW1wLnRvU3RyaW5nICsgIiAiICsgbmV4dDsKICAgICAgICB9CiAgICAgIH0KICAgICAgbGVuICs9IDE7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CiAgCn0=