skiminok: (Compas)
[personal profile] skiminok
В преддверии Google Code Jam 2010 решил поэкспериментировать, а как на F# пишутся короткие тулзы для простых задач. В соревнованиях такого уровня часто удобно использовать как минимум два языка: один типа Питона или любого другого скриптового - для коротких и простых задач, где важна скорость кодинга, и второй типа С++/C#/Java - для серьезных вычислений. В прошлом году я все писал на C#, а сейчас решил, что овчинка часто не стоит выделки.

Результат приятно удивил - действительно просто, быстро и удобно.
Вот код задачи А из прошлогоднего Qualification:

open System

open System.IO

open System.Text.RegularExpressions

 

let codeJam =

    use reader = new StreamReader("A.in")

    use writer = new StreamWriter("A.out")

    let readLine _ = reader.ReadLine()

 

    let matches regex s = Regex.IsMatch(s, regex)

    let countWhere p = List.filter p >> List.length

 

    let line = reader.ReadLine().Split(' ')

    let D, N = int line.[1], int line.[2]

    let words = List.init D readLine

 

    List.init N readLine

    |> List.map (fun s -> s.Replace('(', '[').Replace(')', ']'))

    |> List.map (fun re -> countWhere (matches re) words)

    |> List.iteri (fun i ans -> writer.WriteLine("Case #{0}: {1}", i+1, ans))

Profile

skiminok: (Default)
skiminok

Most Popular Tags

July 2011

S M T W T F S
     12
3456789
10111213141516
17181920212223
242526272829 30
31