/**
* Java. Level 1. Lesson 2. Example of homework
*
* @author Sergey Iryupin
* @version dated Sep 17, 2018
*/
import java.util.Arrays;
import java.util.Scanner;
class HW2Lesson {
public static void main(String[] args) {
// simple tasks (1..4)
invertArray();
System.out.println(Arrays.toString(fillArray()));
System.out.println(Arrays.toString(
changeArray(new int[]{1, 5, 3, 2, 11, 4, 5, 2, 4, 8, 9, 1})));
fillDiagonal(5);
// tasks of increased complexity (5..7)
// find min and max (5)
System.out.println(Arrays.toString(
findMinMax(new int[]{1, 5, 3, 2, 11, 4, 5, 2, 4, 8, 9, 1})));
// check balance (6)
int[][] test = {{1, 1, 1, 2, 1}, {2, 1, 1, 2, 1}, {10, 10}};
for (int i = 0; i < test.length; i++)
System.out.println(
Arrays.toString(test[i]) + " " + checkBalance(test[i]));
// shift array (7)
System.out.println(Arrays.toString(
shiftArray(new int[]{1, 2, 3, 4, 5}, 2)));
System.out.println(Arrays.toString(
shiftArray(new int[]{1, 2, 3, 4, 5}, -3)));
// console calculator (extra)
calcConsole();
}
/**
* 1. , 0 1.
* : [1, 1, 0, 0, 1, 0, 1, 1, 0, 0].
* 0 1, 1 0
*/
static void invertArray() {
// init array directly
int[] array = {1, 1, 0, 0, 1, 0, 1, 1, 0, 0};
// init array using random()
//int[] array = new int[10];
//for (int i = 0; i < array.length; i++)
// array[i] = (int)(Math.random() + 0.5);
System.out.println(Arrays.toString(array));
// invert
for (int i = 0; i < array.length; i++)
array[i] = 1 - array[i];
//array[i] = array[i] ^ 1;
//array[i] = (array[i] == 1)? 0 : 1;
System.out.println(Arrays.toString(array));
}
/**
* 2. 8.
* 0 3 6 9 12 15 18 21
*/
static int[] fillArray() {
int[] array = new int[8];
for (int i = 0, j = 0; i < array.length; i++, j += 3)
array[i] = j;
return array;
}
/**
* 3. [1, 5, 3, 2, 11, 4, 5, 2, 4, 8, 9, 1]
* , 6 2
*/
static int[] changeArray(int[] array) {
for (int i = 0; i < array.length; i++)
if (array[i] < 6)
array[i] *= 2;
return array;
}
/**
* 4. (
* ), (-)
*
*/
static void fillDiagonal(int size) {
int[][] matrix = new int[size][size];
for (int i = 0; i < size; i++) {
matrix[i][i] = 1;
matrix[i][size - i - 1] = 1;
}
System.out.println(Arrays.deepToString(matrix));
for (int i = 0; i < size; i++)
System.out.println(Arrays.toString(matrix[i]));
}
/**
* 5. **
*
*/
static int[] findMinMax(int[] array) {
int[] minmax = new int[2];
minmax[0] = minmax[1] = array[0];
for (int i = 1; i < array.length; i++) {
if (minmax[0] > array[i])
minmax[0] = array[i];
if (minmax[1] < array[i])
minmax[1] = array[i];
}
return minmax;
}
/**
* 6. ** ,
* , true
* , .
* :
* checkBalance([1, 1, 1, || 2, 1]) true
* checkBalance([2, 1, 1, 2, 1]) false
* checkBalance([10, || 10]) true
* ||,
*/
static boolean checkBalance(int[] array) {
if (array == null || array.length < 2)
return false;
int sumArray = 0, sumLeft = 0;
for (int i : array)
sumArray += i;
if ((sumArray == 0) && (sumArray % 2 != 0)) // by DSerov
return false;
for (int i = 0; i < array.length - 1; i++) {
sumLeft += array[i];
if (sumLeft*2 == sumArray)
return true;
}
return false;
}
/**
* 7. **** ,
* n ( , ),
* n .
*
*/
static int[] shiftArray(int[] array, int shift) {
if (array == null || array.length < 2
|| shift == 0 || shift % array.length == 0)
return array;
shift = shift % array.length; // optimization of the number of shifts
if (shift < 0)
shift += array.length; // by Gusar Mikhail
for (int cnt = 0; cnt < shift; cnt++) {
int tmp = array[array.length - 1];
for (int i = array.length - 1; i > 0; i--)
array[i] = array[i - 1];
array[0] = tmp;
}
return array;
}
/**
* 8. *****
*/
static void calcConsole() {
Scanner read = new Scanner(System.in);
System.out.println("Enter separated by space: Integer [+|-|*|/] Integer");
int first = read.nextInt();
String operator = read.next();
int second = read.nextInt();
switch(operator) {
case "+":
System.out.println("= " + (first + second));
break;
case "-":
System.out.println("= " + (first - second));
break;
case "*":
System.out.println("= " + (first * second));
break;
case "/":
if (second != 0)
System.out.println("= " + (first / second));
else
System.out.println("Error: Division by zero");
break;
default:
System.out.println("Error: Undefined operation");
}
}
}