fork download
  1. //
  2. // 年俸1000万らしい・・w
  3. //
  4. open System
  5.  
  6. let rec create s = function
  7. | 0 -> [s]
  8. | n -> [ for c in "AGCT" do yield! create (s + string c) (n - 1) ]
  9. let solve n = create "" n |> List.filter (fun s -> s.Contains "AAG")
  10.  
  11. solve 7 |> List.length |> printfn "%d"
  12.  
  13. let solve2 n = [
  14. for i in 1 .. pown 4 n do
  15. let s = String [| for n in 0..n-1 -> "AGCT".[(i>>>n*2)%4] |]
  16. if s.Contains "AAG" then yield s ]
  17.  
  18. solve2 7 |> List.length |> printfn "%d"
  19.  
  20. let solve3 n =
  21. let ss = ref [""]
  22. for _ in 1 .. n do
  23. ss := [ for c in "AGCT" do for s in !ss -> s + string c]
  24. !ss |> List.filter(fun s -> s.Contains "AAG")
  25.  
  26. solve3 7 |> List.length |> printfn "%d"
Success #stdin #stdout 0.27s 14016KB
stdin
Standard input is empty
stdout
1268
1268
1268