Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. // Learn more about F# at http://fsharp.org
  2. // See the 'F# Tutorial' project for more help.
  3.  
  4. module problema1 =
  5.  
  6. open System
  7.  
  8. let contFraction (arr : int[]) =
  9.  
  10. let mutable arrAux = Array.map (fun x -> float x) arr
  11.  
  12. let mutable arrAuxRev = Array.rev arrAux
  13.  
  14. let mutable sum = 1.0 / arrAuxRev.[0]
  15.  
  16. for i = 1 to arrAuxRev.Length-2 do
  17. sum <- 1.0 / (sum+arrAuxRev.[i])
  18.  
  19. sum <- sum + arrAuxRev.[arrAuxRev.Length-1]
  20.  
  21. printfn "%f" sum
  22.  
  23. let mainP1() =
  24. contFraction [|3; 7; 15; 1; 292; 1|]
  25.  
  26. // ===================================
  27.  
  28. module problema1b =
  29.  
  30. let contFraction (arr : int[]) =
  31.  
  32. let mutable arrAux = Array.map (fun x -> float x) arr
  33.  
  34. let mutable arrAuxRev = Array.rev arrAux
  35.  
  36. let mutable sum = Array.reduce(fun x y -> y + 1.0 / x) arrAuxRev
  37.  
  38. printfn "%f" sum
  39.  
  40. let mainP1b() =
  41. contFraction [|3; 7; 15; 1; 292; 1|]
  42.  
  43. // ===================================
  44.  
  45. module problema3 =
  46.  
  47. let multiplyI (a:int[,]) (b:int[,]) =
  48. let n = a.GetLength(0)
  49. let m = a.GetLength(1)
  50. let p = b.GetLength(0)
  51. let q = b.GetLength(1)
  52. if (m <> p) then
  53. Array2D.zeroCreate 1 1
  54. else
  55. let c = Array2D.init n q (fun x y -> 0)
  56. for i=0 to n-1 do
  57. for j=0 to p-1 do
  58. for k=0 to m-1 do
  59. c.[i,j] <- c.[i,j] + a.[i,k] * b.[k,j]
  60. c
  61.  
  62. let mainP3() =
  63. let rand = System.Random()
  64. let a = Array2D.init 2 3 (fun x y -> rand.Next(10))
  65. let b = Array2D.init 3 4 (fun x y -> rand.Next(10))
  66. let c = multiplyI a b
  67. printfn "A = \n%A\n\nB = \n%A\n\nA * B = \n%A" a b c
  68. let d = multiplyI b a
  69. printfn "\nB * A = \n%A" d
  70.  
  71. // ===================================
  72.  
  73. // ===================================
  74.  
  75. module problema3b =
  76.  
  77. let multiplyF (a:int[,]) (b:int[,]) =
  78. let n = a.GetLength(0)
  79. let m = a.GetLength(1)
  80. let p = b.GetLength(0)
  81. let q = b.GetLength(1)
  82. if (m <> p) then
  83. Array2D.zeroCreate 1 1
  84. else
  85. let compute ai bj =
  86. let row = a.[ai, *]
  87. let column = b.[*, bj]
  88. let prod = Array.map2 (fun x y -> x + y) row column
  89. let p = Array.reduce (fun x y -> x + y) prod
  90. p
  91. let c = Array2D.init n q (fun x y -> compute x y)
  92. c
  93.  
  94. let mainP3b() =
  95. let rand = System.Random()
  96. let a = Array2D.init 2 3 (fun x y -> rand.Next(10))
  97. let b = Array2D.init 3 4 (fun x y -> rand.Next(10))
  98. let c = multiplyF a b
  99. printfn "A = \n%A\n\nB = \n%A\n\nA * B = \n%A" a b c
  100. let d = multiplyF b a
  101. printfn "\nB * A = \n%A" d
  102.  
  103.  
  104. [<EntryPoint>]
  105. let main argv =
  106. problema1.mainP1()
  107. problema1b.mainP1b()
  108. problema3.mainP3()
  109. problema3b.mainP3b()
  110. 0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement