Search code examples
javabooleanboolean-logicfractions

How to return answer of three fourths of Booleans in java


Hey guys I was wondering if there was any way to return a certain fraction of a bunch of booleans in java. Simply put I would like to find out if there is a way to create a method that when given four booleans if three of them are true it returns true but if less than three are true it returns false. I know this might be hard to understand and if you don't understand just post a comment saying so.


Solution

  • Weird question ... anyway, here's a possible solution for just 4 booleans:

    public boolean booleanFraction(boolean a, boolean b, boolean c, boolean d) {
        int ia = a ? 1 : 0;
        int ib = b ? 1 : 0;
        int ic = c ? 1 : 0;
        int id = d ? 1 : 0;
        return ia + ib + ic + id == 3;
    }
    

    For a more general solution, here's a method that receives as parameters the number of booleans that need to be true for considering true the whole expression, and a greater than zero variable number of boolean values:

    public static boolean booleanFraction(int number, boolean... bools) {
        int acc = 0;
        for (boolean b : bools)
            acc += b ? 1 : 0;
        return acc == number;
    }
    

    Call it like this, for the example in the question:

    booleanFraction(3, true, true, true, false);
    > true
    
    booleanFraction(3, false, false, true, false);
    > false