Java Sorry, messed up on editing on last one
package tetrominoshuffler;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class TetrominoShuffler {
static final Character[] tetrominos = {'O','I','S','Z','L','J','T'};
static String generateShuffled(int numOfTetrominos){
ArrayList<Character> listOfTetrominos = new ArrayList<>();
char[] output = new char[numOfTetrominos];
int outputLength = 0;
Random rndm = new Random();
while(outputLength < numOfTetrominos){
if(listOfTetrominos.size() == 0){
for (int i = 0; i < tetrominos.length; i++) {
listOfTetrominos.add(tetrominos[i]);
}
}
int index = rndm.nextInt(listOfTetrominos.size());
output[outputLength] = listOfTetrominos.get(index);
listOfTetrominos.remove(index);
outputLength++;
}
String outputString = new String(output);
return outputString;
}
static boolean isTetrominos(String in){
if(in == null){
return false;
} else if(in.length() == 0){
return false;
} else if(!in.matches("^[OISZLJT]+$")){
return false;
}
String[] substrings = new String[in.length() / tetrominos.length % 1 == 0 ? in.length() / tetrominos.length : (int)(in.length() / tetrominos.length) + 1];
for (int i = 0; i < substrings.length; i++) {
ArrayList<Character> tetrominoList = new ArrayList<>();
for (int j = 0; j < tetrominos.length; j++) {
tetrominoList.add(tetrominos[j]);
}
substrings[i] = in.substring(i * 7, i * 7 + 7);
char[] chars = substrings[i].toCharArray();
for (int j = 0; j < chars.length; j++) {
if(tetrominoList.contains(chars[j])){
tetrominoList.remove(tetrominoList.indexOf(chars[j]));
} else {
return false;
}
}
}
return true;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
PrintStream out = System.out;
out.println("Enter # of tetrominos");
int tetrominos = Integer.parseInt(in.nextLine());
out.println(generateShuffled(tetrominos));
out.println("Enter string to check if tetromino stream is correct");
String input = in.nextLine();
out.println("This series of tetrominos is " + (isTetrominos(input) ? "correct" : "incorrect"));
}
}