Skip to main content

Posts

Microsoft Azure Notebooks - Live code - F#, R, and Python

I was exploring Jupyter notebooks , that combines live code, markdown and data, through Microsoft's implementation, known as MS Azure Notebooks , putting together a small library of R and F# notebooks . As Microsoft's FAQ for the service describes it as : ...a multi-lingual REPL on steroids. This is a free service that provides Jupyter notebooks along with supporting packages for R, Python and F# as a service. This means you can just login and get going since no installation/setup is necessary. Typical usage includes schools/instruction, giving webinars, learning languages, sharing ideas, etc. Feel free to clone and comment... In R Azure Workbook for R - Memoisation and Vectorization Charting Correlation Matrices in R In F# Charnownes Constant in FSharp.ipynb Project Euler - Problems 18 and 67 - FSharp using Dynamic Programming

Project Euler - Problem 30 Redux (using Parallel)

The original post Project Euler - Problem 30  was done some time ago, and I recently read about using parallel methods to improve performance, and in this case, Parallel reduces execution time by 33%. Description Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits.   Find the sum of all the numbers that can be written as the sum of fifth powers of their digits. Solution (using Parallel) open System open System.Threading open System.Threading.Tasks let isNarcissistic num power =     let numAsString = num.ToString()     let arr = [for i=0 to (numAsString.Length - 1) do                 yield (float(numAsString.Chars(i).ToString()))**power]     if num = int(List.sum arr) then         num     else         0 let GetAllNarcissistic2_Start = System.DateTime.UtcNow let GetAllNarcissistic2 =...

Project Euler - Problem 26 Redux (using Parallel)

The original post Project Euler - Problem 26 was done some time ago, and I recently read about using parallel methods to improve performance, and in this case, Parallel reduces execution time by 25%. Description A unit fraction contains 1 in the numerator. The decimal representation of the unit fractions with denominators 2 to 10 are given: 1/2 = 0.5 1/3 = 0.(3) 1/4 = 0.25 1/5 = 0.2 1/6 = 0.1(6) 1/7 = 0.(142857) 1/8 = 0.125 1/9 = 0.(1) 1/10 = 0.1 Where 0.1(6) means 0.166666..., and has a 1-digit recurring cycle. It can be seen that 1/7 has a 6-digit recurring cycle. Find the value of d < 1000 for which 1/d contains the longest recurring cycle in its decimal fraction part. Solution (using Parallel)  open System open System.Threading open System.Threading.Tasks let rec remainders (num:int) (rem:int) (arr:list) =           let filteredList = arr |> List.filter (fun x -> x = num)      if filteredList.L...

Project Euler - Problem 22

Description Using names.txt (right click and 'Save Link/Target As...'), a 46K text file containing over five-thousand first names, begin by sorting it into alphabetical order. Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score. For example, when the list is sorted into alphabetical order, COLIN, which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would obtain a score of 938 53 = 49714. What is the total of all the name scores in the file?   Solution   open System.IO let alphaArrayValue (ch:char) =      let alphas = [|' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';|]   ...

Project Euler - Problem #36

Description The decimal number, 585 = 1001001001 (binary), is palindromic in both bases. Find the sum of all numbers, less than one million, which are palindromic in base 10 and base 2. (Please note that the palindromic number, in either base, may not include leading zeros.) Solution (Improved) let isPalindromicBase2 (n:int) =      let forward = System.Convert.ToString(n,2) |> Seq.map (fun c -> int c - int '0') |> Seq.toArray      let rev = Array.rev forward      if forward = rev then           true      else          false let reverse (s:string) = new string(s |> Seq.toArray |> Array.rev) let getPalindromesBase10 =      let base10Array = [|1..1000000|] |> Array.filter (fun x -> string x = reverse(string x))      let base02Array = base10Array |...

Project Euler - Problem 34

Description 145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145. Find the sum of all numbers which are equal to the sum of the factorial of their digits. Note: as 1! = 1 and 2! = 2 are not sums they are not included. Solution let rec factorial n acc =      if n <= 1 then           acc      else           let newAcc = n * acc           factorial (n-1) newAcc let sumStr num =      let arrStr = num.ToString()      let len = String.length arrStr      let arrNum = Array.create len 0      for i=0 to len-1 do           let numTemp = System.Convert.ToInt32(arrStr.Chars(i).ToString())           arrNum.[i] <- factorial num...

Project Euler - Problem 48

Description The series, 1^1 + 2^2 + 3^3 + ... + 10^10 = 10405071317. Find the last ten digits of the series, 1^1 + 2^2 + 3^3 + ... + 1000^1000 Solution let powerBySelf num = bigint (float num)**(num) let LastTenDigitisOfSumOfPowerBySelf =     let sum = [1..1000] |> List.map (fun x -> powerBySelf x) |> List.sum     let stringOfSum = sum.ToString()     stringOfSum.Substring(stringOfSum.Length-10)  

Project Euler - Problem 30

Description Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits: 1634 = 1^4 + 6^4 + 3^4 + 4^4 8208 = 8^4 + 2^4 + 0^4 + 8^4 9474 = 9^4 + 4^4 + 7^4 + 4^4 As 1 = 1^4 is not a sum it is not included. The sum of these numbers is 1634 + 8208 + 9474 = 19316.  Find the sum of all the numbers that can be written as the sum of fifth powers of their digits. Solution let isNarcissistic num power =     let numAsString = num.ToString()     let arr = [for i=0 to (numAsString.Length - 1) do                     yield (float(numAsString.Chars(i).ToString()))**power]     if num = int(List.sum arr) then         true     else         false let GetAllNarcissistic =     [2..999999]     |> List.filter ( fun x -> isNarcissistic x 5....