Skip to content

Instantly share code, notes, and snippets.

View CarstenKoenig's full-sized avatar

Carsten König CarstenKoenig

View GitHub Profile
@CarstenKoenig
CarstenKoenig / AnotherRusMult.fs
Last active May 26, 2017 13:51
Russische Bauernmultiplikation / Ancient Egyptian Multiplication
// Algorithmus
// (DE) http://ccd-school.de/coding-dojo/function-katas/russische-bauernmultiplikation/
// (EN) https://en.wikipedia.org/wiki/Ancient_Egyptian_multiplication
let rec mul a b =
match a with
| 1 -> b
| a when a <= 0 -> 0
| a when x % 2 = 0 -> mul (a/2) (b*2)
| a -> mul (a/2) (b*2) + b

Beschreibung der Kata

Ziel dieser Kata ist es ein Programm zu schreiben, dass Wechselgeld berechnet. Dazu wird dem Programm eine Liste mit Münz-Werte (zum Beispiel [1, 2, 5, 10, 20, 50, 100, 200] für unsere üblichen EUR-Münzen) und der zu wechselnde Betrag übergeben. Das Programm soll darauf hin eine Liste von Anzahl/Münzwert-Paaren ausgeben, so dass der Betrag korrekt gewechselt wird und die Gesamtzahl der herausgegebenen Münzen minimiert wird.

Beispiel

Es soll 2,53 EUR gewechselt werden. Sowohl "1x2EUR, 1x50ct und 1x2ct, 1x1ct" als auch "2x1EUR, 2x20ct, 1x10ct, 3x1ct" würden den Betrag korrekt wechseln, aber die erste Möglichkeit gibt 4 Münzen zurück, während die Alternative 8 Münzen ausgeben würde. Das Programm soll in diesem Fall die erste Alternative zurückgeben (da diese hier die Optimallösung darstellt).

sei "greedy"...