3

I'm trying to create an array of numbers, starting from a big number, which is a string, and then splited to create an array.

This array has numbers from 1 to 6.

I want to create a new array of 29 items, checking the last 3 items. For instance, if the current item to add is number 4, it will check for item 3, 2, and 1. I want it to check if any of the other 3 items are the same as the current, and if is the same, it will skip to next number.

The idea, is not to have repeated numbers in a "range" of 4 items.

I also want to do another thing, and is that if the current item is number 1, it would check the last 6 items, instead of just the last 3. Only when the item is number 1. I just haven't found a way to do it.

I hope someone could help me.

Here's the current code:

import java.io.*;
import java.util.*;

public class Randomizer {

    public static String numbers = "1632544362511653244213652164535316243164251654235231465312645164233462153465124361522316545326412354165412633214654531626513246124351423565431623162453625412564325134634562136145256142342365161423542563151426325146335241613645225431656324164351215263453642123416561345264215321536436451243156263542125631415624314536235124662145152436352164436512645312264315432651216345624315421563516423465213614352621543342516352614";

    public static void main(String[] args) {
        show("\n");

        String[] nums = numbers.split("(?!^)"), finalNums = new String[29];

        for (int i = 0; i < finalNums.length; i++) {

            finalNums[i] = newnumber(nums, i);

        }

        for (String num : finalNums) {
            show(num + "-");
        }

    }

    public static String newnumber(String[] array, int start) {
        String num = "x";
        String act = array[start];
        for (int i = start; i < array.length; i++) {
            int a = start - 1, b = start - 2, c = start - 3, d = start - 4;
            if (a >= 0 && b >= 0 && c >= 0 && d >= 0) {
                String na = array[a], nb = array[b], nc = array[c], nd = array[d];
                if (act != na && act != nb && act != nc && act != nd) {
                    num = act;
                } else {
                }
            } else {
                num = act;
            }
        }
        return num;

    }

    public static void show(String s) {
        System.out.print(s);
    }

    public static void show(int s) {
        System.out.print(s);
    }

    public static void show(float s) {
        System.out.print(s);
    }

    public static void show(double s) {
        System.out.print(s);
    }

}

The output is:

1-6-3-2-5-4-4-3-6-2-5-1-1-6-5-3-2-4-4-2-1-3-6-5-2-1-6-4-5

What I expect to get is something like:

1-6-3-2-5-4-6-1-2-5-3-4-6-5-1-2-5-4-6-3-2-1-2-4-5-6-3-2-1
Jahir Fiquitiva
  • 1,459
  • 3
  • 23
  • 47

0 Answers0