/*This class is used to make operations with arrays.*/
public class Array {
public static String[] remove(String[] a, int b){ //Remove a specific offset
if (b >= a.length || b < 0){return a;}
String[] rtn = new String[a.length-1];
int j=0;
for (int i=0; i<a.length; i++){
if (i != b){
rtn[j] = a[i];
j += 1;
}
}
return rtn;
}
public static String[][] remove(String[][] a, int b){ //Remove a specific offset
if (b >= a.length || b < 0){return a;}
String[][] rtn = new String[a.length-1][a[0].length];
int j=0;
for (int i=0; i<a.length; i++){
if (i != b){
rtn[j] = a[i];
j += 1;
}
}
return rtn;
}
public static String[] remove(String[] a, int[] b){ //Remove specific offsets
int j = 0;
boolean l = false;
for (int i=0; i<b.length; i++){
l = true;
if (b[i] >= 0 && b[i] < a.length){
for (int m=0; m<b.length; m++){
if (m != i && b[m] == b[i]){
l = false;
m = b.length;
}
}
if (l == true){j += 1;}
}
}
int[] c = new int[j];
j=0;
for (int i=0; i<b.length; i++){
l = true;
if (b[i] >= 0 && b[i] < a.length){
for (int m=0; m<b.length; m++){
if (m != i && b[m] == b[i]){
l = false;
m = b.length;
}
}
if (l == true){
c[j] = b[i];
j += 1;
}
}
}
String[] rtn = new String[a.length-j];
j=0;
for (int i=0; i<a.length; i++){
l = true;
for (int k=0; k<c.length; k++){
if (c[k] == i){
l = false;
k = c.length;
}
}
if (l == true){
rtn[j] = a[i];
j += 1;
}
}
return rtn;
}
public static String[][] remove(String[][] a, int[] b){ //Remove specific offsets
int j = 0;
boolean l = false;
for (int i=0; i<b.length; i++){
l = true;
if (b[i] >= 0 && b[i] < a.length){
for (int m=0; m<b.length; m++){
if (m != i && b[m] == b[i]){
l = false;
m = b.length;
}
}
if (l == true){j += 1;}
}
}
int[] c = new int[j];
j=0;
for (int i=0; i<b.length; i++){
l = true;
if (b[i] >= 0 && b[i] < a.length){
for (int m=0; m<b.length; m++){
if (m != i && b[m] == b[i]){
l = false;
m = b.length;
}
}
if (l == true){
c[j] = b[i];
j += 1;
}
}
}
String[][] rtn = new String[a.length-j][a[0].length];
j=0;
for (int i=0; i<a.length; i++){
l = true;
for (int k=0; k<c.length; k++){
if (c[k] == i){
l = false;
k = c.length;
}
}
if (l == true){
rtn[j] = a[i];
j += 1;
}
}
return rtn;
}
public static String[] append (String[] a, String b){ //Append a string
String[] rtn = new String[a.length+1];
for (int i=0; i<a.length; i++){rtn[i] = a[i];}
rtn[a.length] = b;
return rtn;
}
public static String[][] append (String[][] a, String[] b){ //Append a string
if (b.length == 0){return a;}
String[][] rtn = new String[a.length+1][b.length];
for (int i=0; i<a.length; i++){rtn[i] = a[i];}
rtn[a.length] = b;
return rtn;
}
public static String[] append(String[] a, String[] b){ //Append strings
if (b.length == 0){return a;}
String[] rtn = new String[a.length+b.length];
for (int i=0; i<a.length; i++){rtn[i] = a[i];}
for (int i=a.length; i<a.length+b.length; i++){rtn[i] = b[i-a.length];}
return rtn;
}
public static String[][] append(String[][] a, String[][] b){ //Append strings
if (b.length == 0){return a;}
String[][] rtn = new String[a.length+b.length][b.length];
for (int i=0; i<a.length; i++){rtn[i] = a[i];}
for (int i=a.length; i<a.length+b.length; i++){rtn[i] = b[i-a.length];}
return rtn;
}
public static String[] insert(String[] a, String b, int c){ //Insert a string
if (c < 0 || c > a.length){return a;}
String[] rtn = new String[a.length+1];
int j=0;
for (int i=0; i<a.length; i++){
if (j == c){
rtn[j] = b;
j += 1;
}
rtn[j] = a[i];
j += 1;
}
return rtn;
}
public static String[][] insert(String[][] a, String[] b, int c){ //Insert a string
if (c < 0 || c > a.length || b.length == 0){return a;}
String[][] rtn = new String[a.length+1][b.length];
int j=0;
for (int i=0; i<a.length; i++){
if (j == c){
rtn[j] = b;
j += 1;
}
rtn[j] = a[i];
j += 1;
}
return rtn;
}
public static String[] insert(String[] a, String[] b, int c){ //Insert strings
if (c < 0 || c > a.length || b.length == 0){return a;}
String[] rtn = new String[a.length+b.length];
int j=0;
for (int i=0; i<a.length; i++){
if (j == c){
for (int k=0; k<b.length; k++){
rtn[j+k] = b[k];
}
j += b.length;
}
rtn[j] = a[i];
j += 1;
}
return rtn;
}
public static String[][] insert(String[][] a, String[][] b, int c){ //Insert strings
if (c < 0 || c > a.length || b.length == 0){return a;}
String[][] rtn = new String[a.length+b.length][b.length];
int j=0;
for (int i=0; i<a.length; i++){
if (j == c){
for (int k=0; k<b.length; k++){
rtn[j+k] = b[k];
}
j += b.length;
}
rtn[j] = a[i];
j += 1;
}
return rtn;
}
public String[] fill(String[] a, String b){ //Fill an array with something
String[] rtn = a;
for (int i=0; i<a.length; i++){rtn[i] = b;}
return rtn;
}
}