Skip to content

Commit ec77a0b

Browse files
committed
Initial Traverse array task
1 parent f921597 commit ec77a0b

File tree

2 files changed

+87
-55
lines changed

2 files changed

+87
-55
lines changed

src/II/_2_Traverce/Solver.java

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package II._2_Traverce;
2+
3+
public class Solver {
4+
static int n = 5;
5+
static int curr = 1;
6+
static int[][] array = new int[n+2][n+2];
7+
8+
public static void main() {
9+
traverseFirstWay(0,1,1);
10+
printMatrix();
11+
System.out.println();
12+
13+
traverseSecondWay(1,1);
14+
printMatrix();
15+
System.out.println();
16+
17+
traverseThirdWay(1);
18+
printMatrix();
19+
System.out.println();
20+
}
21+
22+
public static void printMatrix() {
23+
for (int i = 1; i <= n; i++,System.out.println())
24+
for (int j = 1; j <= n; j++)
25+
System.out.printf("%3d",array[i][j]);
26+
}
27+
28+
public static void traverseFirstWay(int line, int i, int j) {
29+
int ii,jj;
30+
int d = n - (int)Math.round((float)line / 2 + 0.25);
31+
if (d == 0) return;
32+
switch (line % 4) {
33+
case 0:
34+
for (jj = j; jj < j + d; jj++) array[i][jj] = curr++;
35+
traverseFirstWay(++line, ++i, --jj); break;
36+
case 1:
37+
for (ii = i; ii < i + d; ii++) array[ii][j] = curr++;
38+
traverseFirstWay(++line,--ii,--j); break;
39+
case 2:
40+
for (jj = j; jj > j - d; jj--) array[i][jj] = curr++;
41+
traverseFirstWay(++line,--i,++jj); break;
42+
case 3:
43+
for (ii = i; ii > i - d; ii--) array[ii][j] = curr++;
44+
traverseFirstWay(++line, ++ii, ++j); break;
45+
}
46+
}
47+
48+
public static void traverseSecondWay(int row, int col) {
49+
array[col][row] = curr++;
50+
if (row == n && col == n) return;
51+
52+
if ((row + col) % 2 == 0)
53+
if (row == n)
54+
traverseSecondWay(row, ++col); // right
55+
else
56+
if (col == 1)
57+
traverseSecondWay(++row, col); // down
58+
else
59+
traverseSecondWay(++row, --col); // down left
60+
else
61+
if (col == n)
62+
traverseSecondWay(++row, col); // down
63+
else
64+
if (row == 1)
65+
traverseSecondWay(row, ++col); // right
66+
else
67+
traverseSecondWay(--row, ++col); // up right
68+
}
69+
70+
public static void traverseThirdWay(int count) {
71+
if (count > n) return;
72+
else
73+
if (count % 2 == 0) {
74+
for (int i = n; i > 0; i--) array[i][count] = curr++;
75+
traverseThirdWay(++count);
76+
}
77+
else {
78+
for (int i = 1; i <= n; i++) array[i][count] = curr++;
79+
traverseThirdWay(++count);
80+
}
81+
}
82+
}

src/Main.java

Lines changed: 5 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,11 @@
1-
import java.util.Collections;
2-
import java.util.LinkedList;
3-
import java.util.List;
4-
import java.util.stream.Collectors;
5-
6-
import static java.lang.System.out;
7-
81
public class Main {
92

103
public static void main(String[] args) {
11-
// Task A - create an array
12-
int[] array = new int[] {5,2,1,4,2,3};
13-
14-
// Task B - create List, based on the array created above
15-
List<Integer> list = new LinkedList<>();
16-
for (int num: array)
17-
Collections.addAll(list,num);
18-
printList("Initial list:",list);
19-
20-
// C - sort ascending
21-
Collections.sort(list);
22-
printList("Sorted ascending:",list);
23-
24-
// D - sort descending
25-
Collections.sort(list, (n1, n2) -> n2 - n1);
26-
printList("Sorted descending:",list);
27-
28-
// Task E - shuffle
29-
Collections.shuffle(list);
30-
printList("Shuffled:",list);
31-
32-
// Task F - cyclic shirt
33-
Collections.rotate(list,1);
34-
printList("Shifted:",list);
35-
36-
// Task G - unique only
37-
list = list.stream().distinct().collect(Collectors.toList());
38-
printList("Distinct:",list);
39-
40-
// Task H - duplicates only
41-
// Firstly, Add few duplicates
42-
Collections.addAll(list,2,2,2,3,3,5);
43-
// Secondly, remove unique
44-
List<Integer> finalList = list;
45-
list = list.stream().filter(elem -> finalList.lastIndexOf(elem) > finalList.indexOf(elem)).collect(Collectors.toList());
46-
printList("Duplicates only:",list);
47-
48-
// Task I - convert list to array
49-
Integer[] finalArray = list.stream().toArray(Integer[]::new);
50-
out.print("The final array: ");
51-
for (Integer num : finalArray)
52-
out.print(num + " ");
53-
}
4+
II._1_Pascal.Solver.main();
5+
II._2_Traverce.Solver.main();
546

55-
private static void printList(String task, List<Integer> list) {
56-
out.print(task + " ");
57-
for(Integer number : list)
58-
out.print(number + " ");
59-
out.println();
7+
III._1_Collections.Solver.main();
8+
III._2_Primes.Solver.main();
9+
III._3_Comparator.Solver.main();
6010
}
6111
}

0 commit comments

Comments
 (0)