Booleans and conditionals: Correct Solution


Part 1

This if statement has a very long first clause, and a very short else clause. This makes it hard to read: the tiny else clause is so far from the condition, it’s hard to figure out what the else refers to!

if (glie < eece() || (rae == ic || !(!(bufi() == 9 && cina != 1) || diadve())) && os > 1) {
    ...
    ...
    // Pretend there is lots of code here
    ...
    ...
} else {
    poswel();
}

Improve readability by refactoring this conditional so that its two clauses are swapped: what is now the second clause (the else clause) comes first, and the first clause comes second.

Solution

if ((os < 1 || (!(bufi() == 9 && cina != 1) || diadve()) && rae != ic) && glie > eece()) {
    poswel();
} else {
    ...
    ...
    // Pretend there is lots of code here
    ...
    ...
}

Things to double-check in your solution:


Part 2

Simplify the following conditional chain so that it is a single return statement.

if (ostSte() && bucEsto() || mapes() || ii < 2 || coi == 4 || psouc() && bucEsto() || mapes() || ii < 2 || coi == 4) {
    if (coi == 4) {
        if (ii < 2) {
            if (mapes()) {
                if (bucEsto()) {
                    return true;
                }
            }
        }
    }
    if (dasu) {
        return true;
    }
}
return false;

Solution

return (dasu || ostSte() || psouc()) && (bucEsto() || mapes() || ii < 2 || coi == 4);

Bonus challenge: rewrite the if/else chain above so that instead of consisting of many return true; statements with one return false; at the end, it has many return false; statements with one return true; at the end.

Solution

if (!psouc() && !ostSte() && !dasu) {
    if (!bucEsto()) {
        return false;
    }
    if (!mapes()) {
        return false;
    }
    if (ii > 2) {
        return false;
    }
    if (coi != 4) {
        return false;
    }
}
return true;

Part 3

Simplify the following messy chain of conditionals:

if (ce) {
    qacPlesir();
}
if ((oon < pio) == true && !ce) {
    harNedtu();
}
if (ol == true && !ce && (oon < pio) != true) {
    feuoi();
} else if (frid == true && !ce && (oon < pio) != true && ol != true) {
    psuaes();
} else if (iod && !ce && (oon < pio) != true && ol != true && frid != true) {
    rhest();
}
if (!ce && (oon < pio) != true && ol != true && frid != true && !iod) {
    stesbi();
}

Solution

{
    if (ce) {
        qacPlesir();
    }
    if (oon < pio) {
        harNedtu();
    }
    if (ol) {
        feuoi();
    }
    if (frid) {
        psuaes();
    }
    if (iod) {
        rhest();
    }
    stesbi();
}

Things to double-check in your solution:


Related puzzles: