Files
HW-02-git-and-java-practice/src/main/java/MainExercises.java
T
2026-06-04 12:33:00 +03:30

75 lines
2.6 KiB
Java

import java.util.*;
public class MainExercises {
// اصلاح متد برای ایجاد مثلث به صورت آرایه دو بعدی Jagged
public char[][] generateTriangle(int n) {
char[][] triangle = new char[n][];
for (int i = 0; i < n; i++) {
triangle[i] = new char[i + 1];
for (int j = 0; j <= i; j++) {
// شرط قرارگیری ستاره: ستون اول، ستون آخر یا ردیف آخر
if (j == 0 || j == i || i == n - 1) {
triangle[i][j] = '*';
} else {
triangle[i][j] = ' ';
}
}
}
return triangle;
}
// متد پیمایش مارپیچی ماتریس
public int[] spiralTraversal(int[][] matrix) {
if (matrix == null || matrix.length == 0) return new int[0];
int rows = matrix.length;
int cols = matrix[0].length;
int[] result = new int[rows * cols];
int top = 0, bottom = rows - 1, left = 0, right = cols - 1;
int index = 0;
while (top <= bottom && left <= right) {
for (int i = left; i <= right; i++) result[index++] = matrix[top][i];
top++;
for (int i = top; i <= bottom; i++) result[index++] = matrix[i][right];
right--;
if (top <= bottom) {
for (int i = right; i >= left; i--) result[index++] = matrix[bottom][i];
bottom--;
}
if (left <= right) {
for (int i = bottom; i >= top; i--) result[index++] = matrix[i][left];
left++;
}
}
return result;
}
// متد افراز عدد (Integer Partitioning)
public int[][] intPartitions(int n) {
List<List<Integer>> results = new ArrayList<>();
generatePartitions(n, n, new ArrayList<>(), results);
int[][] res = new int[results.size()][];
for (int i = 0; i < results.size(); i++) {
res[i] = results.get(i).stream().mapToInt(Integer::intValue).toArray();
}
return res;
}
private void generatePartitions(int target, int max, List<Integer> current, List<List<Integer>> results) {
if (target == 0) {
results.add(new ArrayList<>(current));
return;
}
for (int i = Math.min(target, max); i >= 1; i--) {
current.add(i);
generatePartitions(target - i, i, current, results);
current.remove(current.size() - 1);
}
}
public static void main(String[] args) {
// تست دستی در صورت نیاز
}
}