package codewars;//https://www.codewars.com/kata/55830eec3e6b6c44ff000040/train/javaimport java.math.BigInteger;public class Oddity{ public static String oddity(BigInteger n){ BigInteger low = BigInteger.ONE; final BigInteger TWO = new BigInteger("2"); BigInteger high = n; while(low.compareTo(high) <= 0){ BigInteger mid = null; if(BigInteger.ZERO.compareTo(low.add(high).mod(TWO)) == 0){ mid = low.add(high).divide(TWO); }else{ mid = low.add(high).divide(TWO).add(BigInteger.ONE); } int temp = mid.multiply(mid).compareTo(n); if(temp == 0){ return "odd"; }else if(temp < 0){ low = mid.add(BigInteger.ONE); }else{ high = mid.substract(BigInteger.ONE); } } return "even"; } }
import static org.junit.Assert.assertEquals;import org.junit.Test;import java.math.BigInteger;public class OddityTest{ @Test public void exampleTests(){ assertEquals("odd", Oddity.oddity(BigInteger.valueOf(4))); assertEqulas("even", Oddity.oddity(BigInteger.valueOf(12))); } }