import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.lang.NumberFormatException;
import java.util.ArrayList;
import java.util.function.Predicate;
class Collatz {
int n = 0;
try {
do {
System.
out.
print("Enter an integer greater than 0: "); n
= Integer.
parseInt(br.
readLine()); } while (n <= 0);
System.
err.
println("Caught exception " + e.
getMessage()); }
System.
out.
format("The Collatz sequence starting from %d", n
); ArrayList<Integer> collatz = new ArrayList<>();
while (n > 1) {
collatz.add(n);
if ((n % 2) == 0)
n /= 2;
else
n = (3 * n) + 1;
}
collatz.add(n);
System.
out.
format(" has %d elements.%n", collatz.
size()); Predicate<Integer> isEvenNumber = e -> e % 2 == 0;
Predicate<Integer> isOddNumber = o -> o % 2 != 0;
System.
out.
format("There are %d even numbers and %d odd numbers",
collatz.stream().filter(isEvenNumber).count(),
collatz.stream().filter(isOddNumber).count());
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyOwppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb247CmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlByZWRpY2F0ZTsKCmNsYXNzIENvbGxhdHogewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gewogICAgICAgIGludCBuID0gMDsKICAgICAgICB0cnkgewogICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudGVyIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIDA6ICIpOwogICAgICAgICAgICAgICAgbiA9IEludGVnZXIucGFyc2VJbnQoYnIucmVhZExpbmUoKSk7CiAgICAgICAgICAgIH0gd2hpbGUgKG4gPD0gMCk7CiAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gfCBOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSl7CiAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiQ2F1Z2h0IGV4Y2VwdGlvbiAiICsgZS5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICBTeXN0ZW0uZXhpdCgxKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIlRoZSBDb2xsYXR6IHNlcXVlbmNlIHN0YXJ0aW5nIGZyb20gJWQiLCBuKTsKICAgICAgICBBcnJheUxpc3Q8SW50ZWdlcj4gY29sbGF0eiA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgIHdoaWxlIChuID4gMSkgewogICAgICAgICAgICBjb2xsYXR6LmFkZChuKTsKICAgICAgICAgICAgaWYgKChuICUgMikgPT0gMCkKICAgICAgICAgICAgICAgIG4gLz0gMjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbiA9ICgzICogbikgKyAxOwogICAgICAgIH0KICAgICAgICBjb2xsYXR6LmFkZChuKTsKICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiIGhhcyAlZCBlbGVtZW50cy4lbiIsIGNvbGxhdHouc2l6ZSgpKTsKICAgICAgICBQcmVkaWNhdGU8SW50ZWdlcj4gaXNFdmVuTnVtYmVyID0gZSAtPiBlICUgMiA9PSAwOwogICAgICAgIFByZWRpY2F0ZTxJbnRlZ2VyPiBpc09kZE51bWJlciA9IG8gLT4gbyAlIDIgIT0gMDsKICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiVGhlcmUgYXJlICVkIGV2ZW4gbnVtYmVycyBhbmQgJWQgb2RkIG51bWJlcnMiLAogICAgICAgICAgICAgICAgY29sbGF0ei5zdHJlYW0oKS5maWx0ZXIoaXNFdmVuTnVtYmVyKS5jb3VudCgpLAogICAgICAgICAgICAgICAgY29sbGF0ei5zdHJlYW0oKS5maWx0ZXIoaXNPZGROdW1iZXIpLmNvdW50KCkpOwogICAgfQp9