In dieser Herausforderung erhalten Sie vier verschiedene, aber etwas verwandte Aufgaben, die auf eine bestimmte Art und Weise gelöst werden müssen. Zuerst erkläre ich die Aufgaben, dann folgt eine Erklärung, wie Sie sie lösen müssen.
Ihr Code sollte für alle vier Aufgaben zwei positive Ganzzahlen als Eingabe verwenden: n,m
wobei n<m
. Alle Aufgaben müssen in derselben Sprache gelöst werden. Die Ausrichtung der Matrizen ist optional (n-mal-m kann als "n Zeilen, m Spalten" oder "n Spalten, m Zeilen" interpretiert werden).
Aufgabe 1:
Erstellen (und Ausgabe / Druck) einen Vektor / Liste bestehend aus den Elementen: n, n+1 ... m-1, m
. Für n=4, m=9
sollten Sie also Folgendes ausgeben:4,5,6,7,8,9
.
Schritt 2:
Erstellen (und ausgeben / drucken) einer Matrix / eines Arrays / einer Liste von Listen (oder einer entsprechenden Liste) mit folgendem Aussehen:
n, n+1, ... m-1, m
n+1, n+2, ... m-1, m+1
...
n+m, n+m+1, ... 2*m-1, 2*m
Denn n=4, m=9
Sie sollten ausgeben:
4, 5, 6, 7, 8, 9
5, 6, 7, 8, 9, 10
...
13, 14, 15, 16, 17, 18
Schritt 3:
Erstellen (und ausgeben / drucken) einer n-mal-m-Multiplikationstabelle (in einem beliebigen geeigneten Format). Beispiel für n=4, m=9
:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
5 10 15 20
6 12 18 24
7 14 21 28
8 16 24 32
9 18 27 36
Schritt 4:
Ausgeben / Drucken eines Vektors / einer Liste, die aus den Elementen in der Multiplikationstabelle aus Aufgabe 3 besteht, sortiert in aufsteigender Reihenfolge, wobei doppelte Werte beibehalten werden. Für n=4, m=9
, sollten Sie die Ausgabe: 1, 2, 2, 3, 3, 4, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 12, 12, 12, 14, 15, 16, 16, 18, 18, 20, 21, 24, 24, 27, 28, 32, 36
.
Die Herausforderung:
Jetzt sind alle oben genannten Aufgaben ziemlich trivial. Die eigentliche Herausforderung hierbei ist, dass der Code für Aufgabe 2 mit dem Code für Aufgabe 1 beginnen muss, der Code für Aufgabe 3 mit dem Code für Aufgabe 2 beginnen muss und der Code für Aufgabe 4 mit dem Code für Aufgabe 3 beginnen muss.
Um es klarer zu machen:
Angenommen, der Code für Task 1 lautet (funktioniert in Octave):
@(n,m)(n:m)
Dann könnte Ihr Code für Aufgabe 2 lauten (funktioniert in Octave):
@(n,m)(n:m)+(0:m)'
Der Code für die Aufgabe Aufgabe 3 muss sein (funktioniert nicht in Octave):
@(n,m)(n:m)+(0:m)'"Code_for_task_3"
Und schließlich muss der Code für Task 4 sein (funktioniert nicht in Octave):
@(n,m)(n:m)+(0:m)'"Code_for_task_3""Code_for_task_4"
Dies ist Code-Golf , daher gewinnt die Einsendung mit dem kürzesten Code für Aufgabe 4 in jeder Sprache. Wie immer: Erklärungen sind ausdrücklich erwünscht.
0<n<m
oder 0<=n<m
?
>2;
sodass der Code der vorherigen Aufgabe im Wesentlichen als No-Op dargestellt wird?