Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************************************************************************
- Welcome to GDB Online.
- GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
- C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
- Code, Compile, Run and Debug online from anywhere in world.
- *******************************************************************************/
- import java.util.*;
- public class Main
- {
- public static void main(String[] args) {
- System.out.println(isInteresting(3, new int[]{1337, 256}));
- System.out.println(isInteresting(3236, new int[]{1337, 256}));
- System.out.println(isInteresting(11207, new int[]{}));
- System.out.println(isInteresting(11208, new int[]{}));
- System.out.println(isInteresting(11209, new int[]{}));
- System.out.println(isInteresting(11210, new int[]{}));
- System.out.println(isInteresting(11211, new int[]{}));
- System.out.println(isInteresting(1335, new int[]{1337, 256}));
- System.out.println(isInteresting(1336, new int[]{1337, 256}));
- System.out.println(isInteresting(1337, new int[]{1337, 256}));
- }
- public static int isInteresting(int number, int[] awesomePhrases) {
- //Go to town
- int copy = number;
- int plusOne = number+1;
- int plusOneCopy = plusOne;
- int plusTwo = number+2;
- int plusTwoCopy = plusTwo;
- int[] digits = new int[String.valueOf(number).length()];
- for (int i = digits.length-1; i >= 0; i--){
- digits[i] = copy%10;
- copy /= 10;
- }
- //length check
- if (digits.length > 2){
- //0 check
- int[] zero = Arrays.copyOfRange(digits, 1, digits.length-1);
- if (Arrays.stream(zero).filter(i -> i == 0).count() == zero.length) return 2;
- //same number check
- if (Arrays.stream(digits).filter(i -> i >= 0 && i <=9).distinct().count() == 1) return 2;
- //sequential check;
- boolean incrementing = true;
- boolean decrementing = true;
- for (int i = 0; i < digits.length-2; i++){
- if (digits[i] == 0) incrementing = false;
- else if (digits[i] == 9 && digits[i+1] != 0) incrementing = false;
- else if (digits[i]+1 != digits[i+1]) incrementing = false;
- if (digits[i]-1 != digits[i+1]) decrementing = false;
- }
- if (incrementing || decrementing) return 2;
- //palindrome check;
- boolean palindrome = true;
- for (int i = 0; i <= digits.length/2; i++){
- if (digits[i] != digits[digits.length-1-i]) palindrome = false;
- }
- if (palindrome) return 2;
- //awesome check
- if (Arrays.stream(awesomePhrases).filter(i -> i == number).count() > 0) return 2;
- }
- int[] digitsOne = new int[String.valueOf(plusOne).length()];
- for (int i = digitsOne.length-1; i >= 0; i--){
- digitsOne[i] = plusOneCopy%10;
- plusOneCopy /= 10;
- }
- //length check
- if (digitsOne.length > 2){
- //0 check
- int[] zero = Arrays.copyOfRange(digitsOne, 1, digitsOne.length-1);
- if (Arrays.stream(zero).filter(i -> i == 0).count() == zero.length) return 1;
- //same number check
- if (Arrays.stream(digitsOne).filter(i -> i >= 0 && i <=9).distinct().count() == 1) return 1;
- //sequential check;
- boolean incrementing = true;
- boolean decrementing = true;
- for (int i = 0; i < digitsOne.length-2; i++) {
- if (digitsOne[i] == 0) incrementing = false;
- else if (digitsOne[i] == 9 && digitsOne[i+1] != 0) incrementing = false;
- else if (digitsOne[i]+1 != digitsOne[i+1]) incrementing = false;
- if (digitsOne[i]-1 != digitsOne[i+1]) decrementing = false;
- }
- if (incrementing || decrementing) return 1;
- //palindrome check;
- boolean palindrome = true;
- for (int i = 0; i <= digitsOne.length/2; i++){
- if (digitsOne[i] != digitsOne[digitsOne.length-1-i]) palindrome = false;
- }
- if (palindrome) return 1;
- //awesome check
- if (Arrays.stream(awesomePhrases).filter(i -> i == plusOne).count() > 0) return 1;
- }
- int[] digitsTwo = new int[String.valueOf(plusTwo).length()];
- for (int i = digitsTwo.length-1; i >= 0; i--){
- digitsTwo[i] = plusTwoCopy%10;
- plusTwoCopy /= 10;
- }
- //length check
- if (digitsTwo.length > 2){
- //0 check
- int[] zero = Arrays.copyOfRange(digits, 1, digitsTwo.length-1);
- if (Arrays.stream(zero).filter(i -> i == 0).count() == zero.length) return 1;
- //same number check
- if (Arrays.stream(digitsTwo).filter(i -> i >= 0 && i <=9).distinct().count() == 1) return 1;
- //sequential check;
- boolean incrementing = true;
- boolean decrementing = true;
- for (int i = 0; i < digitsTwo.length-2; i++) {
- if (digitsTwo[i] == 0) incrementing = false;
- else if (digitsTwo[i] == 9 && digitsTwo[i+1] != 0) incrementing = false;
- else if (digitsTwo[i]+1 != digitsTwo[i+1]) incrementing = false;
- if (digitsTwo[i]-1 != digitsTwo[i+1]) decrementing = false;
- }
- if (incrementing || decrementing) return 1;
- //palindrome check;
- boolean palindrome = true;
- for (int i = 0; i <= digitsTwo.length/2; i++){
- if (digitsTwo[i] != digitsTwo[digits.length-1-i]) palindrome = false;
- }
- if (palindrome) return 1;
- //awesome check
- if (Arrays.stream(awesomePhrases).filter(i -> i == plusTwo).count() > 0) return 1;
- }
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement