Skip to content
Snippets Groups Projects
Commit ebd81c14 authored by Lukas Messmer's avatar Lukas Messmer
Browse files

Add additional weeks

parent 2dd4c473
No related branches found
No related tags found
No related merge requests found
public class Rectangle {
private final Point topLeft;
private final Point bottomRight;
public Rectangle(Point topLeft, Point bottomRight) {
this.topLeft = topLeft;
this.bottomRight = bottomRight;
}
public Rectangle stretch(double factor) {
return null;
}
public Rectangle shrink(double factor) {
return null;
}
public boolean encloses(Rectangle other) {
return false;
}
public boolean overlaps(Rectangle other) {
return false;
}
public boolean isSame(Rectangle other) {
return topLeft.isSame(other.topLeft) && bottomRight.isSame(other.bottomRight);
}
}
<p>Die Klasse <code>Rectangle</code> bildet ein Rechteck in einem Koordinatensystem ab.
Dafür wird mit Hilfe der Klasse <code>Point</code> der obere Linke und der untere Reckte
Punkt gespeichert.</p>
<p>Erweitern Sie die Klasse mit folgenden Methoden:</p>
<ul>
<li><code>Rectangle stretch(int factor)</code><ul>
<li>Gibt ein neues Rechteck zurück, das die Länge und Breite mit einem Faktor gestreckt hat (aber am gleichen oberen linken Punkt ist).</li>
</ul>
</li>
<li><code>Rectangle shrink(int factor)</code><ul>
<li>Gibt ein neues Rechteck zurück, das die Länge und Breite mit einem Faktor geteilt hat (aber am gleichen oberen linken Punkt ist).</li>
</ul>
</li>
<li><code>boolean encloses(Rectangle other)</code><ul>
<li>Prüft, ob dieses Rechteck ein anderes beinhaltet (oder genau gleich ist).</li>
</ul>
</li>
<li><code>boolean overlaps(Rectangle other)</code><ul>
<li>Test, ob dieses und ein anderes Rechteck überlappen. (Nur Berühren am Rand ist noch kein Überlappen.)</li>
</ul>
</li>
</ul><p>Die <code>Point</code> Klasse sieht wiefolgt aus:</p>
<pre><code><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Point</span> </span>{
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">int</span> x, y;
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Point</span><span class="hljs-params">(<span class="hljs-keyword">int</span> x, <span class="hljs-keyword">int</span> y)</span> </span>{
<span class="hljs-keyword">this</span>.x = x;
<span class="hljs-keyword">this</span>.y = y;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getX</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> x;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getY</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> y;
}
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">boolean</span> <span class="hljs-title">isSame</span><span class="hljs-params">(Point other)</span> </span>{
<span class="hljs-keyword">return</span> x == other.x &amp;&amp; y == other.y;
}
}
</code></pre>
public class StringRepeater {
static String repeat(String toRepeat, String times) {
return null;
}
}
<p>Erstellen Sie die Funktion <code>StringRepeater.repeat(String, String)</code>, welche einen <code>String toRepeat</code> sowie einen weiteren <code>String times</code> für die Anzahl Repetitionen als Eingabe entgegennimmt.</p>
<p>Als Resultat soll die Funktion den zusammengehängten <code>String</code> nach folgenden Kriterien zurückgeben:</p> Die Funktion soll mittels der Länge des <code>times</code> Arguments die Anzahl der Repetitionen bestimmen:</p>
<ul>
<li><code>repeatString(&quot;hallo&quot;, &quot;i&quot;)</code> ergibt 1mal &quot;hallo&quot;: <code>&quot;hallo&quot;</code>.</li>
<li><code>repeatString(&quot;welt&quot;, &quot;ii&quot;)</code> ergibt 2mal &quot;welt&quot;: <code>&quot;weltwelt&quot;</code>.</li>
<li><code>repeatString(&quot;hallo&quot;, &quot;iiiii&quot;)</code> ergibt 5mal &quot;hallo&quot;: <code>&quot;hallohallohallohallohallo&quot;</code>.</li>
<li><code>repeatString(&quot;hallo&quot;, &quot;&quot;)</code> ergibt 0mal &quot;hallo&quot;: <code>&quot;&quot;</code>.</li>
</ul><p>Das <code>times</code> Argument nimmt Kleinbuchstaben und Grossbuchstaben entgegen. Wird als <code>times</code> an der entsprechenden Wiederholungspostition ein Kleinbuchstaben übergeben, wird der String mittels startenden Grossbuchstaben ergänzt:</p>
<ul>
<li><code>repeatString(&quot;hallo&quot;, &quot;I&quot;)</code> ergibt 1mal (grossgeschrieben) <code>&quot;hallo&quot;</code>: <code>&quot;Hallo&quot;</code>.</li>
<li><code>repeatString(&quot;welt&quot;, &quot;zZ&quot;)</code> ergibt an der 1. Position <code>&quot;welt&quot;</code> kleingeschrieben, an der 2. Position <code>&quot;Welt&quot;</code> grossgeschrieben: <code>&quot;weltWelt&quot;</code>.</li>
<li><code>repeatString(&quot;hallo&quot;, &quot;iZiAB&quot;)</code> ergibt <code>&quot;halloHallohalloHalloHallo&quot;</code>.</li>
</ul><p>Das <code>times</code> Argument nimmt ausserdem Leerzeichen entgegen. Die geltenden Regeln werden wie folgt ergänzt:
Ungültige Formatierungszeichen zählen als Leerzeichen; das Leerzeichen besagt, dass an der angegebenen Position ein Leerzeichen platziert wird.</p>
<ul>
<li><code>repeatString(&quot;welt&quot;, &quot;a I&quot;)</code> ergibt an der 1. Position &quot;welt&quot; kleingeschrieben, an der 2. Position ein Leerzeichen und an der 3. Position &quot;Welt&quot; grossgeschrieben: <code>&quot;welt Welt&quot;</code>.</li>
<li><code>repeatString(&quot;Hallo&quot;, &quot;b I c ID&quot;)</code> ergibt <code>&quot;hallo Hallo hallo HalloHallo&quot;</code>.</li>
<li><code>repeatString(&quot;hallo&quot;, &quot;e_f-G&quot;)</code> ergibt <code>&quot;hallo hallo Hallo&quot;</code>.</li>
</ul>
public class FizzBuzz {
public static String[] generate(int numOfElements) {
return null;
}
}
<p>Erstellen Sie eine Methode <code>FizzBuzz.generate(int)</code>, welche einen Array von Strings (<code>String[]</code>) aufgrund der folgenden Bedingungen zurückgibt:</p> <p>Der parametrisierbare <code>int</code> beschreibt die Anzahl Elemente, welche die Methode <code>generate(int)</code> erstellt.
Die einzelnen Elemente (an der <code>i</code>. Stelle) werden nach folgendem Muster generiert:</p>
<p>Beispiele:</p>
<ul>
<li>Falls <code>i</code> dividierbar durch 3 <em>und</em> 5 ist, wird das Element <code>[i]</code> mit <code>FizzBuzz</code> gefüllt.</li>
<li>Falls <code>i</code> nur durch 3 dividierbar ist, wird das Element <code>[i]</code> mit <code>Fizz</code> gefüllt.</li>
<li>Falls <code>i</code> nur durch 5 dividierbar ist, wird das Element <code>[i]</code> mit <code>Buzz</code> gefüllt.</li>
<li>Bei allen anderen <code>i</code>-Werten wird das Element <code>[i]</code> mit dem von Wert <code>i</code> (als String) befüllt.</li>
</ul><p>Falls die parametrisierte Nummer ungültig ist, wird eine <code>IllegalArgumentException</code> geworfen.
Es werden Arrays mit maximal 10000 Einträgen generiert.</p>
<p>Beispiele:</p>
<ul>
<li><code>FizzBuzz.generate(0)</code> resultiert in einer <code>IllegalArgumentException</code>.</li>
<li><code>FizzBuzz.generate(10001)</code> generiert einen Array mit 10000 Einträgen.</li>
</ul><p>Mittels einer negativen Parametrisierung wird die FizzBuzz Logik gedreht:</p>
<ul>
<li>Falls <code>i</code> dividierbar durch 3 <em>und</em> 5 ist, wird das Element <code>[i]</code> mit <code>BuzzFizz</code> gefüllt.</li>
<li>Falls <code>i</code> nur durch 3 dividierbar ist, wird das Element <code>[i]</code> mit <code>Buzz</code> gefüllt.</li>
<li>Falls <code>i</code> nur durch 5 dividierbar ist, wird das Element <code>[i]</code> mit <code>Fizz</code> gefüllt.</li>
</ul>
public class Arrays {
public static int[] increment(int[] input, int start, int end) {
return null;
}
}
<p>Der Inhalt eines Arrays soll in einem konfigurierbaren Bereich inkrementiert werden.</p> <p>Programmieren Sie eine Methode <code>Arrays.increment(int[], int, int)</code>, welche Elemente aus einem Unterbereich des parametrisierten <code>int</code>-Arrays erhöht. Dabei soll die Erhöhung selbst nach jeder Applikation um 1 inkrementiert werden. </p> <p>Der parametrisierte <code>int</code>-Array soll aber nicht modifiziert werden; es wird jeweils ein neuer Array mit den neuen Werten zurückgegeben. Werte, welche <em>nicht</em> in den konfigurierten Unterbereich fallen, werden unter Verwendung des Ursprungsindex ins Resultat kopiert.</p> <p>Parametrisierung der <code>increment(int[], int, int)</code>-Methode:</p> <ul> <li><code>int[]</code> definiert den Array mit den zu kopierenden/erhöhenden Werten.</li> <li>Der erste <code>int</code> steht für den Start-Index (inklusive), an welchem mit Inkrementieren begonnen wird.</li> <li>Der zweite <code>int</code> steht für den letzten Index (inklusive), an welchem die im Array enthaltene Zahl inkrementiert wird.</li> </ul> <p>Beispiele für <code>int</code> &gt; 0:</p> <ul> <li>Falls <code>[0, 0]</code> und Start=<code>0</code>, Ende=<code>1</code> übergeben wurden, resultiert <code>[(0 + 1), (0 + 2)]</code> = <code>[1, 2]</code>.</li> <li>Falls <code>[1, 2, 3, 4]</code> und Start=<code>2</code>, Ende=<code>3</code> übergeben wurden, resultiert <code>[1, 2, (3 + 1), (4 + 2)]</code> = <code>[1, 2, 4, 6]</code>.</li> <li>Falls <code>[-1, -2, -3, -4]</code> und Start=<code>1</code>, Ende=<code>3</code> übergeben wurden, resultiert <code>[-1, (-2 + 1), (-3 + 2), (-4 + 3)]</code> = <code>[-1, -1, -1, -1]</code>. </li> </ul> <p>Falls ein ungültiger Bereich übergeben wurde, wird eine <code>IllegalArgumentException</code> geworfen.</p> <p>Beispiele:</p> <ul> <li><code>Arrays.increment(null, 1, 2)</code> resultiert in einer <code>IllegalArgumentException</code>.</li> <li><code>Arrays.increment(new int[] { 1, 2 }, -1, 2)</code> resultiert in einer <code>IllegalArgumentException</code>.</li> <li><code>Arrays.increment(new int[] { 2, 1 }, 1, 0)</code> resultiert in einer <code>IllegalArgumentException</code>.</li> </ul> <p>Falls ein Bereich mit gleichen Start- und End-Indexen übergeben werden (z.B. <code>increment(input, 5, 5)</code>) erfolgt die Inkrementierung auf sämtlichen Indexes, startend mit der angegebenen Nummer:</p> <ul> <li><code>Arrays.increment(new int[] { 2, 3 }, 0, 0)</code> resultiert in <code>[(2 + 0), (3 + 1)]</code> = <code>[2, 3]</code>.</li> <li><code>Arrays.increment(new int[] { 2, 3 }, 5, 5)</code> resultiert in <code>[(2 + 5), (3 + 6)]</code> = <code>[7, 9]</code>.</li> <li><code>Arrays.increment(new int[] { 2, 3 }, -1, -1)</code> resultiert in <code>[(2 + {-1}]), (3 + {-1 + 1})]</code> = <code>[1, 3]</code>.</li> </ul>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment