Re: Project Euler Solutions in F#
От: Пельмешко Россия blog
Дата: 05.06.09 13:40
Оценка: :)
Здравствуйте, Димчанский, Вы писали:
Д>Пинайте сколько угодно, приемлю любую критику.

Я нисколько не отношусь к ФЯ, стало просто интересно тоже попробовать чё-нить написать...
Задание 4 у меня вроде проще получилось, без строк, с рекурсией, на глаз с такой же скоростью:
let rec dig (v, i) = if i = 0 then v % 10 else dig(v/10, i-1)

let isPoly x =
    let rec count (v, n) =
        if v < 10 then n
        else count (v/10, n+1)
    let c = count (x, 0)
    Seq.for_all (fun i -> dig(x, i) = dig(x, c-i)) { 0 .. c / 2 }

let problem4 min max =
    seq { for i in max .. -1 .. min do
          for j in i .. -1 .. min do 
          yield (i * j) }
    |> Seq.filter isPoly
    |> Seq.max
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.