-
Notifications
You must be signed in to change notification settings - Fork 8
Rust Übungen
Bevor ihr anfangt, stellt sicher, dass ihr eine richtige Arbeitsumgebung habt! Richtet Sublime richtig ein, siehe Sublime Text!
Ihr könnt alle Aufgaben in je einer Datei lösen. Diese Datei müsst ihr dann, wie vorgestellt, mit rustc
compilieren.
Schreibt eine Funktion collatz
mit Integer Parameter, die die Anzahl der Iterationen vom Collatz Algorithmus mit dem Parameter zurückgibt. Im Hauptprogramm lasst euch die Zahlen 1 bis 20 mit der Anzahl ihrer Iterationen ausgeben.
Schreibt eine Funktion, die den betreuenden Tutor einer Praktikumsgruppe zurückgibt. Also Funktionsparameter: Die Gruppe (...). Rückgabewert: Der Name des Tutors. Aber Gruppe 3 hat doch gar keinen betreuenden Tutor...?
Denkt über die zu verwendenden Typen nach und legt bei Bedarf selber Typen an.
Hier sollt ihr einen Typ Car
erstellen, welcher einige Funktionen eines Autos simuliert. Ich weiß - super realitätsnahes Beispiel.
Man soll ein neues Car
Objekt mit der Methode new
erstellen können. In dieser Methode wird das Auto vollgetankt (das Auto hat ein 50l Tank). Es soll aber eine andere Methode zur Erstellung eines Autos geben, bei der man angeben kann, wie viel Benzin am Anfang im Tank ist.
Das Auto besitzt 4 Gänge: Rückwärts und Leerlauf, sowie den ersten und zweiten Gang. Der Typ soll jetzt über eine Methode switch_gear
verfügen, welche den Gang des Auto Objekts wechselt. Außerdem gibt es eine Methode drive
, die das Runterdrücken des Gaspedals simuliert. Wenn das Auto im Leerlauf steht, passiert nichts, sonst fährt das Auto 10 bzw. 20 Meter vorwärts (erster und zweiter Gang) oder 10 Meter rückwärts (Rückwärtsgang). Der Typ Car´ soll auch die Entfernung vom Ausgangspunkt speichern. Außerdem wird bei
drive` immer 3 Liter Benzin verbraucht.
Zum Schluss brauchen wir nur noch zwei Methoden, die uns das noch vorhandene Benzin und die zurückgelegte Strecke zurückliefern.
Werdet ein bisschen mit der Standardlibrary vertraut...
Ihr sollt das Sieb des Eratosthenes implementieren. Das funktionierte so:
Man hält sich eine Liste für alle Zahlen von 2 bis N vor.
Mit der Variable t von 2 bis N:
"Streiche" alle Vielfachen von t aus der Liste
Alle Zahlen in der Liste sind jetzt Primzahlen
Überlegt euch, welche Datenstruktur ihr verwenden solltet, und implementiert diesen Algorithmus für den Bereich 2 bis 100.
Sonderaufgabe: Ihr wollt jetzt für alle Nicht-Primzahlen den kleinsten Teiler speichern, sodass er sehr schnell abrufbar ist. Was speichert ihr jetzt in der Datenstruktur? Verändert den Algorithmus.
Schreibt eine Funktion, welche zwei Parameter eines "beliebigen" Types nimmt und dann die Summe UND das Produkt zurück gibt.
Erstellt einen Typen, der das Trait Iterator
aus der Standardbibliothek imlpementiert. Euer Typ soll ein Iterator über die Zahlen der Fibonacci Reihe sein. Also bei diesem Code:
for i in YourType::new().take(20) {
println!("{}", i);
}
...sollen die ersten 20 Fibonacci Zahlen ausgegeben werden.
Erstellt einen Typen, Swagger
, der einen anderen Typen, der Display
implementiert, in sich speichert. Euer Typ soll selber Display
implementieren: Wenn er ausgegeben wird, soll er erst "#swag", dann die Ausgabe des in sich gespeicherten Objektes und dann "#yolo" ausgeben.