Skip to content

Instantly share code, notes, and snippets.

@demian0311
Created May 8, 2014 00:57
Show Gist options
  • Save demian0311/f9f3da42334625378433 to your computer and use it in GitHub Desktop.
Save demian0311/f9f3da42334625378433 to your computer and use it in GitHub Desktop.
Rod's Interview Question
package interview;
import org.junit.Test;
import static org.junit.Assert.*;
import java.util.function.IntPredicate;
import java.util.stream.IntStream;
public class Sevens {
int expected = 341658;
private boolean hasNoSevenInItString(int number){
return !((""+number).contains("7"));
}
private boolean hasNoSevenInItNoString(int number) {
if(number < 10){
return number != 7;
}
int rightMost = number % 10;
if(rightMost == 7){
return false;
}
return hasNoSevenInItNoString((number - rightMost) / 10);
}
@Test public void withStrings(){
int answer = IntStream.range(0, 1000)
.filter(this::hasNoSevenInItNoString)
.sum();
System.out.println("answer: " + answer);
assertEquals(expected, answer);
}
@Test public void test(){
//IntPredicate f = this::hasNoSevenInItString;
IntPredicate f = this::hasNoSevenInItNoString;
// false conditions
assertFalse(f.test(7));
assertFalse(f.test(70));
assertFalse(f.test(700));
assertFalse(f.test(701));
assertFalse(f.test(7000));
assertFalse(f.test(1007));
assertFalse(f.test(1070));
assertFalse(f.test(1700));
// true conditions
assertTrue(f.test(1234));
assertTrue(f.test(2345));
assertTrue(f.test(1));
assertTrue(f.test(10_000));
assertTrue(f.test(68_686));
// edge cases
assertTrue(f.test(0));
assertTrue(f.test(10_000));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment