Dieses Posting ist furchtbar inspiriert durch einen Eintrag von diesem Blog: https://zach.se/munchausen-numbers-and-how-to-find-them/
Wer mehr zu den Münchhausen-Zahlen wissen will, findet es genauer hier beschrieben: https://de.wikipedia.org/wiki/M%C3%BCnchhausen-Zahl
Kurz gesagt: 3^3 + 4^4 + 3^3 + 5^5 = 3435
In F# schreibt man das so, Zweck der Übung ist ja, das ich mich gerade ein wenig in F# reinschnuppere:
let specialpown (i:int64) = match i with | 0L -> 0L | _ -> pown i (int i) let digits (number:int64) = (string) number |> Seq.map(fun i -> ( (int64) ((int i) % 48) ) ) let isMunchhausen number = digits number |> Seq.map (fun i -> specialpown i) |> Seq.sum = number digits 1234L |> Seq.toList isMunchhausen 3435L seq { 1L..500000000L } |> Seq.filter isMunchhausen |> Seq.toList
F# interactive zeigt dann folgendes in der Konsole:
val specialpown : i:int64 -> int64 val digits : number:int64 -> seq<int64> val isMunchhausen : number:int64 -> bool val it : int64 list = [1L; 3435L; 438579088L]
Ja, und die einzigen (bisher) bekannten Münchhausenzahlen sind diese 3:
- 1
- 3.435
- 438.579.088