// For more information see https://aka.ms/fsharp-console-apps printfn "Hello from F#" // f - operator // init - initial value // predicate - filter condition let rec traverseNumberWithCondition' n f init predicate = match n with | 0 -> init | n -> let digit = n % 10 let newAcc = match predicate digit with | true -> f init digit | false -> init traverseNumberWithCondition' (n / 10) f newAcc predicate let traverseNumberWithCondition n f init predicate = traverseNumberWithCondition' n f init predicate [] let main argv = System.Console.WriteLine("Введите число:") let number = System.Console.ReadLine() |> int // Сумма четных цифр let isEven x = x % 2 = 0 let sumEven = traverseNumberWithCondition number (fun x y -> x + y) 0 isEven System.Console.WriteLine($"Сумма четных цифр: {sumEven}") // Произведение нечетных цифр let isOdd x = x % 2 <> 0 let mulOdd = traverseNumberWithCondition number (fun x y -> x * y) 1 isOdd System.Console.WriteLine($"Произведение нечетных цифр: {mulOdd}") // Максимальная цифра, большая 5 let isGreaterThan5 x = x > 5 let maxGreater5 = traverseNumberWithCondition number (fun x y -> max x y) 0 isGreaterThan5 System.Console.WriteLine($"Максимальная цифра > 5: {maxGreater5}") // Минимальная цифра из цифр, делящихся на 3 let isDivisibleBy3 x = x > 0 && x % 3 = 0 let minDivBy3 = traverseNumberWithCondition number (fun x y -> min x y) System.Int32.MaxValue isDivisibleBy3 System.Console.WriteLine($"Минимальная цифра, делящаяся на 3: {minDivBy3}") 0