Skip to main content

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

Champernowne's Constant - Project Euler Problem 40


Problem

An irrational decimal fraction is created by concatenating the positive integers:

0.12345678910

It can be seen that the 12th digit of the fractional part is 1.

If dn represents the nth digit of the fractional part, find the value of the following expression.

d1 x d10 x d100 x d1000 x d10000 x d100000 x d1000000

Original Problem Source


Solution


 //speed depends on using StringBuilder, non-idiomatic since it is mutable  
 let rec NumArray start max maxLength (numString:System.Text.StringBuilder) =   
             if start = max || numString.Length >= maxLength then  
               numString.Append(start.ToString())  
             else  
               let newString = numString.Append(start.ToString())  
               let nextNum = start + 1  
               NumArray nextNum max maxLength newString  
   
 //cast string to int  
 let convertStringToInt32 (value:string) =   
   let mutable result = 0  
   let found = System.Int32.TryParse(value, &result)  
   result  
   
 //test for conversion  
 //let test_conversion = convertStringToInt32("1")  
   
 //starts timer  
 let startChampernowne = System.DateTime.Now  
   
 //create string builder and initialize it  
 let numStringStart = new System.Text.StringBuilder()  
 let startString = numStringStart.Append(".")  
   
 //variety of tests  
 //let test_numArray = NumArray 1 100 100000 numStringStart  
 //let test_stringPosition1 = test_numArray.Chars(0)  
 //let test_stringPosition10 = test_numArray.Chars(9)  
 //let test_stringPosition100 = test_numArray.Chars(99)  
 //let test_stringPosition12 = test_numArray.Chars(11)  
   
 //Create Champernowne's constant nd convert to string  
 let GetNumArray = NumArray 1 1000000 1000000 startString  
 let NumArrayToString = GetNumArray.ToString()  
   
 //find solution  
 let ProdOfValues =   
   convertStringToInt32(NumArrayToString.Chars(1).ToString())  
    * convertStringToInt32(NumArrayToString.Chars(10).ToString())  
    * convertStringToInt32(NumArrayToString.Chars(100).ToString())  
     * convertStringToInt32(NumArrayToString.Chars(1000).ToString())  
     * convertStringToInt32(NumArrayToString.Chars(10000).ToString())  
      * convertStringToInt32(NumArrayToString.Chars(100000).ToString())  
      * convertStringToInt32(NumArrayToString.Chars(1000000).ToString())  
   
 //end times  
 printfn "%s" ((System.DateTime.Now - startChampernowne).ToString())  
 

Comments

Popular posts from this blog

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

Consecutive Prime Sum (Project Euler - Problem 50)

Problem The prime 41, can be written as the sum of six consecutive primes: 41 = 2 + 3 + 5 + 7 + 11 + 13 This is the longest sum of consecutive primes that adds to a prime below one-hundred. The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953. Which prime, below one-million, can be written as the sum of the most consecutive primes? Note Some libraries used in this code are F# modules I use, but have also published as a  Nuget library , such as EulerLib.GetPrimes() and  EulerLib. isPrime(). You need to reference the NuGetLibrary to use this code as is. Solution #load "Stat.fs" #load "Print.fs" #load "EulerLib.fs" open Stat open Print open EulerLib open System let rec FindLongestPrimeSequenceSum (primeList:list ) (nextItem:int) lessThanValue (primeArray:list ) bestPrime (correctArray:list )

First Post and Raison d'Etre

I am enjoying delving into learning F#, currently working through Programming F#: A comprehensive guide for writing simple code to solve complex problems on mu iPad via Kindle, as well as using a variety of web sources: WikiBook's F# Programming Project Euler, a "series of challenging mathematical/computer programming problems" F# News Inside F# Learn Visual F# (MSDN) I am currently working with MS Visual Studio Shell 2010 and F# 2.0 to work though various self-designed ideas, as well as working through various problems from Project Euler.