📚 The CoCalc Library - books, templates and other resources
cocalc-examples / martinthoma-latex-examples / presentations / Programmieren-Tutorium / Tutorium-04 / Euler28.java
132930 viewsLicense: OTHER
public class Euler28 {1private static void printArray(int[][] spiral, int N) {2for (int i = 0; i < N; i++) {3for (int j = 0; j < N; j++) {4System.out.print(spiral[i][j] + " ");5}6System.out.println("");7}8}910private static int getSum(int[][] array, int N) {11int sum = 0;12// Summe berechnen13for (int i = 0; i < N; i++) {14sum += array[i][i]; // Diagonale 1, links oben nach rechts unten15sum += array[N - 1 - i][i]; // Diagonale 2, rechts oben nach links16// unten17}18sum -= 1; // die 1 liegt auf beiden Diagonalen19return sum;20}2122enum Direction {23RECHTS, UNTEN, OBEN, LINKS24}2526public static void main(String[] args) {27final int N = 5;2829// initialise variables30int[][] spiral = new int[N][N];31Direction direction = Direction.RECHTS;32int posX = N / 2;33int posY = N / 2;34int steps = 1;35int number = 1;3637// fill array with spiral values38while (number <= N * N) {39for (int j = 0; j < steps; j++) {4041spiral[posX][posY] = number;4243switch (direction) {44case RECHTS:45posX++;46break;47case UNTEN:48posY++;49break;50case LINKS:51posX--;52break;53case OBEN:54posY--;55break;56}5758number++;59if (number > N * N) {60break;61}62}6364switch (direction) {65case RECHTS:66direction = Direction.UNTEN;67break;68case UNTEN:69direction = Direction.LINKS;70steps++;71break;72case LINKS:73direction = Direction.OBEN;74break;75case OBEN:76direction = Direction.RECHTS;77steps++;78break;79}80}8182printArray(spiral, N);83System.out.println("Diagonal-Summe: " + getSum(spiral, N));84}85}868788