mirror of
https://github.com/LukasKalbertodt/programmieren-in-rust.git
synced 2025-06-29 08:17:32 +02:00
Add sheet7
This commit is contained in:
24
aufgaben/sheet7/task2/README.md
Executable file
24
aufgaben/sheet7/task2/README.md
Executable file
@ -0,0 +1,24 @@
|
||||
Aufgabe 2: Diverse Funktionen
|
||||
=============================
|
||||
|
||||
In dieser Aufgabe sollen diverse kleinere Funktionen enstehen.
|
||||
In der Musterlösung habe ich immer irgendwie Iteratoren und Iterator-Methoden genutzt, also liegt es nahe, dass ihr es auch tun solltet.
|
||||
Wenn ihr natürlich meint, eine schönere Lösung ohne Iteratoren gefunden zu haben, könnt ihr sie eurem Tutor natürlich auch vorstellen ;-)
|
||||
|
||||
Versucht bei dieser Aufgabe alle Funktionen immer möglichst kurz (also mit wenigen Anweisungen) zu implementieren. Ihr müsst also auch nicht so sehr auf die Laufzeit eurer Algorithmen achten.
|
||||
|
||||
Euch ist ein Gerüst mit diversen Unittests gegeben. Die Testfälle erklären die Funktionen zusätzlich.
|
||||
|
||||
*Hinweis*: Es könnten für diese Aufgabe auch Funktionen direkt aus dem Modul `std::iter` sinnvoll sein.
|
||||
|
||||
### Funktionen
|
||||
|
||||
- `factorial()`: Berechnet `x!` für ein gegebenes `x`.
|
||||
|
||||
- `rot13()`: "Verschlüsselt" einen gegebenen String mit der derzeit besten [Verschlüsselungsmethode Rot13](https://de.wikipedia.org/wiki/ROT13). Die einzige noch bessere Verschlüsselung ist Rot26. Falls ihr meint, dass ihr es hinbekommt, könnt ihr zusätzlich auch gerne Rot26 implementieren...
|
||||
|
||||
- `is_palindrome()`: Testet ob ein gegebener String ein Palindrom ist.
|
||||
|
||||
- `used_chars_count()`: Gibt die Anzahl der unterschiedlichen Zeichen im übergebenen String zurück. Whitespace-Zeichen sollen aber nicht mitgezählt werden. Ihr könnt hier auch gerne eine passende collection aus `std` benutzen...
|
||||
|
||||
- `greatest_subsequencial_sum()`: Bekommt ein Array von ganzen Zahlen gegeben und sucht nun das Subarray (die Slice), bei dem die Summe aller Zahlen am größten unter allen möglichen Subarrays ist.
|
47
aufgaben/sheet7/task2/iters.rs
Executable file
47
aufgaben/sheet7/task2/iters.rs
Executable file
@ -0,0 +1,47 @@
|
||||
#[test]
|
||||
fn test_factorial() {
|
||||
assert_eq!(factorial(1), 1);
|
||||
assert_eq!(factorial(2), 2);
|
||||
assert_eq!(factorial(3), 6);
|
||||
assert_eq!(factorial(15), 1_307_674_368_000);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_is_palindrome() {
|
||||
assert!(is_palindrome("bob"));
|
||||
assert!(is_palindrome("anna"));
|
||||
assert!(is_palindrome("lagerregal"));
|
||||
|
||||
assert!(!is_palindrome("peter"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_greatest_subsequencial_sum() {
|
||||
let a = [1, 2, 39, 34, 20, -20, -16, 35, 0];
|
||||
assert_eq!(greatest_subsequencial_sum(&a), &a[0..5]);
|
||||
|
||||
let b = [-3, -9, -8, -34];
|
||||
assert_eq!(greatest_subsequencial_sum(&b), &[]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_rot13() {
|
||||
assert_eq!(rot13("hello"), "uryyb");
|
||||
assert_eq!(rot13("uryyb"), "hello");
|
||||
|
||||
assert_eq!(
|
||||
rot13("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),
|
||||
"NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm"
|
||||
);
|
||||
|
||||
assert_eq!(rot13("peter"), "crgre");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_used_letters() {
|
||||
assert_eq!(used_chars_count(&["hi", "ih gitt"]), 4);
|
||||
assert_eq!(used_chars_count(&["peter"]), 4);
|
||||
assert_eq!(used_chars_count(&["p e t e r", "barbara"]), 6);
|
||||
}
|
||||
|
||||
fn main() {}
|
Reference in New Issue
Block a user