Skip to content

Instantly share code, notes, and snippets.

View adilakhter's full-sized avatar

Adil Akhter adilakhter

View GitHub Profile
@adilakhter
adilakhter / last.fs
Created December 6, 2012 15:27
99 Problems in F#| 01. Last Element of a List
// Length of a List
let length list = List.fold (fun acc _ -> acc+1) 0 list
// Nth Element of a List
let rec nth list index =
match list with
| x::xs when index > 0 -> nth xs (index-1)
| x::xs when index = 0 -> x
| _ -> failwith "Index out of range"
@adilakhter
adilakhter / last-rec.fs
Created December 6, 2012 15:32
99 Problems in F#| 01. Last Element of a List (2)
let rec last' list =
match list with
| [] -> failwith "Empty List"
| x::[] -> x
| _::xs -> last' xs
@adilakhter
adilakhter / last-3.fs
Created December 6, 2012 15:48
99 Problems in F#| 01. Last Element of a List (3)
let last'' list = list |> List.rev |> List.head
@adilakhter
adilakhter / last-4.fs
Created December 6, 2012 16:22
99 Problems in F#| 01. Last Element of a List (4)
let last''' list = list |> List.reduce(fun acc x -> x)
@adilakhter
adilakhter / is_palindrome.fs
Created December 11, 2012 15:02
is_palindrome
let rev (s:string) = new string(s.ToCharArray() |> Array.rev)
let isPalindrome (text:string) =
text = rev text
@adilakhter
adilakhter / max_list.fs
Created December 12, 2012 07:28
Get max. element from a List
let max_list l = (List.reduce max) l;;
@adilakhter
adilakhter / fold_list.fs
Created December 12, 2012 08:19
List.fold and List.foldback
let rec fold op acc l =
match l with
| [] -> acc
| h :: t -> fold op (op acc h) t
@adilakhter
adilakhter / addrev.fs
Created December 14, 2012 11:43
SPOJ 42: ADDREV
// problem definition : https://www.spoj.com/problems/ADDREV/
open System
let parseTuple() : int*int =
let line = Console.ReadLine().Split()
line.[0] |> int , line.[1] |> int
let reverseInt n =
let rec reverseInt' n acc =
let acc' = acc + (n%10)
@adilakhter
adilakhter / gcd2.fs
Last active October 14, 2015 01:57
SPOJ:2906 GCD2
//Problem Statement : https://www.spoj.com/problems/GCD2/
open System
let parseLine() =
let line = System.Console.ReadLine().Split()
line.[0] |> int, line.[1] |> string
let rec gcd a b =
match b with
| 0 -> a
| _ -> gcd b (a%b)
@adilakhter
adilakhter / timing.fs
Created December 17, 2012 14:49
TIming
open System
let time f x =
let timer = System.Diagnostics.Stopwatch()
timer.Start()
try
f x
finally
timer.Stop()
printfn "Took %dms" timer.ElapsedMilliseconds