/* 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
{
public static void main
(String[] args
) { int count
= countOdd
(new Integer [] {5,
7,
3,
9,
0}); count
= countOdd
(new Integer [] {2,
6,
4,
8,
1}); count = countOdd(5, 7, 10);
count = countOdd(8, 2, 7);
count
= countOdd
(new Integer[][] {{1,
2},
{3,
4,
5}});//extra point only count
= countOdd
(new Integer[][] {{6,
2},
{3,
4,
0}});//extra point only count
= countOdd
(new Integer [] {2,
6,
4,
8,
1},
new Integer [] {3,
5,
7,
8,
1}); }
// The var args version. You call this. It then calls the recursive
// version.
public static <T> int countOdd(T... arguments)
{
return countOddRec(arguments);
}
// Recursive version
private static <T> int countOddRec(T[] a)
{
if (a == null || a.length == 0) return 0;
int count=0;
// Is it an array of Numbers?
for (T i: a) {
// Simplified the counting code a bit. Any # mod 2 is either 0 or 1
count
+= ((Number)i
).
intValue() % 2; }
}
// Is it an multi-dimensional? Call recursively for each sub-array.
else {
for (T sub : a) {
count += countOddRec((T[])sub);
}
}
return count;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBpbnQgY291bnQgPSBjb3VudE9kZChuZXcgSW50ZWdlciBbXSB7NSwgNywgMywgOSwgMH0pOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudCk7CiAgICAgICAgY291bnQgPSBjb3VudE9kZChuZXcgSW50ZWdlciBbXSB7MiwgNiwgNCwgOCwgMX0pOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudCk7CiAgICAgICAgY291bnQgPSBjb3VudE9kZCg1LCA3LCAxMCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvdW50KTsKICAgICAgICBjb3VudCA9IGNvdW50T2RkKDgsIDIsIDcpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudCk7CiAgICAgICAgY291bnQgPSBjb3VudE9kZChuZXcgSW50ZWdlcltdW10ge3sxLCAyfSwgezMsIDQsIDV9fSk7Ly9leHRyYSBwb2ludCBvbmx5CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvdW50KTsKICAgICAgICBjb3VudCA9IGNvdW50T2RkKG5ldyBJbnRlZ2VyW11bXSB7ezYsIDJ9LCB7MywgNCwgMH19KTsvL2V4dHJhIHBvaW50IG9ubHkKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY291bnQpOwogICAgICAgIGNvdW50ID0gY291bnRPZGQobmV3IEludGVnZXIgW10gezIsIDYsIDQsIDgsIDF9LCBuZXcgSW50ZWdlciBbXSB7MywgNSwgNywgOCwgMX0pOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudCk7CiAgICB9CiAgICAKCS8vIFRoZSB2YXIgYXJncyB2ZXJzaW9uLiBZb3UgY2FsbCB0aGlzLiBJdCB0aGVuIGNhbGxzIHRoZSByZWN1cnNpdmUKCS8vIHZlcnNpb24uCglwdWJsaWMgc3RhdGljIDxUPiBpbnQgY291bnRPZGQoVC4uLiBhcmd1bWVudHMpCgl7CgkgICByZXR1cm4gY291bnRPZGRSZWMoYXJndW1lbnRzKTsKCX0KCgkvLyBSZWN1cnNpdmUgdmVyc2lvbgoJcHJpdmF0ZSBzdGF0aWMgPFQ+IGludCBjb3VudE9kZFJlYyhUW10gYSkKCXsKCSAgICBpZiAoYSA9PSBudWxsIHx8IGEubGVuZ3RoID09IDApIHJldHVybiAwOwoJICAgIAoJICAgIGludCBjb3VudD0wOwoJCgkgICAgLy8gSXMgaXQgYW4gYXJyYXkgb2YgTnVtYmVycz8KCSAgICBpZiAoYVswXSBpbnN0YW5jZW9mIE51bWJlcikgewoJICAgICAgICBmb3IgKFQgaTogYSkgewoJICAgICAgICAgICAgLy8gU2ltcGxpZmllZCB0aGUgY291bnRpbmcgY29kZSBhIGJpdC4gQW55ICMgbW9kIDIgaXMgZWl0aGVyIDAgb3IgMQoJICAgICAgICAgICAgY291bnQgKz0gKChOdW1iZXIpaSkuaW50VmFsdWUoKSAlIDI7CgkgICAgICAgIH0KCSAgICB9CgkgICAgLy8gSXMgaXQgYW4gbXVsdGktZGltZW5zaW9uYWw/IENhbGwgcmVjdXJzaXZlbHkgZm9yIGVhY2ggc3ViLWFycmF5LgoJICAgIGVsc2UgewoJICAgICAgICBmb3IgKFQgc3ViIDogYSkgewoJICAgICAgICAgICAgY291bnQgKz0gY291bnRPZGRSZWMoKFRbXSlzdWIpOwoJICAgICAgICB9CgkgICAgfQoJICAgIAoJICAgIHJldHVybiBjb3VudDsKCX0KfQ==