Advertisement
YChalk

Interesting Numbers

Feb 22nd, 2022
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.52 KB | None | 0 0
  1. /******************************************************************************
  2.  
  3. Welcome to GDB Online.
  4. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
  5. C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
  6. Code, Compile, Run and Debug online from anywhere in world.
  7.  
  8. *******************************************************************************/
  9. import java.util.*;
  10.  
  11. public class Main
  12. {
  13.     public static void main(String[] args) {
  14.         System.out.println(isInteresting(3, new int[]{1337, 256}));
  15.         System.out.println(isInteresting(3236, new int[]{1337, 256}));
  16.         System.out.println(isInteresting(11207, new int[]{}));
  17.         System.out.println(isInteresting(11208, new int[]{}));
  18.         System.out.println(isInteresting(11209, new int[]{}));
  19.         System.out.println(isInteresting(11210, new int[]{}));
  20.         System.out.println(isInteresting(11211, new int[]{}));
  21.         System.out.println(isInteresting(1335, new int[]{1337, 256}));
  22.         System.out.println(isInteresting(1336, new int[]{1337, 256}));
  23.         System.out.println(isInteresting(1337, new int[]{1337, 256}));
  24.     }
  25.    
  26.     public static int isInteresting(int number, int[] awesomePhrases) {
  27.     //Go to town
  28.     int copy = number;
  29.     int plusOne = number+1;
  30.     int plusOneCopy = plusOne;
  31.     int plusTwo = number+2;
  32.     int plusTwoCopy = plusTwo;
  33.    
  34.     int[] digits = new int[String.valueOf(number).length()];
  35.     for (int i = digits.length-1; i >= 0; i--){
  36.         digits[i] = copy%10;
  37.         copy /= 10;
  38.     }
  39.    
  40.     //length check
  41.     if (digits.length > 2){
  42.     //0 check
  43.         int[] zero = Arrays.copyOfRange(digits, 1, digits.length-1);
  44.         if (Arrays.stream(zero).filter(i -> i == 0).count() == zero.length) return 2;
  45.     //same number check
  46.         if (Arrays.stream(digits).filter(i -> i >= 0 && i <=9).distinct().count() == 1) return 2;
  47.     //sequential check;
  48.         boolean incrementing = true;
  49.         boolean decrementing = true;
  50.         for (int i = 0; i < digits.length-2; i++){
  51.             if (digits[i] == 0) incrementing = false;
  52.             else if (digits[i] == 9 && digits[i+1] != 0) incrementing = false;
  53.             else if (digits[i]+1 != digits[i+1]) incrementing = false;
  54.             if (digits[i]-1 != digits[i+1]) decrementing = false;
  55.         }
  56.         if (incrementing || decrementing) return 2;
  57.     //palindrome check;
  58.         boolean palindrome = true;
  59.         for (int i = 0; i <= digits.length/2; i++){
  60.             if (digits[i] != digits[digits.length-1-i]) palindrome = false;
  61.         }
  62.         if (palindrome) return 2;
  63.     //awesome check
  64.         if (Arrays.stream(awesomePhrases).filter(i -> i == number).count() > 0) return 2;
  65.     }
  66.    
  67.     int[] digitsOne = new int[String.valueOf(plusOne).length()];
  68.     for (int i = digitsOne.length-1; i >= 0; i--){
  69.         digitsOne[i] = plusOneCopy%10;
  70.         plusOneCopy /= 10;
  71.     }
  72.    
  73.     //length check
  74.     if (digitsOne.length > 2){
  75.     //0 check
  76.         int[] zero = Arrays.copyOfRange(digitsOne, 1, digitsOne.length-1);
  77.         if (Arrays.stream(zero).filter(i -> i == 0).count() == zero.length) return 1;
  78.     //same number check
  79.         if (Arrays.stream(digitsOne).filter(i -> i >= 0 && i <=9).distinct().count() == 1) return 1;
  80.     //sequential check;
  81.         boolean incrementing = true;
  82.         boolean decrementing = true;
  83.         for (int i = 0; i < digitsOne.length-2; i++) {
  84.             if (digitsOne[i] == 0) incrementing = false;
  85.             else if (digitsOne[i] == 9 && digitsOne[i+1] != 0) incrementing = false;
  86.             else if (digitsOne[i]+1 != digitsOne[i+1]) incrementing = false;
  87.             if (digitsOne[i]-1 != digitsOne[i+1]) decrementing = false;
  88.         }
  89.         if (incrementing || decrementing) return 1;
  90.     //palindrome check;
  91.         boolean palindrome = true;
  92.         for (int i = 0; i <= digitsOne.length/2; i++){
  93.             if (digitsOne[i] != digitsOne[digitsOne.length-1-i]) palindrome = false;
  94.         }
  95.         if (palindrome) return 1;
  96.     //awesome check
  97.         if (Arrays.stream(awesomePhrases).filter(i -> i == plusOne).count() > 0) return 1;
  98.     }
  99.    
  100.     int[] digitsTwo = new int[String.valueOf(plusTwo).length()];
  101.     for (int i = digitsTwo.length-1; i >= 0; i--){
  102.         digitsTwo[i] = plusTwoCopy%10;
  103.         plusTwoCopy /= 10;
  104.     }
  105.    
  106.     //length check
  107.     if (digitsTwo.length > 2){
  108.     //0 check
  109.         int[] zero = Arrays.copyOfRange(digits, 1, digitsTwo.length-1);
  110.         if (Arrays.stream(zero).filter(i -> i == 0).count() == zero.length) return 1;
  111.     //same number check
  112.         if (Arrays.stream(digitsTwo).filter(i -> i >= 0 && i <=9).distinct().count() == 1) return 1;
  113.     //sequential check;
  114.         boolean incrementing = true;
  115.         boolean decrementing = true;
  116.         for (int i = 0; i < digitsTwo.length-2; i++) {
  117.             if (digitsTwo[i] == 0) incrementing = false;
  118.             else if (digitsTwo[i] == 9 && digitsTwo[i+1] != 0) incrementing = false;
  119.             else if (digitsTwo[i]+1 != digitsTwo[i+1]) incrementing = false;
  120.             if (digitsTwo[i]-1 != digitsTwo[i+1]) decrementing = false;
  121.         }
  122.         if (incrementing || decrementing) return 1;
  123.     //palindrome check;
  124.         boolean palindrome = true;
  125.         for (int i = 0; i <= digitsTwo.length/2; i++){
  126.             if (digitsTwo[i] != digitsTwo[digits.length-1-i]) palindrome = false;
  127.         }
  128.         if (palindrome) return 1;
  129.     //awesome check
  130.         if (Arrays.stream(awesomePhrases).filter(i -> i == plusTwo).count() > 0) return 1;
  131.     }
  132.    
  133.     return 0;
  134.     }
  135. }
  136.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement