In the Logic-1 section of CodingBat the pace picks up a bit. None of the exercises should make you break a sweat, but it’s quite easy to write unnecessarily convoluted if/else statements. Many of my solutions make use of the ternary operator to save some vertical space and increase readability.

All 24 solutions were successfully tested on 4 February 2013.

**cigarParty:**

public boolean cigarParty(int cigars, boolean isWeekend) { if (isWeekend) return (cigars >= 40); return cigars >= 40 && cigars <= 60; }

**dateFashion:**

public int dateFashion(int you, int date) { if (you <= 2 || date <= 2) return 0; return (you >= 8 && date >= 2 || date >= 8 && you >= 2) ? 2 : 1; }

**squirrelPlay:**

public boolean squirrelPlay(int temp, boolean isSummer) { return (isSummer) ? (temp >= 60 && temp <= 100) : (temp >= 60 && temp <= 90); }

**caughtSpeeding:**

public int caughtSpeeding(int speed, boolean isBirthday) { if (isBirthday) speed -= 5; if (speed <= 60) return 0; return (speed > 60 && speed <= 80) ? 1 : 2; }

**sortaSum:**

public int sortaSum(int a, int b) { return (a + b >= 10 && a + b <= 19) ? 20 : a + b; }

**alarmClock:**

if (vacation) return (day >= 1 && day <= 5) ? "10:00" : "off"; return (day >= 1 && day <= 5) ? "7:00" : "10:00";

If you think this is too concise, then compare it with a solution that avoids the ternary operator:

public String alarmClock(int day, boolean vacation) { if (vacation) { if (day >= 1 && day <= 5) return "10:00"; return "off"; } if (day >= 1 && day <= 5) return "7:00"; return "10:00"; }

Ugly, isn’t it?

**love6:**

public boolean love6(int a, int b) { return a == 6 || b == 6 || a + b == 6 || Math.abs(a - b) == 6; }

**in1To10:**

public boolean in1To10(int n, boolean outsideMode) { return (outsideMode) ? n <= 1 || n >= 10 : n >= 1 && n <= 10; }

**nearTen:**

public boolean nearTen(int num) { return num % 10 >= 8 || num % 10 <= 2; }

**teenSum:**

public int teenSum(int a, int b) { return (a >= 13 && a <= 19 || b >= 13 && b <= 19) ? 19 : a + b; }

John DoeIn in1To10 could you explain your return?

return (outsideMode) ? n = 10 : n >= 1 && n <= 10;

Mostly the "?" and ":" those are new to me?

Gregor UlmPost authorThat’s the so-called ternary operator, which is a shorthand for if-then-else. I’m personally divided on its usage, since you trade succinctness for readability.

AdamHere was my solution to the in1To10 problem

public boolean in1To10(int n, boolean outsideMode) {

return (outsideMode ? outside(n) : inside(n));

}

public boolean inside(int a){

return (a >= 1 && a <= 10 ? true : false);

}

public boolean outside(int a){

return (a = 10 ? true : false);

}

asdnearTen:

return (num+2)%10<5;

Gregor UlmPost authorAs you can see, supposedly clever solutions are not always the most readable.