/* package whatever; // don't place package name! */
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.stream.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
System.
out.
println("sort permutations: " + permutations
(list
-> list.
sort(randomOrder
()))); }
private static long permutations(Consumer<List<String>> shuffle) {
return Stream.
generate(() -> Arrays.
asList("a",
"b",
"c")) .peek(shuffle)
.limit(1000)
.distinct()
.count();
}
public static Comparator<String> randomOrder() {
ThreadLocalRandom r = ThreadLocalRandom.current();
int x = r.nextInt(), y = r.nextInt();
boolean b = r.nextBoolean();
.thenComparingInt(s->s.length()^y)
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuKjsKaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbigic2h1ZmZsZSBwZXJtdXRhdGlvbnM6ICIgKyBwZXJtdXRhdGlvbnMoQ29sbGVjdGlvbnM6OnNodWZmbGUpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oInNvcnQgcGVybXV0YXRpb25zOiAiICsgcGVybXV0YXRpb25zKGxpc3QgLT4gbGlzdC5zb3J0KHJhbmRvbU9yZGVyKCkpKSk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIGxvbmcgcGVybXV0YXRpb25zKENvbnN1bWVyPExpc3Q8U3RyaW5nPj4gc2h1ZmZsZSkgewoJCXJldHVybiBTdHJlYW0uZ2VuZXJhdGUoKCkgLT4gQXJyYXlzLmFzTGlzdCgiYSIsICJiIiwgImMiKSkKCQkJCS5wZWVrKHNodWZmbGUpCgkJCQkubGltaXQoMTAwMCkKCQkJCS5kaXN0aW5jdCgpCgkJCQkuY291bnQoKTsKCX0KCQoJcHVibGljIHN0YXRpYyBDb21wYXJhdG9yPFN0cmluZz4gcmFuZG9tT3JkZXIoKSB7CgkgICAgVGhyZWFkTG9jYWxSYW5kb20gciA9IFRocmVhZExvY2FsUmFuZG9tLmN1cnJlbnQoKTsKCSAgICBpbnQgeCA9IHIubmV4dEludCgpLCB5ID0gci5uZXh0SW50KCk7CgkgICAgYm9vbGVhbiBiID0gci5uZXh0Qm9vbGVhbigpOwoJICAgIHJldHVybiBDb21wYXJhdG9yLmNvbXBhcmluZ0ludCgoU3RyaW5nIHMpLT5zLmhhc2hDb2RlKCleeCkKCSAgICAgLnRoZW5Db21wYXJpbmdJbnQocy0+cy5sZW5ndGgoKV55KQoJICAgICAudGhlbkNvbXBhcmluZyhiPyBDb21wYXJhdG9yLm5hdHVyYWxPcmRlcigpOiBDb21wYXJhdG9yLnJldmVyc2VPcmRlcigpKTsKCX0KfQ==