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