From 7e87a3bec23cbea8d9dcdfbfbbf234036b6a1735 Mon Sep 17 00:00:00 2001 From: Sebastian Brosch Date: Mon, 13 May 2024 16:04:41 +0200 Subject: [PATCH] Vorlesung 4 / Aufgabe 5 --- S01-VL04-Aufgabe 5/Aufgabe.java | 73 --------------------------------- VL04/Aufgabe05/Aufgabe05.java | 54 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 73 deletions(-) delete mode 100644 S01-VL04-Aufgabe 5/Aufgabe.java create mode 100644 VL04/Aufgabe05/Aufgabe05.java diff --git a/S01-VL04-Aufgabe 5/Aufgabe.java b/S01-VL04-Aufgabe 5/Aufgabe.java deleted file mode 100644 index 1e214fb..0000000 --- a/S01-VL04-Aufgabe 5/Aufgabe.java +++ /dev/null @@ -1,73 +0,0 @@ -class Aufgabe { - public static void main(String[] args) { - final int RECHTS = 1; - final int LINKS = 0; - final int NUM_FROESCHE = 100000; - - // Neuer Frosch startet bei Feld 1. - int position = 1; - int position_max = 0; - - // Es gibt zwei Eimer in welchen ein Frosch landen kann. - // Eimer bei Index 0 ist der linke Eimer. - // Eimer bei Index 1 ist der rechte Eimer. - int[] eimer = {0, 0}; - - // Auf der Zahlengerade springt der aktuelle Frosch. - // Das Feld 0 ist bereits ein Eimer (der rechte Eimer). - // Wenn der Frosch den Index auf der linken Seite verlässt springt er in den linken Eimer. - int[] zahlengerade = new int[1000]; - - // Die Zahlengerade wird initialisiert. Am Anfang zeigen alle Felder nach rechts. - // 0 = Frosch springt nach links. - // 1 = Frosch springt nach rechts. - for(int i = 0; i < zahlengerade.length; i++) { - zahlengerade[i] = RECHTS; - } - - // Schleife mit welcher alle Frösche durchlaufen werden. - // Es ist immer nur ein Frosch auf der Zahlengerade unterwegs. - for(int anzahl_froesche = NUM_FROESCHE; anzahl_froesche > 0; anzahl_froesche--) { - position = 1; - - // Der Frosch bewegt sich so lange auf der Zahlengerade bis dieser in einen Eimer fällt. - // Es steht ein Eimer auf Index 0 und Index -1. - while(position > 0) { - - // Wenn der Frosch das Feld berüht ändert sich die Richtung des Felds. - zahlengerade[position] = (zahlengerade[position] == RECHTS) ? LINKS : RECHTS; - - // Je nach Richtung muss der Frosch jetzt springen. - if (zahlengerade[position] == RECHTS) { - position += 1; - - // Die maximale Position soll gespeichert werden. - if (position_max < position) { - position_max = position; - } - } else { - - // Der Frosch soll nach links springen. - // Er könnte jetzt in einen Eimer springen. - if (position == 1) { - - // Der Frosch springt in den linken Eimer. - eimer[0]++; - } else if (position == 2) { - - // Der Frosch springt in den rechten Eimer. - eimer[1]++; - } - - // Der Frosch springt nach links (evtl. in einen Eimer). - position -= 2; - } - } - } - - // Ausgabe der wichtigsten Informationen. - System.out.printf("Linker Eimer (Index -1): %d Frösche\n", eimer[0]); - System.out.printf("Rechter Eimer (Index 0): %d Frösche\n", eimer[1]); - System.out.printf("Maximale Position auf der Zahlengerade: %d\n", position_max); - } -} diff --git a/VL04/Aufgabe05/Aufgabe05.java b/VL04/Aufgabe05/Aufgabe05.java new file mode 100644 index 0000000..1cc7c52 --- /dev/null +++ b/VL04/Aufgabe05/Aufgabe05.java @@ -0,0 +1,54 @@ +package VL04.Aufgabe05; + +/** + * Vorlesung 4 / Aufgabe 5 + * + * @author Sebastian Brosch + */ +public class Aufgabe05 { + public static void main(String[] args) { + final int DIR_LEFT = 0; + final int DIR_RIGHT = 1; + final int NUM_FROGS = 100; + int[] numbersrow = new int[1000]; + int[] bucket = { 0, 0 }; + + int position = 1; + int position_max = position; + + for (int i = 0; i < numbersrow.length; i++) { + numbersrow[i] = DIR_RIGHT; + } + + for (int f = NUM_FROGS; f > 0; f--) { + position = 1; + + while (position > 0) { + numbersrow[position] = (numbersrow[position] == DIR_RIGHT) ? DIR_LEFT : DIR_RIGHT; + + if (numbersrow[position] == DIR_RIGHT) { + position++; + + if (position_max < position) { + position_max = position; + } + } else { + switch (position) { + case 1: + bucket[0]++; + break; + case 2: + bucket[1]++; + break; + } + + position -= 2; + } + } + } + + System.out.printf("Linker Eimer: %d Frösche\n", bucket[0]); + System.out.printf("Rechter Eimer: %d Frösche\n", bucket[1]); + System.out.printf("Maximale Position auf der Zahlengerade: %d\n", position_max); + } +}