Monday, June 6, 2016

Java Challenge - count8 Recursive

Given a non-negative int n, compute recursively (no loops) the count of the occurrences of 8 as a digit, except that an 8 with another 8 immediately to its left counts double, so 8818 yields 4. Note that mod (%) by 10 yields the rightmost digit (126 % 10 is 6), while divide (/) by 10 removes the rightmost digit (126 / 10 is 12).

count8(8) → 1
count8(818) → 2
count8(8818) → 4

Hisoka:
1
2
3
4
5
6
public int count8(int n) {
 if(n<10 && n == 8) return 1; 
 if(n<10 && n!=8) return 0;
 if((n%10 == 8) && ((n/10)%10)==8) return 1+count8(n%10)+count8(n/10);
 return count8(n%10)+count8(n/10);
}

Test result from decodingbat:

Java Challenge - count7 Recursive

Given a non-negative int n, return the count of the occurrences of 7 as a digit, so for example 717 yields 2. (no loops). Note that mod (%) by 10 yields the rightmost digit (126 % 10 is 6), while divide (/) by 10 removes the rightmost digit (126 / 10 is 12).

count7(717) → 2
count7(7) → 1
count7(123) → 0

Hisoka :
1
2
3
4
5
public int count7(int n) {
  if(n<10 && n == 7) return 1;
  else if(n<10 && n!=7) return 0;
  else return count7(n%10)+count7(n/10);
}

Test Result of Codingbat: