// F# Experimentation File
// Order of Concepts based on Tutorial.fs File
module Beta
open System
//Standard Number Variables
let int1 = 1
let int2 = 2
let int3 = 3
let int4 = 4
let int5 = 5
//Variables for GCF Function
let f x = 3*x*x - 2*x + 3
let result = f (int5 * 2)
let g x = 2*x*x - 5*x + 3
let result_a = f (int3 + 4)
//GCF Function
let rec gcf f g = // notice: 2 parameters separated by spaces
if f=0 then g
elif f<g then gcf f (g-f) // notice: 2 arguments separated by spaces
else gcf (f-g) g
// note: function arguments are usually space separated
// note: 'let rec' defines a recursive function
//Incremental Experimentation
let increment_a x = x + 1
let increment_b y = y + 2
let increment_c z = z + 3
//Factorial Experimentation
let rec factorial_a n = if n=0 then 1 else n * factorial_a (n-1)
let rec factorial_b n = if n<29 then 15 else n * factorial_b (n-15)
let rec factorial_c n = if n>25 then 15 else n * factorial_c (n+10)
let rec factorial_d n = if n>=50 then 75 else n * factorial_d (n+25)
let rec factorial_e n = if n<=100 then 75 else n * factorial_e (n-50)
let rec factorial_f n = if n<>150 then 150 else n * factorial_f (n+1)
//Integer Tuple Experimentation
let pointA = (1, 2, 3)
let pointB = (4, 5, 6)
let pointC = (7, 8, 9)
let pointD = (10, 0, 10)
let pointE = (1, 5, 9)
let pointF = (3, 5, 7)
let pointG = (1, 4, 7)
let pointH = (2, 5, 8)
let pointI = (3, 6, 9)
let pointJ = (4, 7, 10)
let pointK = (5, 8, 0)
let pointL = (6, 9, 10)
let pointM = (4, 8, 10)
let pointN = (6, 8, 10)
let pointO = (1, 7, 10)
let pointP = (2, 8, 0)
let pointQ = (3, 9, 10)
let pointR = (7, 4, 1)
let pointS = (8, 5, 2)
let pointT = (9, 6, 3)
let pointU = (10, 7, 4)
let pointV = (0, 8, 5)
let pointW = (10, 9, 6)
let pointX = (7, 5, 3)
let pointY = (9, 5, 1)
let pointZ = (10, 8, 6)
let pointAA = (10, 8, 4)
let pointAB = (7, 5, 9)
let pointAC = (9, 5, 7)
let pointAD = (1, 5, 3)
// Integer, String, Double-Percision Tuples
let dataA = (1, "name_a", 3.1415)
let dataB = (2, "name_b", 22/7)
let dataC = (3, "name_c", 5.1413)
let dataD = (4, "name_d", 7/22)
let dataE = (5, "name_e", 1)
// Booleans
let boolean1 = true
let boolean2 = false
let boolean3 = not boolean1 && (boolean2 || false)
let boolean4 = false
let boolean5 = true
let boolean6 = not boolean4 && (boolean5 || true)
let boolean7 = true
let boolean8 = true
let boolean9 = not boolean4 && (boolean8 || true)
let boolean10 = false
let boolean11 = false
let boolean12 = not boolean9 && (boolean11 || false)
// Strings
let stringA = "Hello"
let stringB = "user."
let stringC = stringA + " " + stringB
let stringD = String.Join(" ",[| stringA; stringB |])
let stringE = "Welcome"
let stringF = "to"
let stringG = "Twit2."
let stringH = stringE + " " + stringF + " " + stringG
let stringI = String.Join(" ",[| stringE; stringF; stringG |])
let stringJ = "We"
let stringK = "hope"
let stringL = "enjoy"
let stringM = "our"
let stringN = "software."
let stringO = stringJ + " " + stringK + " " + stringL + " " + stringM + " " + stringN
let stringP = String.Join(" ",[| stringJ; stringK; stringL; stringM; stringO |])
let stringQ = "Goodbye"
let stringR = "and"
let stringS = "Thank"
let stringT = "you"
let stringU = "for"
let stringV = "using"
let stringW = "our"
let stringX = "software."
let stringY = "Have"
let stringZ = "any"
let stringAA = "complaints?"
let stringAB = "Report"
let stringAC = "them"
let stringAD = "here."
let stringAE = stringQ + " " + stringR + " " + stringS + " " + stringT + " " + stringU + " " + stringV + " " + stringW + " " + stringX + " " + stringY + " " + stringZ + " " + stringAA + " " + stringAB + " " + stringAC + " " + stringAD
let stringAF = String.Join(" ",[| stringQ; stringR; stringS; stringT; stringU; stringV; stringW; stringX; stringY; stringZ; stringZ; stringAA; stringAB; stringAC; stringAD |])
let stringAG = String.Join(" / ",[| stringD; stringI; stringP; stringAF |])
let stringAH = String.Join(" ",[| stringD; stringI; stringP; stringAF |])
//List Experimentation
let listA = [ 1; 2; 3 ]
let listB = [ 4; 5; 6 ]
let listC = [ 7; 8; 9 ]
let listD = [ 0; 0; 0 ]
let listE = 1 :: [2; 3]
let listF = 4 :: [5; 6]
let listG = 7 :: [8; 9]
let listH = 0 :: [0; 0]
// Compute the sum of a list of integers using a recursive function
let rec SumList xs =
match xs with
| [] -> 0
| y::ys -> y + SumList ys
let listI = SumList [1; 2; 3]
let listJ = SumList [4; 5; 6]
let listK = SumList [7; 8; 9]
let listL = SumList [0; 0; 0]
let oneToTen = [1..10]
let elevenToTwenty = [11..20]
let twooneToThirty = [21..30]
let threexToForty = [31..40]
let fortyoToFifeo = [41..50]
let oneToOneHundred = [1..100]
let OneHundredToTwoHunderd = [100..200]
let TwoHundredToThreeHundred = [200..300]
let ThreeHundredToFourHundred = [300..400]
let FourHundredToFiveHundred = [400..500]
let OneToOneThousand = [1..1000]
let OneKToTwoK = [1..2000]
let TwoKToThreeK = [1..3000]
let ThreeKToFourK = [1..4000]
let FourKtoFiveK = [1..5000]
let OneToTenK = [1..10000]
let squaresOfOneToTen = [ for x in 0..10 -> x*x ]
let squaresOfTenToTwenty = [ for x in 10..20 -> x*x ]
let squaresOfTwentyToThirty = [ for x in 20..30 -> x*x ]
let squaresOfThirtyToForty = [ for x in 30..40 -> x*x ]
let squaresOfFortytoFifty = [ for x in 40..50 -> x*x ]
let squaresOfOneToOneHundred = [ for x in 1..100 -> x*x ]
let squarerootsOfOneToTen = [ for x in 0..10 -> x/x ]
let squarerootsOfTenToTwenty = [ for x in 10..20 -> x/x ]
let squarerootsOfTwentyToThirty = [ for x in 20..30 -> x/x ]
let squarerootsOfThirtyToForty = [ for x in 30..40 -> x/x ]
let squarerootsOfFortytoFifty = [ for x in 40..50 -> x/x ]
let squarerootsOfOneToOneHundred = [ for x in 1..100 -> x/x ]
// Arrays
let arr_a = Array.create 4 "hello"
arr_a.[1] <- "world"
arr_a.[3] <- "don"
let arr_aLength = arr_a.Length
let front_a = arr_a.[0..2]
let arr_b = Array.create 6 "bored"
arr_b.[1] <- "world"
arr_b.[2] <- "4/e"
arr_b.[3] <- "w/e"
let arr_bLength = arr_b.Length
let front_b = arr_b.[0..2]
// Tables
let numDict_Neg = dict [ (-1, "Negative One"); (-2, "Negative Two"); (-3, "Negative Three"); (-4, "Negative Four"); (-5, "Negative Five"); (-6, "Negative Six"); (-7, "Negative Seven"); (-8, "Negative Eight"); (-9, "Negative Nine"); (-10, "Negative Ten"); (-11, "Negative Eleven"); (-12, "Negative Twelve"); (-13, "Negative Thirteen"); (-14, "Negative Fourteen"); (-15, "Negative Fifteen"); (-16, "Negative Sixteen"); (-17, "Negative Seventeen"); (-18, "Negative Eighteen") ]
let numDict_Pos = dict [ (1, "One"); (2, "Two"); (3, "Three"); (4, "Four"); (5, "Five"); (6, "Six"); (7, "Seven"); (8, "Eight"); (9, "Nine"); (10, "Ten"); (11, "Eleven"); (12, "Twelve"); (13, "Thirteen"); (14, "Fourteen"); (15, "Fifteen"); (16, "Sixteen"); (17, "Seventeen"); (18, "Eighteen"); (19, "Nineteen"); (20, "Twenty"); (21, "Twenty One"); (22, "Twenty Two"); (23, "Twenty Three"); (24, "Twenty Four"); (25, "Twenty Five"); (26, "Twenty Six"); (27, "Twenty Seven"); (28, "Twenty Eight"); (29, "Twenty Nine"); (30, "Thirty"); (31, "Thiry One"); (32, "Thirty Two"); (33, "Thirty Three"); (34, "Thirty Four");(35, "Thirty Five"); (36, "Thirty Six"); (37, "Thirty Seven"); (38, "Thirty Eight"); (39, "Thirty Nine"); (40, "Forty"); (41, "Forty One"); (42, "Forty Two"); (43, "Forty Three"); (44, "Forty Four"); (45, "Forty Five"); (46, "Forty Six"); (47, "Forty Seven"); (48, "Forty Eight"); (49, "Forty Nine"); (50, "Fifty") ]
let stringA0 = 0
let stringAI = String.Join(" ", [| numDict_Pos; stringA0; numDict_Neg; |])
let StringAJ = numDict_Pos.[1]
let StringAK = numDict_Pos.[2]
let stringAL = numDict_Pos.[3]
let stringAM = numDict_Pos.[4]
let stringAN = numDict_Pos.[5]
let stringAO = numDict_Pos.[6]
let stringAP = numDict_Pos.[7]
let stringAQ = numDict_Pos.[8]
let stringAR = numDict_Pos.[9]
let stringAS = numDict_Pos.[10]
let stringAT = numDict_Pos.[11]
let stringAU = numDict_Pos.[12]
let stringAV = numDict_Pos.[13]
let stringAW = numDict_Pos.[14]
let stringAX = numDict_Pos.[15]
let stringAY = numDict_Pos.[16]
let stringAZ = numDict_Pos.[17]
let stringBA = numDict_Pos.[18]
let stringBB = numDict_Pos.[19]
let stringBC = numDict_Pos.[20]
let stringBD = numDict_Pos.[21]
let stringBE = numDict_Pos.[22]
let stringBF = numDict_Pos.[23]
let stringBG = numDict_Pos.[24]
let stringBH = numDict_Pos.[25]
let stringBI = numDict_Pos.[26]
let stringBJ = numDict_Pos.[27] // No. That was not meant to be vulgar. If it is to you, then grow up.
let stringBK = numDict_Pos.[28] // lol Now I'm hugry.
let stringBL = numDict_Pos.[29]
let stringBM = numDict_Pos.[30]
let stringBN = numDict_Pos.[31]
let stringBO = numDict_Pos.[32]
let stringBP = numDict_Pos.[33]
let stringBQ = numDict_Pos.[34]
let stringBR = numDict_Pos.[35]
let stringBS = numDict_Pos.[36] // Maturely Handle that, pl0x?
let stringBT = numDict_Pos.[37]
let stringBU = numDict_Pos.[38]
let stringBV = numDict_Pos.[39]
let stringBW = numDict_Pos.[40]
let stringBX = numDict_Pos.[41]
let stringBY = numDict_Pos.[42]
let stringBZ = numDict_Pos.[43]
let stringCA = numDict_Pos.[44] // California! w00t!
let stringCB = numDict_Pos.[45]
let stringCC = numDict_Pos.[46] // Carbon Copy, lolz
let stringCD = numDict_Pos.[47] // Those old things...
let stringCE = numDict_Pos.[48]
let stringCF = numDict_Pos.[49]
let stringCG = numDict_Pos.[50]