Advertisement
iccaka

Java The Van Eck sequence

Oct 31st, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.01 KB | None | 0 0
  1. import java.util.*;
  2.  
  3.  
  4. public class Main {
  5.  
  6.     private static final int DEFAULT_STARTING_NUMBER = 0;
  7.     private static final int DEFAULT_STARTING_POSITION = 0;
  8.  
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.         int maxNumsToPrint;
  12.         int[] nums;
  13.  
  14.         try {
  15.             System.out.println("Enter a number:");
  16.             maxNumsToPrint = scanner.nextInt();
  17.             nums = new int[(int) Math.sqrt(maxNumsToPrint * maxNumsToPrint)];
  18.         } catch (InputMismatchException ime) {
  19.             System.out.println("The thing you've entered isn't a number");
  20.             return;
  21.         }
  22.  
  23.         for(int i = 0; i <= nums.length - 1; i++){
  24.             nums[i] = -1;
  25.         }
  26.  
  27.         nums[DEFAULT_STARTING_POSITION] = DEFAULT_STARTING_NUMBER;
  28.         System.out.println(nums[DEFAULT_STARTING_POSITION]);
  29.  
  30.         for(int i = 0; i < nums.length - 1; i++){
  31.             if(!isUnique(nums, nums[i])){
  32.                 nums[i + 1] = i - secondLastIndexOf(nums, nums[i]);
  33.                 System.out.println(nums[i + 1]);
  34.             }
  35.             else {
  36.                 nums[i + 1] = 0;
  37.                 System.out.println(0);
  38.             }
  39.         }
  40.  
  41.     }
  42.  
  43.     private static boolean isUnique(int[] intArr, int n){
  44.         boolean seenOnce = false;
  45.  
  46.         for(int i = 0; i <= intArr.length - 1; i++){
  47.             if(intArr[i] == n){
  48.                 if(seenOnce){
  49.                     return false;
  50.                 }
  51.                 seenOnce = true;
  52.             }
  53.         }
  54.         return true;
  55.     }
  56.  
  57.     private static int secondLastIndexOf(int[] intArr, int numToSearch) {
  58.         int counter = 0;
  59.         boolean seenOnce = false;
  60.  
  61.         for (int i = intArr.length - 1; i >= 0; i--) {
  62.             if (intArr[i] == numToSearch) {
  63.                 if(seenOnce){
  64.                     counter = i;
  65.                     break;
  66.                 }
  67.                 seenOnce = true;
  68.             }
  69.         }
  70.  
  71.         return counter;
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement