All Problems

Output a string to the console

Write the string "Hello World!" to STDOUT
erlang
io:format("Hello, World!~n").
fsharp
printfn "Hello World!"

Retrieve a string containing ampersands from the variables in a url

My PHP script first does a query to obtain customer info for a form. The form has first name and last name fields among others. The customer has put entries such as "Ron & Jean" in the first name field in the database. Then the edit form script is called with variables such as

"http://myserver.com/custinfo/edit.php?mode=view&fname=Ron & Jean&lname=Smith".

The script variable for first name $_REQUEST['firstname'] never gets beyond the "Ron" value because of the ampersand in the data.

I have tried various functions like urldecode but all to no avail. I even tried encoding the url before the view screen is painted so that the url looks like "http://myserver/custinfo/edit.php?mode=view&fname="Ronxxnbsp;xxamp;xxnbsp;Jean"&lname=SMITH". (sorry I had to add the xx to replace the ampersand or it didn't display meaningful url contents the browser sees.)

Of course this fails for the same reasons. What is a better approach?
erlang
% encode ampersand in your string using %XX where XX is hex code for ampersand
% optionally encode spaces for completeness sake to keep URL solid
URL = "http://myserver.com/custinfo/edit.php?mode=view&fname=Ron%20%26%20Jean&lname=Smith",
{_, Query} = string:tokens(URL, "?"),
KeyValuePairs = string:tokens(Query, "&"),...
fsharp
//the problem arises due to the fact that you've attempted to apply HTML entities encoding rather than URL encoding to your data!
//in F#, for example, assuming you would call this function with fname and lname parameters, this would produce the desired output
let getProperUrl fname lname = sprintf "http://myserver.com/custinfo/edit.php?mode=view&fname=%s&lname=%s" (HttpUtility.UrlEncode fname) (HttpUtility.UrlEncode lname)
// Example that shows encoding and decoding:
let queryString =
let fname = HttpUtility.UrlEncode("Ron & James")
let lname = HttpUtility.UrlEncode("Smith & Jones")
sprintf "http://myserver.com/custinfo/edit.php?mode=view&fname=%s&lname=%s" fname lname
/// All parameters in the URL as a lookup map
let parameters =
let paramStart = queryString.IndexOf('?')
if paramStart < 0 then
Map.empty
else
let values =
queryString.Substring(paramStart + 1)
|> HttpUtility.ParseQueryString
values.AllKeys
|> Seq.map (fun key -> key, values.[key])
|> Map.ofSeq
let fname = parameters.TryFind("fname")
let lname = parameters.TryFind("lname")

string-wrap

Wrap the string "The quick brown fox jumps over the lazy dog. " repeated ten times to a max width of 78 chars, starting each line with "> "

Expected output:
> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over t
> he lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
> jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The qui
> ck brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy
> dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps o
> ver the lazy dog. The quick brown fox jumps over the lazy dog.
erlang
wrapper(String, Times, Length) ->
StrList = lists:reverse(formatter(string:copies(String, Times), Length, [])),
lists:foreach(fun(Str) -> io:format("~p~n", [Str]) end, StrList).

formatter([], _Length, Acc) -> Acc;
formatter(String, Length, Acc) when length(String) > Length - 1->
{Head, Tail} = lists:split(Length - 1, String),
formatter(string:strip(Tail), Length, [[$>, $ | Head] | Acc]);
formatter(String, Length, Acc) ->
formatter([], Length, [[$>, $ | String] | Acc]).

Define a string containing special characters

Define the literal string "\#{'}${"}/"
erlang
Special = "\\#{'}\${\"}/",
fsharp
let special = "\#{'}${\"}/"

Define a multiline string

Define the string:
"This
Is
A
Multiline
String"
erlang
Text = "This\nIs\nA\nMultiline\nString",
fsharp
let multiline = "This\nIs\nA\nMultiline\nString"
let multiline = "This
Is
A
Multiline
String"

Define a string containing variables and expressions

Given variables a=3 and b=4 output "3+4=7"
erlang
A = 3, B = 4,
io:format("~B+~B=~B~n", [A, B, (A+B)]).
fsharp
let a, b = 3, 4
let mystr = sprintf "%d+%d=%d" a b (a+b)
printfn "%s" mystr

Reverse the characters in a string

Given the string "reverse me", produce the string "em esrever"
erlang
Reversed = lists:reverse("reverse me"),
Reversed = revchars("reverse me"),
fsharp
let reversed = new String (Array.rev ("reverse me".ToCharArray()))
let word = "reverse me"
//reverse the word
let reversedword =
word.ToCharArray()
|> Array.fold(fun acc x -> x::acc) []

Reverse the words in a string

Given the string "This is a end, my only friend!", produce the string "friend! only my end, the is This"
erlang
Reversed = string:join(lists:reverse(string:tokens("This is the end, my only friend!", " ")), " "),
fsharp
let reversed = String.Join(" ", Array.rev("This is the end, my only friend!".Split [|' '|]))

Text wrapping

Wrap the string "The quick brown fox jumps over the lazy dog. " repeated ten times to a max width of 78 chars, starting each line with "> ", yielding this result:

> The quick brown fox jumps over the lazy dog. The quick brown fox jumps
> over the lazy dog. The quick brown fox jumps over the lazy dog. The
> quick brown fox jumps over the lazy dog. The quick brown fox jumps
> over the lazy dog. The quick brown fox jumps over the lazy dog. The
> quick brown fox jumps over the lazy dog. The quick brown fox jumps
> over the lazy dog. The quick brown fox jumps over the lazy dog. The
> quick brown fox jumps over the lazy dog.
erlang
TextWrap = textwrap(string:copies(Input, 10), 73 - length(Prefix)),
lists:foreach(fun (Line) -> io:format("~s~n", [string:concat(Prefix, Line)]) end, string:tokens(TextWrap, "\n")).
fsharp
let prefix = "> "
let input = "The quick brown fox jumps over the lazy dog. "

(String.split ['\n'] (textwrap (copies input 10) (73 - prefix.Length))) |> List.iter (fun line -> printfn "%s%s" prefix line)
let output maxWidth (s: string) =
let rec wrap = function
| lineSoFar, ([| |]: string array)-> printfn "%s" lineSoFar
| ">" as lineSoFar, (words: string array) ->
// Handle this case separately, thus we can also deal with
// cases where a word is longer then the max width
wrap (lineSoFar + " " + words.[0], Array.sub words 1 (words.Length - 1))
| lineSoFar, words when words.[0].Length + lineSoFar.Length >= maxWidth ->
printfn "%s" lineSoFar
wrap (">", words)
| lineSoFar, words ->
wrap(lineSoFar + " " + words.[0], Array.sub words 1 (words.Length - 1))
wrap (">", s.Split([| ' ' |]))

[| for i in 1 .. 10 do yield "The quick brown fox jumps over the lazy dog." |]
|> String.concat " "
|> output 78

Remove leading and trailing whitespace from a string

Given the string "  hello    " return the string "hello".
erlang
Trimmed = string:strip(S),
fsharp
let s = " hello "
let trimmed = s.Trim()
let trimmed = " hello ".Trim()

Simple substitution cipher

Take a string and return the ROT13 and ROT47 (Check Wikipedia) version of the string.
For example:
String is: Hello World #123
ROT13 returns: Uryyb Jbeyq #123
ROT47 returns: w6==@ (@C=5 R`ab
erlang
rot13(Str) ->
lists:map(fun(A) ->
if
A >= $A, A =< $Z -> ((A - $A + 13) rem 26) + $A;
A >= $a, A =< $z -> ((A - $a + 13) rem 26) + $a;
true -> A
end
end, Str).

rot47(Str) ->
lists:map(fun(A) ->
if
A >= $!, A =< $~ ->
((A - $! + 47) rem 94) + $!;
true -> A
end
end, Str).
fsharp
#light

let rotChar (s:int) (l:int) (h:int) (c:char) =
let charCode = int c
let letterCount = h - l + 1
let newCharCode = (charCode - l + s) % letterCount + l
char newCharCode

let rot13 (text:string) =
let rotChar13 = function
| (c:char) when 'A' <= c && c <= 'Z' -> rotChar 13 (int 'A') (int 'Z') c
| c when 'a' <= c && c <= 'z' -> rotChar 13 (int 'a') (int 'z') c
| c -> c
new string([| for c in text -> rotChar13 c|])

let rot47 (text:string) =
let rotChar47 = function
| ' ' as c -> c
| c -> rotChar 47 (int '!') (int '~') c
new string([| for c in text -> rotChar47 c |])

Make a string uppercase

Transform "Space Monkey" into "SPACE MONKEY"
erlang
io:format("~s~n", [string:to_upper("Space Monkey")]).
fsharp
printfn "%s" ("Space Monkey".ToUpper())
printfn "%s" (String.uppercase "Space Monkey")

Make a string lowercase

Transform "Caps ARE overRated" into "caps are overrated"
erlang
io:format("~s~n", [string:to_lower("Caps ARE overRated")]).
fsharp
printfn "%s" ("Caps ARE overRated".ToLower())
printfn "%s" (String.lowercase "Caps ARE overRated")

Capitalise the first letter of each word

Transform "man OF stEEL" into "Man Of Steel"
erlang
Caps = string:join(lists:map(fun(S) -> to_caps(S) end, string:tokens("man OF stEEL", " ")), " "),
fsharp
let words = String.Join(" ", Array.map (fun (s : String) -> (String.capitalize (s.ToLower()))) ("man OF stEEL".Split [|' '|]))
let wordlst = List.map (fun s -> (String.capitalize (String.lowercase s))) (String.split [' '] "man OF stEEL")
let words = new StringBuilder(List.hd wordlst)
for (s : String) in (List.tl wordlst) do (words.Append(" ").Append(s))
// Previous solutions used old library functions, here's something that works with F# 2.0
let s= "man OF stEEL"
let UpperFirst = function | "" -> "" | s -> s.Substring(0,1).ToUpper() + s.Substring(1).ToLower()
s.Split(' ') |> Array.map UpperFirst |> String.concat " "
let culture = System.Globalization.CultureInfo.GetCultureInfo("en-US")
let titleCase = culture.TextInfo.ToTitleCase "man oF sTeel"

Find the distance between two points

erlang
Distance = distance({point, 34, 78}, {point, 67, -45}),
io:format("~.2f~n", [Distance]).
Distance = distance(point:new(34, 78), point:new(67, -45)),
io:format("~.2f~n", [Distance]).
fsharp
let distance' = distance (34, 78) (67, -45)
printfn "%3.2f" distance'

Zero pad a number

Given the number 42, pad it to 8 characters like 00000042
erlang
Formatted = io_lib:format("~8..0B", [42]),
io:format("~8..0B~n", [42]).
fsharp
printfn "%08d" 42
let formatted = sprintf "%08d" 42
printfn "%s" formatted
let buffer = new StringBuilder()
Printf.bprintf buffer "%08d" 42
printfn "%s" (buffer.ToString())
let formatted = String.Format("{0,8:D8}", 42)
Console.WriteLine(formatted)
let formatted = Convert.ToString(42).PadLeft(8, '0')
Console.WriteLine(formatted)

Right Space pad a number

Given the number 1024 right pad it to 6 characters "1024  "
erlang
Formatted = io_lib:format("~-6B", [1024]),
io:format("~-6B~n", [1024]).
fsharp
printfn "%-6d" 1024
let formatted = String.Format("{0,-6:D}", 1024)
Console.WriteLine(formatted)
let formatted = Convert.ToString(1024).PadRight(6)
Console.WriteLine(formatted)

Format a decimal number

Format the number 7/8 as a decimal with 2 places: 0.88
erlang
Formatted = io_lib:format("~.2f", [7/8]),
io:format("~.2f~n", [7/8]).
fsharp
printfn "%3.2f" (0.7 / 0.8)
let formatted = String.Format("{0,3:F2}", (0.7 / 0.8))
Console.WriteLine(formatted)

Left Space pad a number

Given the number 73 left pad it to 10 characters "        73"
erlang
Formatted = io_lib:format("~10B", [73]),
io:format("~10B~n", [73]).
fsharp
let formatted = sprintf "%10d" 73
printfn "%s" formatted
let formatted = String.Format("{0,10:D}", 73)
Console.WriteLine(formatted)
let formatted = Convert.ToString(73).PadLeft(10)
Console.WriteLine(formatted)

Generate a random integer in a given range

Produce a random integer between 100 and 200 inclusive
erlang
RandomInt = gen_rand_integer(100, 200),
fsharp
let rnd = new Random()
let rndInt = rnd.Next(100, 201)

Generate a repeatable random number sequence

Initialise a random number generator with a seed and generate five decimal values. Reset the seed and produce the same values.
erlang
setRNG(RNGState),
io:format("~w~n", [lists:map(fun (_) -> gen_rand_integer(100, 200) end, lists:seq(1, 5))]),

setRNG(RNGState),
io:format("~w~n", [lists:map(fun (_) -> gen_rand_integer(100, 200) end, lists:seq(1, 5))]).
fsharp
let (seed, lb, ub) = (12345, 100, 200)

let mutable rnd = new Random(seed)
for i = 1 to 5 do printf "%d " (rnd.Next(lb, ub + 1)) done ; printfn ""

rnd <- new Random(seed)
for i = 1 to 5 do printf "%d " (rnd.Next(lb, ub + 1)) done ; printfn ""

Check if a string matches a regular expression

Display "ok" if "Hello" matches /[A-Z][a-z]+/
erlang
String = "Hello", Regexp = "[A-Z][a-z]+",
is_match(String, Regexp) andalso (begin io:format("ok~n"), true end).
case re:run("Hello", "[A-Z][a-z]+") of {match, _} -> ok end.
fsharp
if (Regex.IsMatch("Hello", "[A-Z][a-z]+")) then printfn "ok"

Check if a string matches with groups

Display "two" if "one two three" matches /one (.*) three/
erlang
case re:run("one two three", "one (.*) three", [{capture, [1], list}]) of {match, Res} -> hd(Res) end.
fsharp
let regmatch = (Regex.Match("one two three", "one (.*) three"))
if regmatch.Success then (printfn "%s" (regmatch.Groups.[1].Captures.[0].ToString()))

Check if a string contains a match to a regular expression

Display "ok" if "abc 123 @#$" matches /\d+/
erlang
% Erlang uses 'egrep'-compatible regular expressions, so shortcuts like '\d' not supported
String = "abc 123 @#$", Regexp = "[0-9]+",
is_match(String, Regexp) andalso (begin io:format("ok~n"), true end).
case re:run("abc 123 @#$", "\\d+") of {match, _} -> ok end.
fsharp
if (Regex.IsMatch("abc 123 @#$", "\\d+")) then printfn "ok"

Loop through a string matching a regex and performing an action for each match

Create a list [fish1,cow3,boat4] when matching "(fish):1 sausage (cow):3 tree (boat):4" with regex /\((\w+)\):(\d+)/
erlang
solve(S) ->
R = "\\((\\w+?)\\):(\\d+)",
{match, M} = re:run(S,R, [global, {capture, all_but_first, list}]),
[ A++N || [A, N] <- M].
fsharp
let list = new ResizeArray<string>()
let mutable regmatch = (Regex.Match("(fish):1 sausage (cow):3 tree (boat):4", "\\((\\w+)\\):(\\d+)"))

while regmatch.Success do
list.Add(regmatch.Groups.[1].Captures.[0].ToString() ^ regmatch.Groups.[2].Captures.[0].ToString())
regmatch <- regmatch.NextMatch()
done

for word in list do printfn "%s" word done
// A solution without mutation:
let results =
Regex.Matches("(fish):1 sausage (cow):3 tree (boat):4", "\\((\\w+)\\):(\\d+)")
|> Seq.cast
|> Seq.map (fun (regmatch: Match) ->
regmatch.Groups.[1].Captures.[0].ToString() + regmatch.Groups.[2].Captures.[0].ToString()
)
|> List.ofSeq

Replace the first regex match in a string with a static string

Transform "Red Green Blue" into "R*d Green Blue" by replacing /e/ with "*"
erlang
{ok, Replaced, _} = regexp:sub("Red Green Blue", "e", "*"),
re:replace("Red Green Blue", "e", "*", [{return, list}]).
fsharp
let replaced = ((new Regex("e")).Replace("Red Green Blue", "*", 1))
printfn "%s" replaced

Replace all regex matches in a string with a static string

Transform "She sells sea shells" into "She X X shells" by replacing /se\w+/ with "X"
erlang
% Erlang uses 'egrep'-compatible regular expressions, so shortcuts like '\w' not supported
{ok, Replaced, _} = regexp:gsub("She sells sea shells", "se[A-Za-z0-9_]+", "X"),
re:replace("She sells sea shells", "se\\w+", "X", [global, {return, list}]).
fsharp
let replaced = ((new Regex("se\\w+")).Replace("She sells sea shells", "X"))
printfn "%s" replaced

Replace all regex matches in a string with a dynamic string

Transform "The {Quick} Brown {Fox}" into "The kciuQ Brown xoF" by reversing words in braces using the regex /\{(\w+)\}/.
erlang
% Erlang regular expressions lack both group capture and backreferences, thus this problem is not directly
% solvable. Presented solution is close, but not on-spec

String = "The {Quick} Brown {Fox}",
{match, FieldList} = regexp:matches(String, "\{([A-Za-z0-9_]+)\}"),

NewString = lists:foldl(fun ({Start, Length}, S) -> replstr(S, lists:reverse(string:substr(S, Start, Length)), Start) end, String, FieldList),
fsharp
open System
open System.Text.RegularExpressions
let reverseMatch (m:Match) =
String(m.Groups.[1].Value.ToCharArray() |> Array.rev)
let output = Regex.Replace("The {Quick} Brown {Fox}", @"\{(\w+)\}", reverseMatch)

Define an empty list

Assign the variable "list" to a list with no elements
erlang
List = [],
fsharp
let list = []
let list = List.empty
let list = new Generic.List<string>()
let list = new Generic.LinkedList<string>()

Define a static list

Define the list [One, Two, Three, Four, Five]
erlang
List = [one, two, three, four, five],
List = ['One', 'Two', 'Three', 'Four', 'Five'],
fsharp
let list = ["One"; "Two"; "Three"; "Four"; "Five"]
let list = (new Generic.LinkedList<string>([|"One"; "Two"; "Three"; "Four"; "Five"|]))
let list = (new Generic.LinkedList<string>())

list.AddFirst("One") ; list.AddLast("Five") ; list.AddBefore(list.Find("Five"), "Four")
list.AddAfter(list.Find("One"), "Two") ; list.AddAfter(list.Find("Two"), "Three")
let list = (new Generic.List<string>())

[|"One"; "Two"; "Three"; "Four"; "Five"|] |> Array.iter (fun x -> list.Add(x))

Join the elements of a list, separated by commas

Given the list [Apple, Banana, Carrot] produce "Apple, Banana, Carrot"
erlang
Result = string:join(Fruit, ", "),
Result = lists:foldl(fun (E, Acc) -> Acc ++ ", " ++ E end, hd(Fruit), tl(Fruit)),
Result = lists:flatten([ hd(Fruit) | [ ", " ++ X || X <- tl(Fruit)]]).
fsharp
let result = String.Join(", ", [|"Apple"; "Banana"; "Carrot"|])
let result = (List.fold_left (fun acc item -> acc ^ (", " ^ item)) (List.hd fruit) (List.tl fruit))
let result = (List.fold_left (fun (acc : StringBuilder) (item : string) -> acc.Append(", ").Append(item)) (new StringBuilder(List.hd fruit)) (List.tl fruit)).ToString()

Join the elements of a list, in correct english

Create a function join that takes a List and produces a string containing an english language concatenation of the list. It should work with the following examples:
join([Apple, Banana, Carrot]) = "Apple, Banana, and Carrot"
join([One, Two]) = "One and Two"
join([Lonely]) = "Lonely"
join([]) = ""
erlang
io:format("~s~n", [join(Fruit)]).

% ------

join([]) -> "";
join([W|Ws]) -> join(Ws, W).

join([], S) -> S;
join([W], S) -> join([], S ++ " and " ++ W);
join([W|Ws], S) -> join(Ws, S ++ ", " ++ W).
%% According to the reference manual, "string is not a data type in Erlang."
%% Instead it has lists of integers. But I/O functions in general accept
%% IO lists, where an IO list is either a list of IO lists or an integer.
%% This gives you O(1) string concatenation.

-module(commalist).
-export([join/1]).

join([]) -> "";
join([W]) -> W;
join([W1, W2]) -> [W1, " and ", W2];
join([W1, W2, W3]) -> [W1, ", ", W2, ", and ", W3];
join([W1|Ws]) -> [W1, ", ", join(Ws)].

fsharp
let join list =
let rec join' list' s =
match list' with
| [] -> s
| [w] -> join' [] (s ^ " and " ^ w)
| w :: ws -> join' ws (s ^ ", " ^ w)
match list with
| [] -> ""
| w :: ws -> join' ws w

// ------

printfn "%s" (join fruit)

Produce the combinations from two lists

Given two lists, produce the list of tuples formed by taking the combinations from the individual lists. E.g. given the letters ["a", "b", "c"] and the numbers [4, 5], produce the list: [["a", 4], ["b", 4], ["c", 4], ["a", 5], ["b", 5], ["c", 5]]
erlang
Combinations =
lists:foldl(fun (Number, Acc) -> Acc ++ lists:map(fun (Letter) -> {Letter, Number} end, Letters) end, [], Numbers),
Combinations = lists:keysort(2, sofs:to_external(sofs:product(sofs:set(Letters), sofs:set(Numbers))))
[[A, B] || A <- ["a", "b", "c"], B <- [4, 5]].

fsharp
let combinations = (List.fold_left (fun acc number -> acc @ (List.map (fun letter -> (letter, number)) letters)) [] numbers)
let combinations aa bb =
aa
|> List.map (fun a -> bb |> List.map (fun b -> (a, b)))
|> List.concat

From a List Produce a List of Duplicate Entries

Taking a list:
["andrew", "bob", "chris", "bob"]

Write the code to produce a list of duplicates in the list:
["bob"]
erlang
{_, Result} = lists:foldl(
fun(X, {Uniq, Dupl}) -> case lists:member(X, Uniq) of
true -> {Uniq,[X | Dupl]};
_ -> {[X | Uniq], Dupl}
end
end,
{[], []},
List),
Fun = fun
([X | Xs], F) -> case lists:member(X, Xs) of
true -> [X | F(Xs, F)];
_ -> F(Xs, F)
end;
([], _) -> []
end,
Result = Fun(List, Fun).
fsharp
["andrew"; "bob"; "chris"; "bob"]
|> Seq.countBy id
|> Seq.filter (fun (k,n) -> n > 1)
|> Seq.map fst
|> Seq.toList

Fetch an element of a list by index

Given the list [One, Two, Three, Four, Five], fetch the third element ('Three')
erlang
Result = lists:nth(3, List),
Result = element(3, list_to_tuple(List)),
{Left, _} = lists:split(3, List), Result = lists:last(Left),
Result = nth0(2, List),
fsharp
let result = List.nth ["One"; "Two"; "Three"; "Four"; "Five"] 2

Fetch the last element of a list

Given the list [Red, Green, Blue], access the last element ('Blue')
erlang
Result = lists:last(List),
Result = last(List),
Result = hd(lists:reverse(List)),
Result = lists:nth(length(List), List),
fsharp
let last list =
let rec last' list' =
match list' with
| [x] -> x
| x :: xs -> last' xs
if List.is_empty list then failwith "empty list" else last' list

// ------

let result = last list
let result = (List.nth list ((List.length list) - 1))
let result = (List.hd (List.rev list))

Find the common items in two lists

Given two lists, find the common items. E.g. given beans = ['broad', 'mung', 'black', 'red', 'white'] and colors = ['black', 'red', 'blue', 'green'], what are the bean varieties that are also color names?
erlang
Beans = sets:from_list([broad, mung, black, red, white]), Colors = sets:from_list([black, red, blue, green]),

Common = sets:to_list(sets:intersection(Beans, Colors)),
fsharp
let beans = (Set.of_list ["broad"; "mung"; "black"; "red"; "white"])
let colors = (Set.of_list ["black"; "red"; "blue"; "green"])
let common = (Set.intersect beans colors)
let beans = Set ["broad"; "mung"; "black"; "red"; "white"]
let colors = Set ["black"; "red"; "blue"; "green"]
let common = Set.intersect beans colors
// Iterates elements of
// list1 across Elements of list2 returning a list of string options
// as generated by List.tryFind
let findCommon(list1 : 'a list, list2 : 'a list) : 'a list =
list1 |> List.map(fun y -> list2 |> List.tryFind(fun x -> y = x))
// Iterates elements of string option list generated above
// returning a string list containing common elements of List1 and List2
|> List.fold(fun acc x -> if x <> None then x.Value::acc else acc) []
// reverse order of list (can't seem to make List.foldBack work for this
|> List.rev

let beans = ["broad"; "mung"; "black"; "red"; "white"]
let colors = ["black"; "red"; "blue"; "green"]
printfn "%A" (findCommon(beans, colors)) ;;

Display the unique items in a list

Display the unique items in a list, e.g. given ages = [18, 16, 17, 18, 16, 19, 14, 17, 19, 18], display the unique elements, i.e. with duplicates removed.
erlang
Ages = sets:to_list(sets:from_list([18, 16, 17, 18, 16, 19, 14, 17, 19, 18])), io:format("~w~n", [Ages]).
lists:usort([18, 16, 17, 18, 16, 19, 14, 17, 19, 18]).
fsharp
(Set.ofList [18; 16; 17; 18; 16; 19; 14; 17; 19; 18]) |> Set.iter (fun age -> printf "%d, " age)

Remove an element from a list by index

Given the list [Apple, Banana, Carrot], remove the first element to produce the list [Banana, Carrot]
erlang
Result = tl(List),
[_|Result] = List,
N = 1, {Left, Right} = lists:split(N - 1, List), Result = Left ++ tl(Right),
Result = drop(1, List),
fsharp
let split_at list n =
let rec split_at' list' n' left right =
match list' with
| [] -> (List.rev left, List.rev right)
| x :: xs -> if n' <= n then split_at' xs (n' + 1) (x :: left) right else split_at' xs (n' + 1) left (x :: right)
split_at' list 0 [] []

// ------

let (_, right) = split_at fruit 0
let drop list n =
if n <= 0 then
list
else
let (_, right) = split_at list (n - 1)
right

// ------

let result = (drop fruit 1)

Remove the last element of a list

erlang
Result = init(List),
Result = take(length(List) - 1, List),
Result = lists:reverse(tl(lists:reverse(List))),
fsharp
let take list n =
if n <= 0 then
list
else
let (left, _) = split_at list (n - 1)
left

// ------

let result = (take fruit ((List.length fruit) - 1))
let but_last list =
let rec but_last' list' acc =
match list' with
| [x] -> List.rev acc
| x :: xs -> but_last' xs (x :: acc)
if List.is_empty list then [] else but_last' list []

// ------

let result = (but_last fruit)

Rotate a list

Given a list ["apple", "orange", "grapes", "bananas"], rotate it by removing the first item and placing it on the end to yield ["orange", "grapes", "bananas", "apple"]
erlang
N = 1, {Left, Right} = lists:split(N, List), Result = Right ++ Left,
N = 1, Result = rotate(N, List),
fsharp
let rotate list n =
if n <= 0 then
list
else
let (left, right) = split_at list (n - 1)
right @ left

// ------

let result = (rotate fruit 1)

Gather together corresponding elements from multiple lists

Given several lists, gather together the first element from every list, the second element from every list, and so on for all corresponding index values in the lists. E.g. for these three lists, first = ['Bruce', 'Tommy Lee', 'Bruce'], last = ['Willis', 'Jones', 'Lee'], years = [1955, 1946, 1940] the result should produce 3 actors. The middle actor should be Tommy Lee Jones.
erlang
First = ['Bruce', 'Tommy Lee', 'Bruce'], Last = ['Willis', 'Jones', 'Lee'], Years = [1955, 1946, 1940],

Result = lists:zip3(First, Last, Years),
fsharp
let result = (List.zip3 first last years)

List Combinations

Given two source lists (or sets), generate a list (or set) of all the pairs derived by combining elements from the individual lists (sets). E.g. given suites = ['H', 'D', 'C', 'S'] and faces = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'], generate the deck of 52 cards, confirm the deck size and check it contains an expected card, say 'Ace of Hearts'.
erlang
Cards = lists:foldl(fun (Suite, Acc) -> Acc ++ lists:flatmap(fun (Face) -> [{Suite, Face}] end, Faces) end, [], Suites),

io:format("Deck has ~B cards~n", [length(Cards)]),
IsMember = lists:member({h, 'A'}, Cards),
io:format("~s~n", [if IsMember -> "Deck contains 'Ace of Hearts'" ; true -> "'Ace of Hearts' not in deck" end]),
Cards = sofs:to_external(sofs:product(sofs:set(Suites), sofs:set(Faces))),

io:format("Deck has ~B cards~n", [length(Cards)]),
IsMember = lists:member({h, 'A'}, Cards),
io:format("~s~n", [if IsMember -> "Deck contains 'Ace of Hearts'" ; true -> "'Ace of Hearts' not in deck" end]),
Deck2 = [{S, V} || S <- [d, c, h, s], V <- [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']],
52 = length(Deck2),
true = lists:member({h, 'A'}, Deck2).

fsharp
let cards = (List.fold_left (fun acc suite -> acc @ (List.map (fun face -> (suite, face)) faces)) [] suites)

printfn "Deck has %d cards" (List.length cards)
printfn "%s" (if (List.exists (fun e -> e = ("h", "A")) cards) then "Deck contains 'Ace of Hearts'" ; else "'Ace of Hearts' not in deck")
let product (set1 : List<'a>) (set2 : List<'a>) : List<'a * 'a> =
let p = new ResizeArray<'a * 'a>()
for e1 in set1 do for e2 in set2 do p.Add(e1, e2) done done
Array.to_list (p.ToArray())

// ------

let cards = product suites faces

printfn "Deck has %d cards" (List.length cards)
printfn "%s" (if (List.exists (fun e -> e = ("h", "A")) cards) then "Deck contains 'Ace of Hearts'" ; else "'Ace of Hearts' not in deck")
let deck =
suites
|> List.map (fun s -> faces |> List.map (fun f -> (s, f)))
|> List.concat

printfn "Deck has %d cards" (List.length deck)
match deck |> List.exists (fun e -> e = ("h", "A")) with
| true -> printfn "Deck contains 'Ace of Hearts'"
| _ -> printfn "'Ace of Hearts' not in deck"

Perform an operation on every item of a list

Perform an operation on every item of a list, e.g.
for the list ["ox", "cat", "deer", "whale"] calculate
the list of sizes of the strings, e.g. [2, 3, 4, 5]
erlang
lists:map(fun (X) ->length(X) end, List).
fsharp
let lengths = List.map String.length ["ox"; "cat"; "deer"; "whale"]

Split a list of things into numbers and non-numbers

Given a list that might contain e.g. a string, an integer, a float and a date,
split the list into numbers and non-numbers.
erlang
% Wrapped call to the auxiliary function
number_split(Xs) ->
number_split(Xs, [], []).

% The auxiliary function
number_split([], Num, NonNum) ->
{Num, NonNum};
number_split([X|Xs], Num, NonNum) ->
case is_number(X) of
true ->
number_split(Xs, [X|Num], NonNum);
false ->
number_split(Xs, Num, [X|NonNum])
end.
List = ["hello", 25, 3.14, calendar:local_time()],
{Numbers, NonNumbers} = lists:partition(fun(E) -> is_number(E) end, List)
fsharp
let (things:obj list) = [ "hello"; 25; 3.14; System.DateTime.Now ]

let isNumber (x:obj) =
match x with
| :? int | :? float | :? byte | :? decimal | :? int16 | :? int64 -> true
| _ -> false

let numbers, nonNumbers = things |> List.partition isNumber

Test if a condition holds for all items of a list

Given a list, test if a certain logical condition (i.e. predicate) holds for all items of the list.
erlang
Result = lists:all(Pred, List).
fsharp
let rec IsAll predicate source =
let mutable acc = true
for e in source do
acc <- acc && (predicate e)
acc

Test if a condition holds for any items of a list

Given a list, test if a certain logical condition (i.e. predicate) holds for any items of the list.
erlang
Result = lists:any(Pred, List).
fsharp
let rec IsAny predicate source =
match source with
| [] -> false
| h::t ->
if (predicate h) then true
else (IsAny predicate t )

Define an empty map

erlang
Map = dict:new(),
Map = orddict:new(),
Map = gb_trees:empty(),
Map = ets:new(the_map_name, [set, private, {keypos, 1}]),
fsharp
let map = Map.empty
let map = new Generic.Dictionary<string, string>()
let map = new Hashtable()

Define an unmodifiable empty map

erlang

% Erlang data structures are immutable - updating a 'map' sees a modified copy created
Map = dict:new(),
fsharp
// Most native fsharp data structures are immutable - updating a 'map' sees a modified copy created
let map = Map.empty

Define an initial map

Define the map {circle:1, triangle:3, square:4}
erlang
Map = dict:from_list([{circle, 1}, {triangle, 3}, {square, 4}]),
Map0 = dict:new(),

% Erlang variables are 'single-assignment' i.e. they cannot be reassigned
Map1 = dict:store(circle, 1, Map0),
Map2 = dict:store(triangle, 3, Map1),
Map3 = dict:store(square, 4, Map2),
Map0 = gb_trees:empty(),

Map1 = gb_trees:enter(circle, 1, Map0),
Map2 = gb_trees:enter(triangle, 3, Map1),
Map3 = gb_trees:enter(square, 4, Map2),
Map = gb_trees:from_orddict(lists:keysort(1, [{circle, 1}, {triangle, 3}, {square, 4}])),
Map = ets:new(the_map_name, [ordered_set, private, {keypos, 1}]),
ets:insert(Map, [{circle, 1}, {triangle, 3}, {square, 4}]),
fsharp
let shapes = Map.ofList [("circle", 1); ("triangle", 3); ("square", 4)]
let shapes = Map.empty.Add("circle", 1).Add("triangle", 3).Add("square", 4)
let shapes = new Generic.Dictionary<string, int>()
shapes.Add("circle", 1)
shapes.Add("triangle", 3)
shapes.Add("square", 4)
let shapes = Map [("circle", 1); ("triangle", 3); ("square", 4)]

Check if a key exists in a map

Given a map pets {joe:cat,mary:turtle,bill:canary} print "ok" if an pet exists for "mary"
erlang
dict:is_key(mary, Pets) andalso begin io:format("ok~n"), true end.
IsMember = ets:member(Pets, mary), if (IsMember) -> io:format("ok~n") ; true -> false end.
case gb_trees:lookup(mary, Pets) of none -> false ; _ -> io:format("ok~n") end.
fsharp
if (Map.mem "mary" pets) then printfn "ok"
if pets.ContainsKey("mary") then printfn "ok"

Retrieve a value from a map

Given a map pets {joe:cat,mary:turtle,bill:canary} print the pet for "joe" ("cat")
erlang
dict:is_key(joe, Pets) andalso begin io:format("~w~n", [dict:fetch(joe, Pets)]), true end.
case dict:find(joe, Pets) of error -> false ; {ok, Pet} -> io:format("~w~n", [Pet]) end.
IsMember = ets:member(Pets, joe), if (IsMember) -> io:format("~w~n", [ets:lookup_element(Pets, joe, 2)]) ; true -> false end.
case ets:match(Pets, {joe, '$1'}) of [] -> false ; [[Pet]] -> io:format("~w~n", [Pet]) end.
case gb_trees:lookup(joe, Pets) of none -> false ; {value, Pet} -> io:format("~w~n", [Pet]) end.
fsharp
if (Map.mem "joe" pets) then printfn "%s" (Map.find "joe" pets)
if (pets |> Map.exists (fun key _ -> key = "joe")) then printfn "%s" (Map.find "joe" pets)
let key = "joe"
match (pets |> Map.tryfind key) with
| Some(value) -> printfn "%s" value
| None -> printfn "Key %s not found" key
if pets.ContainsKey("joe") then printfn "%s" pets.["joe"]
if pets.ContainsKey("joe") then printfn "%s" (pets.["joe"] :?> string)

Add an entry to a map

Given an empty pets map, add the mapping from "rob" to "dog"
erlang
Pets1 = dict:store(rob, dog, Pets0).
ets:insert(Pets, {rob, dog}).
Pets1 = gb_trees:enter(rob, dog, Pets0).
fsharp
pets <- (Map.add "rob" "dog" pets)
pets.Add("rob", "dog")

Remove an entry from a map

Given a map pets {joe:cat,mary:turtle,bill:canary} remove the mapping for "bill" and print "canary"
erlang
Pet = dict:fetch(bill, Pets0), Pets1 = dict:erase(bill, Pets0), io:format("~w~n", [Pet]),
Pet = ets:lookup_element(Pets, bill, 2), ets:delete(Pets, bill), io:format("~w~n", [Pet]),
{value, Pet} = gb_trees:lookup(bill, Pets0), Pets1 = gb_trees:delete(bill, Pets0), io:format("~w~n", [Pet]),
fsharp
let key = "bill"
match (pets |> Map.tryFind key) with
| Some(value) -> pets <- (Map.remove key pets) ; printfn "%s : %s removed" key value
| None -> printfn "Key %s not found" key
let key = "bill"
let entry = if (pets.ContainsKey(key)) then Some(pets.[key]) ; else None
pets.Remove(key)

match entry with
| Some(value) -> printfn "%s" value
| None -> printfn "key not found"

Create a histogram map from a list

Given the list [a,b,a,c,b,b], produce a map {a:2, b:3, c:1} which contains the count of each unique item in the list
erlang
% Imperative Solution
Histogram = histogram(List),
% Functional (1) Solution
Histogram = histogram(List),
lists:foldl(fun(Elem, OldDict) ->
dict:update_counter(Elem, 1, OldDict)
end,
dict:new(),
[a,b,a,c,b,b])).
fsharp
let histogram = (List.foldLeft (fun (acc : Map<char, int>) (e : char) -> if (Map.mem e acc) then (Map.add e ((Map.find e acc) + 1) acc) ; else (Map.add e 1 acc)) (Map.empty) list)
let histogram list =
let rec histogram' list' dict' =
match list' with
| [] -> dict'
| x :: xs ->
match Map.tryFind x dict' with
| Some(Value) -> histogram' xs (Map.add x (Value + 1) dict')
| None -> histogram' xs (Map.add x 1 dict')
histogram' list Map.empty

// ------

let histogram' = histogram list
let histogram = (List.foldLeft (fun (acc : Generic.Dictionary<char, int>) (e : char) -> (if acc.ContainsKey(e) then acc.[e] <- acc.[e] + 1 ; else acc.Add(e, 1)) ; acc) (new Generic.Dictionary<char, int>()) list)
let histogram =
list
|> Seq.groupBy (fun a -> a)
|> Seq.map(fun (key, elements) -> key, Seq.length elements)
|> Map.ofSeq

Categorise a list

Given the list [one, two, three, four, five] produce a map {3:[one, two], 4:[four, five], 5:[three]} which sorts elements into map entries based on their length
erlang
% Imperative Solution
CatList = categorise(List),
% Functional (1) Solution
CatList = categorise(List),
fsharp
let catmap = (List.foldLeft (fun (acc : Map<int, List<string> >) (e : string) -> if (Map.mem e.Length acc) then (Map.add e.Length ((Map.find e.Length acc) @ [e]) acc) ; else (Map.add e.Length [e] acc)) (Map.empty) list)
let lengthMap =
["one"; "two"; "three"; "four"; "five"]
|> Seq.groupBy (fun s -> s.Length)
|> Seq.map (fun (length, entries) -> (length, entries |> List.ofSeq))
|> Map.ofSeq

Perform an action if a condition is true (IF .. THEN)

Given a variable name, if the value is "Bob", display the string "Hello, Bob!". Perform no action if the name is not equal.
erlang
if (Name == "Bob") -> io:format("Hello, ~s!~n", [Name]) ; true -> false end.
case Name of "Bob" -> io:format("Hello, ~s!~n", [Name]) ; _ -> false end.
Name == "Bob" andalso (begin io:format("Hello, ~s!~n", [Name]), true end).
fsharp
if name = "Bob" then printfn "Hello, %s!" name
name = "Bob" && begin printfn "Hello, %s!" name ; true end

Perform different actions depending on a boolean condition (IF .. THEN .. ELSE)

Given a variable age, if the value is greater than 42 display "You are old", otherwise display "You are young"
erlang
if Age > 42 -> io:format("You are old~n") ; true -> io:format("You are young~n") end.
Message = if Age > 42 -> "old" ; true -> "young" end, io:format("You are ~s~n", [Message]).
case Age > 42 of true -> io:format("You are old~n") ; false -> io:format("You are young~n") end.
case Age of _ when Age > 42 -> io:format("You are old~n") ; _ -> io:format("You are young~n") end.
Message = case Age of _ when Age > 42 -> "old" ; _ -> "young" end, io:format("You are ~s~n", [Message]).
Age > 42 andalso (begin io:format("You are old~n"), true end) orelse (begin io:format("You are young~n"), true end).
(fun (X) when X > 42 -> io:format("You are old~n"); (_) -> io:format("You are young~n") end)(Age).
(fun () when Age > 42 -> io:format("You are old~n"); () -> io:format("You are young~n") end)().
io:format("You are ~s~n", [if Age > 42 -> "old" ; true -> "young" end]).
fsharp
if age > 42 then printfn "You are old" else printfn "You are young"
let message = if age > 42 then "old" else "young"
printfn "You are %s" message

Perform different actions depending on several boolean conditions (IF .. THEN .. ELSIF .. ELSE)

erlang
if
Age > 84 -> io:format("You are really ancient~n");
Age > 30 -> io:format("You are middle-aged~n");
true -> io:format("You are young~n")
end.
case Age of
_ when Age > 84 -> io:format("You are really ancient~n");
_ when Age > 30 -> io:format("You are middle-aged~n");
true -> io:format("You are young~n")
end.
fsharp
if age > 84 then printfn "You are really ancient"
elif age > 30 then printfn "You are middle-aged"
else printfn "You are young"
let message = match age with
| _ when age > 84 -> "really ancient"
| _ when age > 30 -> "middle-aged"
| _ -> "young"
printfn "You are %s" message

Replacing a conditional with many branches with a switch/case statement

Many languages support more compact forms of branching than just if ... then ... else such as switch or case or match. Use such a form to add an appropriate placing suffix to the numbers 1..40, e.g. 1st, 2nd, 3rd, 4th, ..., 11th, 12th, ... 39th, 40th
erlang
Suffix = case Num of
N when N > 10, N < 20 -> "th";
N when N rem 10 =:= 1 -> "st";
N when N rem 10 =:= 2 -> "nd";
N when N rem 10 =:= 3 -> "rd";
_ -> "th"
end,
io_lib:format("~w~s", [Num, Suffix])
fsharp
let suffix = function
| n when n > 10 && n < 20 -> "th"
| n when n % 10 = 1 -> "st"
| n when n % 10 = 2 -> "nd"
| n when n % 10 = 3 -> "rd"
| _ -> "th"

seq { 1 .. 40 }
|> Seq.iter (fun n -> printfn "%i%s" n (suffix n))

Perform an action multiple times based on a boolean condition, checked before the first action (WHILE .. DO)

Starting with a variable x=1, Print the sequence "1,2,4,8,16,32,64,128," by doubling x and checking that x is less than 150.
erlang
X = 1, print_while_X_less_150(X).
Pred = fun (X) -> X < 150 end,
Action = fun (X) -> io:format("~B,", [X]), X * 2 end,
X = 1,

while_do(Pred, Action, X).
fsharp
let mutable x = 1
while x < 150 do printf "%d, " x ; (x <- x * 2) done
// The problem is clearly geared towards imperative languages ;-)
// No need to mutate any variable, here's how to do it loop-free functional:
let rec powers2 i = seq { if i < 150 then yield i; yield! powers2 (i*2) }
powers2 1 |> Seq.iter (fun i -> printf "%i, " i)

Perform an action multiple times based on a boolean condition, checked after the first action (DO .. WHILE)

Simulate rolling a die until you get a six. Produce random numbers, printing them until a six is rolled. An example output might be "4,2,1,2,6"
erlang
Pred = fun (DiceRoll) -> DiceRoll =/= 6 end,
Action = fun (DiceRoll) -> io:format("~B,", [DiceRoll]), dice_roll() end,

do_while(Pred, Action, dice_roll()).
-module(dice).
-export([start/0]).

start() ->
roll(dice_roll()).

roll(6) ->
io:format("6~n", []);
roll(N) ->
io:format("~B,", [N]),
roll(dice_roll()).

dice_roll() -> random:uniform(6).
fsharp
open System
let rand = Random()

Seq.initInfinite (fun _ -> rand.Next(1, 7))
|> Seq.takeWhile (fun x -> x < 6)
|> fun items -> String.Join(",", items)
|> function s when s = "" -> printfn "6" | s -> printfn "%s,6" s

Perform an action a fixed number of times (FOR)

Display the string "Hello" five times like "HelloHelloHelloHelloHello"
erlang
dotimes(5, fun () -> io:format("Hello") end).
lists:foreach(fun (_) -> io:format("Hello") end, lists:seq(1, 5)).
fsharp
for i = 1 to 5 do printf "Hello" done
dotimes 5 (fun () -> printf "Hello")
// Repetition via ranging over a List type(index ignored)
for _ in list do printf "Hello" done
// Repetition via ranging over a Sequence type(index ignored)
for _ in sequence do printf "Hello" done
// Repetition via ranging over an Array type(index ignored)
for _ in array do printf "Hello" done

Perform an action a fixed number of times with a counter

Display the string "10 .. 9 .. 8 .. 7 .. 6 .. 5 .. 4 .. 3 .. 2 .. 1 .. Liftoff!"
erlang
fromto(10, 1, -1, fun (X) -> io:format("~B .. ", [X]) end), io:format("Liftoff!~n").
lists:foreach(fun (X) -> io:format("~B .. ", [X]) end, lists:seq(10, 1, -1)), io:format("Liftoff!~n").
fsharp
for i = 10 downto 1 do printf "%d .. " i done
printfn "Liftoff!"
// Repetition via ranging over a Sequence type
for i in {10 .. -1 .. 1} do printf "%d .. " i done ; printfn "Liftoff!"

Read the contents of a file into a string

erlang
Text = readfile("Solution607.erl"),
Text = readfile("Solution608.erl"),
fsharp
let file = new FileStream("test.txt", FileMode.Open)
let buffer = new String((new BinaryReader(file)).ReadChars(Convert.ToInt32(file.Length)))
let stream = new StreamReader("test.txt")
let buffer = stream.ReadToEnd()
let buffer = File.ReadAllText("test.txt")

Process a file one line at a time

Open the source file to your solution and print each line in the file, prefixed by the line number, like:
1> First line of file
2> Second line of file
3> Third line of file
erlang
Reader = fun (IODevice) -> io:get_line(IODevice, "") end,
Worker = fun (Line, N) -> io:format("~B> ~s", [N, Line]), N + 1 end,

while_not_eof("Solution609.erl", Reader, Worker, 1).
Reader = fun (Filename) -> {ok, Contents} = file:read_file(Filename), Contents end,
Transformer = fun (Line, N) -> string:concat(string:concat(integer_to_list(N), "> "), Line) end,
Printer = fun (Line) -> io:format("~s~n", [Line]) end,

Lines = string:tokens(binary_to_list(Reader("Solution610.erl")), "\n"),
NewLines = lists:zipwith(Transformer, Lines, lists:seq(1, length(Lines))),
lists:foreach(Printer, NewLines).
fsharp
let stream = new StreamReader("test.txt")
let mutable i = 1
let mutable line = stream.ReadLine()
while (line <> null) do printfn "%d> %s" i line ; line <- stream.ReadLine() ; i <- i + 1 done
stream.Close()
let proc_a_line (filename : string) proc =
let stream = new StreamReader(filename)
let rec proc_a_line' count line =
match line with
| null -> stream.Close()
| _ -> proc count line ; proc_a_line' (count + 1) (stream.ReadLine())
proc_a_line' 1 (stream.ReadLine())

// ------

let _ = proc_a_line "test.txt" (fun i line -> printfn "%d> %s" i line)
let reader(filename : string) = seq {
use sr = new StreamReader(filename)
while not sr.EndOfStream do
let line = sr.ReadLine()
yield line
done
}

// ------

reader("test.txt") |> Seq.iteri (fun i line -> printfn "%d> %s" (i + 1) line)
File.ReadAllLines("test.txt") |> Array.iteri (fun i line -> printfn "%d> %s" (i + 1) line)
// Unlike ReadAllLines, ReadLines (new in .NET 4) only reads the file
// one line at a time, rather than reading the entire file into an array first.

open System.IO
File.ReadLines("test.txt") |> Seq.iteri (fun i line -> printfn "%d> %s" (i + 1) line)

Write a string to a file

erlang
Line = "This line overwites file contents!\n",
{ok, IODevice} = file:open("test.txt", [write]), file:write(IODevice, Line), file:close(IODevice).
fsharp
let stream = new StreamWriter("test.txt", false)
stream.WriteLine("This line overwrites file contents!")

Append to a file

erlang
Line = "This line appended to file!\n",
{ok, IODevice} = file:open("test.txt", [append]), file:write(IODevice, Line), file:close(IODevice).
fsharp
let stream = new StreamWriter("test.txt", true)
stream.WriteLine("This line appended to file!")

Process each file in a directory

erlang
% File basenames only - many tasks require absolute paths to work
lists:foreach(fun (FileOrDirPath) -> Worker(FileOrDirPath) end, file:list_dir(Directory)).
% Absolute paths provided - will accomodate most tasks
lists:foreach(fun (FileOrDirPath) -> Worker(FileOrDirPath) end, list_dir_path(Directory)).
fsharp
let dirname = "c:\\"

let processFile filename = printfn "%s" filename
for filename in Directory.GetFiles(dirname) do processFile filename done
let dirname = "c:\\"

Directory.GetFiles(dirname) |> Array.iter (fun filename -> printfn "%s" filename)

Process each file in a directory recursively

erlang
filelib:fold_files(Directory, ".*", true, fun (FileOrDirPath, Acc) -> Worker(FileOrDirPath), Acc end, []).
process_dir(Directory, Worker).
fsharp
let processDirectory dirname proc =
let rec processDirectory' dirname' =
Directory.GetFiles(dirname') |> Array.iter proc
Directory.GetDirectories(dirname') |> Array.iter processDirectory'
processDirectory' dirname

// ------

let dirname = "c:\\"

processDirectory dirname (fun filename -> printfn "%s" filename)

Parse a date and time from a string

Given the string "2008-05-06 13:29", parse it as a date representing 6th March, 2008 1:29:00pm in the local time zone.
erlang
% AFAIK, no datetime-parsing library exists; 'parse_to_datetime' is a simplistic, problem-specific hack
LocalDateTime = erlang:universaltime_to_localtime(parse_to_datetime("2008-05-06 13:29:34")),
fsharp
let dateTime = DateTimeOffset.Parse("2008-05-06 13:29")

// Use format specifiers to appropriately format string
// 1. Default culture
printfn "%s" (dateTime.ToString("d MMMM, yyyy h:mm:sstt"))

// 2. Nominated culture
Console.WriteLine("{0}", dateTime.ToString("d MMMM, yyyy h:mm:sstt"), Globalization.CultureInfo.CreateSpecificCulture("en-us"))
let dateTime = DateTimeOffset.Parse("2008-05-06 13:29")

// Customize date/time string
let dsb = ((new StringBuilder(40)).Append(dateTime.ToString("%d")).Append("th ").Append(dateTime.ToString("MMMM, yyyy h:mm:ss")).Append(dateTime.ToString("tt").ToLower()))

printfn "%s" (dsb.ToString())

Display information about a date

Display the day of month, day of year, month name and day name of the day 8 days from now.
fsharp
Using F# interactive

> let Then = DateTime.Now.AddDays(8.0)
- let dayNumber = Then.DayOfYear.ToString()
- let solution = Then.ToString("dd " + dayNumber + " MMMM dddd");;

val Then : DateTime = 08/08/2010 08:58:05
val dayNumber : string = "220"
val solution : string = "08 220 August Sunday"

>

Display a date in different locales

Display a language/locale friendly version of New Year's Day for 2009 for several languages/locales. E.g. for languages English, French, German, Italian, Dutch the output might be something like:

Thursday, January 1, 2009
jeudi 1 janvier 2009
giovedì 1 gennaio 2009
Donnerstag, 1. Januar 2009
donderdag 1 januari 2009

(Indicate in comments where possible if any language specific or operating system configuration needs to be in place.)
fsharp
open System
open System.Globalization

let jan1 = DateTime(2009, 1, 1)

[ "en-US"; "fr-FR"; "de-DE"; "it-IT"; "nl-NL" ]
|> List.map CultureInfo.CreateSpecificCulture
|> List.map (fun c -> jan1.ToString("D", c))
|> List.iter (printfn "%s")

Display the current date and time

Create a Date object representing the current date and time. Print it out.
If you can also do this without creating a Date object you can show that too.
erlang
io:format("~p~n", [calendar:local_time()])
fsharp
printfn "%A" System.DateTime.Now
OOP

Define a class

Declare a class named Greeter that takes a string on creation and greets using this string if you call the "greet" method.
erlang
Greeter = make_greeter("world!"),
Greeter(greet).
fsharp
type Greeter(whom' : string) =
member this.greet() = printfn "Hello, %s!" whom'

(new Greeter("world")).greet()
type Greeter(whom' : string) =
let whom : string = whom'
member this.greet() = printfn "Hello, %s!" whom

(new Greeter("world")).greet()
type Greeter =
class
val whom : string
new(whom') = { whom = whom' }
member this.greet() = printfn "Hello, %s!" this.whom
end

(new Greeter("world")).greet()

Instantiate object with mutable state

Reimplement the Greeter class so that the 'whom' property or data member remains private but is mutable, and is provided with getter and setter methods. Invoke the setter to change the greetee, invoke 'greet', then use the getter in displaying the line, "I have just greeted {whom}.".

For example, if the greetee is changed to 'Tommy' using the setter, the 'greet' method would display:

Hello, Tommy!

The getter would then be used to display the line:

I have just greeted Tommy.
fsharp
type Greeter(name:string) =
let mutable whom = name

member this.Whom
with get () = whom
and set v = whom <- v

member this.Greet() =
printfn "Hello, %s!" whom

let greeter = Greeter("World")
greeter.Greet()
greeter.Whom <- "Tommy"
greeter.Greet()
printfn "I have just greeted %s." greeter.Whom

Implement Inheritance Heirarchy

Implement a Shape abstract class which will form the base of an inheritance hierarchy that models 2D geometric shapes. It will have:

* A non-mutable 'name' property or data member set by derived or descendant classes at construction time
* A 'area' method intended to be overridden by derived or descendant classes ( double precision floating point return value)
* A 'print' method (also for overriding) will display the shape's name, area, and all shape-specific values

Two derived or descendant classes will be created:
* Circle    -> Constructor requires a '
radius' argument, and a 'circumference' method to be implemented  
* Rectangle -> Constructor requires '
length' and 'breadth' arguments, and a 'perimeter' method to be implemented 

Instantiate an object of each class, and invoke each objects '
print' method to show relevant details.
fsharp
[<AbstractClass>]
type Shape(name:string) =
member this.Name = name
abstract Area : float
abstract Print : unit -> unit

type Circle(name, radius:float) =
inherit Shape(name)
member this.Radius = radius
member this.Circumference =
System.Math.PI * radius * 2.
override this.Area =
System.Math.PI * radius * radius
override this.Print() =
printfn "Circle: %s" this.Name
printfn "Area: %f" this.Area
printfn "Circumference: %f" this.Circumference
printfn "Radius: %f" this.Radius

type Rectangle(name, length:float, breadth:float) =
inherit Shape(name)
member this.Length = length
member this.Breadth = breadth
member this.Perimiter =
(length * 2.) + (breadth * 2.)
override this.Area =
length * breadth
override this.Print() =
printfn "Rectangle: %s" this.Name
printfn "Area: %f" this.Area
printfn "Perimiter: %f" this.Perimiter
printfn "Length: %f" this.Length
printfn "Breadth: %f" this.Breadth

let c = Circle("Foo", 2.1)
let r = Rectangle("Bar", 2.2, 3.3)

c.Print()
printfn ""
r.Print()

Implement and use an Interface

Create a Serializable interface consisting of 'save' and 'restore' methods, each of which:

* Accept a stream or handle or descriptor argument for the source or destination
* Save to destination or restore from source the properties or data members of the implementing class (restrict yourself to the primitive types 'int' and 'string')

Next, create a Person class which has 'name' and 'age' properties or data members and implements this interface. Instantiate a Person object, save it to a serial stream, and instantiate a new Person object by restoring it from the serial stream.
fsharp
// Since everyone else is using built-in functionality instead of
// defining an interface as required, I won't buck the trend.
// Maybe this problem should be named "Use serialization features" instead
// of "Implement and use an Interface"

open System
open System.IO
open System.Runtime.Serialization.Formatters.Binary

[<Serializable>]
type Person(name:string, age:int) =
member this.Name = name
member this.Age = age

let serialize x =
use ms = new MemoryStream()
let bf = new BinaryFormatter()
bf.Serialize(ms, x)
ms.ToArray()

let deserialize<'a> bytes =
use ms = new MemoryStream(bytes:byte[])
let bf = new BinaryFormatter()
bf.Deserialize(ms) :?> 'a

let before = Person("Joel", 35)
let bytes = serialize before
let after = deserialize<Person> bytes

printfn "Before: %s, %i" before.Name before.Age
printfn "After: %s, %i" after.Name after.Age

Check your language appears on the langref.org site

Your language name should appear within the HTML found at the http://langreg.org main page.
erlang
URL = "http://langref.org/", Language = "erlang", Regexp = ".*" ++ URL ++ Language ++ ".*",

case http:request(URL) of
{ok, {_, _, Body}} ->
case regexp:first_match(Body, Regexp) of
{match, _, _} -> io:format("Language ~s exists @ ~s~n", [Language, URL]);
_ -> false
end;
{error, ErrorInfo} -> throw("Error: " ++ http:format_error(ErrorInfo))
end,
fsharp
let httpReq = (WebRequest.Create(url) :?> HttpWebRequest)
httpReq.KeepAlive <- false
let httpStream = new StreamReader(httpReq.GetResponse().GetResponseStream())
let htmlPage = httpStream.ReadToEnd()
httpStream.Close()

let offerStatus = (if (htmlPage.IndexOf(url ^ language) > 0) then "offers" ; else "does not offer")
Console.WriteLine("{0} {1} {2}", url, offerStatus, language)

Send an email

Use library functions, classes or objects to create a short email addressed to your own email address. The subject should be, "Greetings from langref.org", and the user should be prompted for the message body, and whether to cancel or proceed with sending the email.
fsharp
open System
open System.Net
open System.Net.Mail
open System.Net.Mime

let subject = "Greetings from langref.org"
let from = "username@gmail.com"
let destination = "username@gmail.com"

printfn "Write mail body (press 'Enter' when finished):"
let mutable body = Console.ReadLine()
if body = null || body.Length = 0 then
body <- "Hello World"

let mail = new MailMessage(from, destination, subject, body)

let smtpHost = "smtp.gmail.com"
let clientCredentials = new NetworkCredential("username@gmail.com", "password")
let smtpClient = new SmtpClient(smtpHost,587)
smtpClient.EnableSsl <- true
smtpClient.UseDefaultCredentials <- false
smtpClient.Credentials <- clientCredentials

printfn "Send email? y/n"
match Console.ReadLine() with
| "y" -> smtpClient.Send(mail);mail.Dispose();printfn "email delivered"
| "n" -> smtpClient.Dispose()
| _ -> smtpClient.Dispose()
XML

Process an XML document

Given the XML Document:

<shopping>
  <item name="bread" quantity="3" price="2.50"/>
  <item name="milk" quantity="2" price="3.50"/>
</shopping>

Print out the total cost of the items, e.g. $14.50
erlang
-include_lib("xmerl/include/xmerl.hrl").
-export([get_total/1]).

get_total(ShoppingList) ->
{XmlElt, _} = xmerl_scan:string(ShoppingList),
Items = xmerl_xpath:string("/shopping/item", XmlElt),
Total = lists:foldl(fun(Item, Tot) ->
[#xmlAttribute{value = PriceString}] = xmerl_xpath:string("/item/@price", Item),
{Price, _} = string:to_float(PriceString),
[#xmlAttribute{value = QuantityString}] = xmerl_xpath:string("/item/@quantity", Item),
{Quantity, _} = string:to_integer(QuantityString),
Tot + Price*Quantity
end,
0, Items),
io:format("$~.2f~n", [Total]).
fsharp
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll"

open System
open System.Xml.Linq
//XElement Helper
let xname sname = XName.Get sname

let xmlsnippet =
let snippet = new XElement(xname "shopping")
//create bread
let bread = new XElement(xname "item")
bread.SetAttributeValue(xname "name","bread")
bread.SetAttributeValue(xname "quantity",3)
bread.SetAttributeValue(xname "price",2.50)
//add bread to snippet
snippet.Add(bread)
//create milk
let milk = new XElement(xname "item")
milk.SetAttributeValue(xname "name","milk")
milk.SetAttributeValue(xname "quantity",2)
milk.SetAttributeValue(xname "price",3.50)
//add milk to snippet
snippet.Add(milk)
snippet

let totalprice (xe: XElement) =
xe.Descendants(xname "item")
|> Seq.map(fun i -> Double.Parse(i.Attribute(xname "price").Value))
|> Seq.fold(fun acc x -> acc + x) 0.0


let xname sname = XName.Get sname
let xattr (elem: XElement) sname = elem.Attribute(xname sname).Value
let xml = XDocument.Load("xml.txt")

let shoppingCost =
xml.Descendants(xname "item")
|> Seq.map (fun i -> Double.Parse(xattr i "quantity"), Double.Parse(xattr i "price"))
|> Seq.sumBy (fun (quantity, price) -> quantity * price)
// Alternative solution that uses XML Navigation, and XPath expressions to ensure that
// the items have the required attributes
let xname sname = XName.Get sname
let xattr (elem: XElement) sname = elem.Attribute(xname sname).Value

let navigator = XPathDocument("xml.txt").CreateNavigator()
let path = XPathExpression.Compile("/shopping/item[@price][@quantity]")
let names = XmlNamespaceManager(navigator.NameTable)
path.SetContext(names)
let shoppingCost =
match path.ReturnType with
| XPathResultType.NodeSet ->
navigator.Select(path)
|> Seq.cast
|> Seq.map (fun (i: XPathNavigator) ->
if i.IsNode then
let elem = XElement.Parse(i.OuterXml)
Double.Parse(xattr elem "quantity"), Double.Parse(xattr elem "price")
else
failwith "Error in expression, expecting to see a node"
)
|> Seq.sumBy (fun (quantity, price) -> quantity * price)
| _ -> failwith "Error in expression, expecting to see a node set"

create some XML programmatically

Given the following CSV:

bread,3,2.50
milk,2,3.50

Produce the equivalent information in XML, e.g.:

<shopping>
  <item name="bread" quantity="3" price="2.50" />
  <item name="milk" quantity="2" price="3.50" />
</shopping>
erlang
to_xml(ShoppingList) ->
Items = lists:map(fun(L) ->
[Name, Quantity, Price] = string:tokens(L, ","),
{item, [{name, Name}, {quantity, Quantity}, {price, Price}], []}
end, string:tokens(ShoppingList, "\n")),
xmerl:export_simple([{shopping, [], Items}], xmerl_xml).
fsharp
#r "System.Xml.dll"
#r "System.Xml.Linq.dll"

open System
open System.Xml
open System.Xml.Linq

let data = "bread,3,2.50
milk,2,3.50"

let X name =
XName.Get(name)

let lines = data.Split( [|"\n" |], StringSplitOptions.RemoveEmptyEntries)

let document = new XDocument()
let element = new XElement(X "shopping")
document.Add(element)

lines
|> Seq.iter (fun line ->
let items = line.Split([|','|])
let item = new XElement(X "item",
new XAttribute(X "name", items.[0]),
new XAttribute(X "quantity", items.[1]),
new XAttribute(X "price", items.[2]))
element.Add(item))

let output = document.ToString();;

Find all Pythagorean triangles with length or height less than or equal to 20

Pythagorean triangles are right angle triangles whose sides comply with the following equation:

a * a + b * b = c * c

where c represents the length of the hypotenuse, and a and b represent the lengths of the other two sides. Find all such triangles where a, b and c are non-zero integers with a and b less than or equal to 20. Sort your results by the size of the hypotenuse. The expected answer is:

[3, 4, 5]
[6, 8, 10]
[5, 12, 13]
[9, 12, 15]
[8, 15, 17]
[12, 16, 20]
[15, 20, 25]
erlang
find_all_pythagorean_triangles(L) ->
lists:sort(fun({_, _, H1}, {_, _, H2}) -> H1 =< H2 end,
[ { X, Y, Z } ||
X <- lists:seq(1,L),
Y <- lists:seq(1,L),
Z <- lists:seq(1,2*L),
X*X + Y*Y =:= Z*Z,
Y > X,
Z > Y
]).

main(_) ->
List = find_all_pythagorean_triangles(20).
fsharp
let getGoodTri (a,b) =
let h = int(System.Math.Sqrt(float(a*a + b*b)))
if a*a + b*b = h*h then Some(a,b,h)
else None

seq{ for i in 1..20 do yield! seq{for j in i..20 do yield i,j} } |> Seq.choose(getGoodTri) |> Seq.sortBy(fun (_,_,c) -> c);;

Greatest Common Divisor

Find the largest positive integer that divides two given numbers without a remainder. For example, the GCD of 8 and 12 is 4.

erlang
-module(gcd).
-export([gcd/2]).

gcd(A, 0) -> A;
gcd(A, B) -> gcd(B, A rem B).
fsharp
let rec gcd x y =
if y = 0 then x
else gcd y (x % y)
Fun

produces a copy of its own source code

In computing, a quine is a computer program which produces a copy of its own source code as its only output.
fsharp
(fun s -> printf "%s %s" s s) "(fun s -> printf \"%s %s\" s s)"

Subdivide A Problem To A Pool Of Workers (No Shared Data)

Take a hard to compute problem and split it up between multiple worker threads. In your solution, try to fully utilize available cores or processors. (I'm looking at you, Python!)

Note: In this question, there should be no need for shared state between worker threads while the problem is being solved. Only after every thread completes computation are the answers recombined into a single output.

Example:

-Input-

(In python syntax)

["ab", "we", "tfe", "aoj"]

In other words, a list of random strings.

-Output-

(In python syntax)

[ ["ab", "ba", "aa", "bb", "a", "b"], ["we", "ew", "ww", "ee", "w", "e"], ...

In other words, all possible permutations of each input string are computed.
fsharp
open System
let input = [| "ab"; "we"; "tfe"; "aoj" |]

/// Computes all permutations of an array
let rec permute = function
| [| |] -> [| [| |] |]
| a ->
a
|> Array.mapi (fun i ai ->
// Take all elements in the array apart from the i.th, compute
// their permutations, then attach element i at the front of each perm
Array.sub a 0 i
|> Array.append (Array.sub a (i + 1) (a.Length - i - 1))
|> permute
|> Array.map (fun perm -> Array.append [| ai |] perm)
)
|> Array.concat

/// Computes all permutations of a string
let permuteString (s: string) =
s.ToCharArray()
|> permute
|> Array.map (fun p -> new String(p))

let output =
input
|> Array.map (fun word -> async { return (permuteString word) })
|> Async.Parallel
|> Async.RunSynchronously
// like the Java and Groovy solutions, does not duplicate letters
open System
open System.Threading.Tasks

let input = [| "ab"; "we"; "tfe"; "aoj" |]

let factorial n =
seq { 1 .. n } |> Seq.reduce (*)

let swap (arr:'a[]) i j =
[| for k = 0 to arr.Length - 1 do
yield if k = i then arr.[j] elif k = j then arr.[i] else arr.[k] |]

let rec permutation (k:int,j:int) (r:'a[]) =
if j = (r.Length + 1) then r
else permutation (k/j+1, j+1) (swap r (j-1) (k%j))

let permutations (source:'a[]) = seq {
for k = 0 to (factorial source.Length) - 1 do
yield permutation (k,2) source
}

let permute (word:string) =
let letters = word.ToCharArray()
permutations letters
|> Seq.map (fun chars -> String(chars))
|> Array.ofSeq

let tasks =
input |> Array.map (fun word -> Task.Factory.StartNew(fun () -> permute word))

let taskResult (t:Task<_>) =
t.Result

let output = Task.Factory.ContinueWhenAll(tasks, fun ts -> Array.map taskResult ts).Result

Subdivide A Problem To A Pool Of Workers (Shared Data)

Take a hard to compute problem and split it up between multiple worker threads. In your solution, try to fully utilize available cores or processors. (I'm looking at you, Python!)

Note: In this question, there should be a need for shared state between worker threads while the problem is being solved.

Example:

-Conway Game of Life-

From Wikipedia:

The universe of the Game of Life is an infinite two-dimensional orthogonal grid of square cells, each of which is in one of two possible states, live or dead. Every cell interacts with its eight neighbors, which are the cells that are directly horizontally, vertically, or diagonally adjacent. At each step in time, the following transitions occur:

1. Any live cell with fewer than two live neighbours dies, as if caused by underpopulation.
2. Any live cell with more than three live neighbours dies, as if by overcrowding.
3. Any live cell with two or three live neighbours lives on to the next generation.
4. Any dead cell with exactly three live neighbours becomes a live cell.

The initial pattern constitutes the seed of the system. The first generation is created by applying the above rules simultaneously to every cell in the seed—births and deaths happen simultaneously, and the discrete moment at which this happens is sometimes called a tick (in other words, each generation is a pure function of the one before). The rules continue to be applied repeatedly to create further generations.


--However, for our purposes, we will assign a size to the game "board": 2^k * 2^k . That is, the board should be easy to subdivide.

Notice that in this problem, at each step or "tick", each thread/process will need to share data with its neighborhood.
fsharp
/// Represents a single cell, along with the basic transition rule
type State =
| Alive
| Dead
member this.Transition numLiveNeighbors =
match this with
| Alive when numLiveNeighbors < 2 -> Dead
| Alive when numLiveNeighbors > 3 -> Dead
| Alive -> Alive
| Dead when numLiveNeighbors = 3 -> Alive
| _ -> Dead
member this.ToChar() =
match this with
| Alive -> '*'
| Dead -> ' '
static member OfChar = function
| ' ' -> Dead
| _ -> Alive

type Board (board: State[,]) =
member this.Item
with get(i,j) = board.[i,j]
and set (i,j) v = board.[i,j] <- v
member this.Length1 = Array2D.length1 board
member this.Length2 = Array2D.length2 board
member this.CountLiveNeighbors(i, j) =
[| (-1,-1); (-1,0); (-1,1); (0,-1); (0,1); (1,-1); (1,0); (1,1) |]
|> Array.sumBy (fun (di,dj) ->
if (i + di) > 0 && (i + di) < this.Length1 && (j+dj) > 0 && (j+dj) < this.Length2 then
match board.[i+di,j+dj] with
| Alive -> 1
| _ -> 0
else
0
)
member this.Clone() = Board(Array2D.copy board)
override this.ToString() =
[|
for i in 0 .. this.Length1 - 1 do
let l = [| for j in 0 .. this.Length2 - 1 do yield board.[i,j].ToChar() |]
yield new String(l)
|]
|> String.concat ("\n")
static member OfString (s: string) =
let states =
s.Split('\n')
|> Array.map (fun line -> line.ToCharArray() |> Array.map State.OfChar)
Board (Array2D.init states.Length states.[0].Length (fun i j -> states.[i].[j]))
static member Update (inboard: Board) =
let outboard = inboard.Clone()
let Worker (i1,i2,j1,j2) =
for i in i1 .. i2 do
for j in j1 .. j2 do
outboard.[i,j] <-
inboard.CountLiveNeighbors(i, j)
|> inboard.[i,j].Transition
let N1 = inboard.Length1 / 2
let N2 = inboard.Length2 / 2
[| (0,N1,0,N2); (N1+1,inboard.Length1-1,0,N2); (0,N1,N2+1,inboard.Length2-1); (N1+1,inboard.Length1-1,N2+1,inboard.Length2-1) |]
|> Array.map (fun bounds -> async { Worker bounds})
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
outboard

let blinker = " \n * \n * \n * \n " |> Board.OfString

do
let after1cycles =
blinker
|> Board.Update
let after3cycles =
after1cycles
|> Board.Update
|> Board.Update
printfn "%s" (after3cycles.ToString())

Create a multithreaded "Hello World"

Create a program which outputs the string "Hello World" to the console, multiple times, using separate threads or processes.

Example:

-Output-

Thread one says Hello World!
Thread two says Hello World!
Thread four says Hello World!
Thread three says Hello World!

-Notice that the threads can print in any order.
erlang
-module(spam).
-export([spam/1]).

spam(N) when N<5 ->
spawn(fun() -> io:format("Hello World from thread ~p~n",[N]) end),
spam(N+1);
spam(_) -> void.
fsharp
let mappedString =
["Thread one says Hello World!";
"Thread two says Hello World!";
"Thread four says Hello World!";
"Thread three says Hello World!"]
|> Seq.map (fun str -> async { printfn "%s" str })

Async.RunSynchronously (Async.Parallel mappedString)

Create read/write lock on a shared resource.

Create multiple threads or processes who are either readers or writers. There should be more readers then writers.

(From Wikipedia):

Multiple readers can read the data in parallel but an exclusive lock is needed while writing the data. When a writer is writing the data, readers will be blocked until the writer is finished writing.

Example:

-Output-

Thread one says that the value is 8.
Thread three says that the value is 8.
Thread two is taking the lock.
Thread four tried to read the value, but could not.
Thread five tried to write to the value, but could not.
Thread two is changing the value to 9.
Thread two is releasing the lock.
Thread four says that the value is 9.
...

--Notice that when a needed resource is locked, a thread can set a timer and try again in the future, or wait to be notified that the resource is no longer locked.
fsharp
open System.Threading
let lock = new ReaderWriterLock()
let mutable value = 0
let lockTimeout = 1

let ReaderThread t =
let random = new System.Random()
for i in 0 .. 100 do
try
lock.AcquireReaderLock(lockTimeout)
try
printfn "Thread %i says that the value is %i" t value
finally
lock.ReleaseReaderLock()
with _ ->
printfn "Thread %i tried to read the value, but could not (timeout)." t
Thread.Sleep(random.Next(50))

let WriterThread t =
let random = new System.Random()
for i in 0 .. 100 do
try
lock.AcquireWriterLock(lockTimeout)
try
value <- random.Next(10)
printfn "Thread %i is changing the value to %i" t value
Thread.MemoryBarrier()
finally
lock.ReleaseWriterLock()
printfn "Thread %i is releasing the lock." t
with _ ->
printfn "Thread %i tried to write the value, but could not (timeout)." t
Thread.Sleep(random.Next(50))

[| 0 .. 20 |]
|> Array.iter (fun t ->
async {
if t % 3 = 0 then
WriterThread t
else
ReaderThread t
}
|> Async.Start
)

Separate user interaction and computation.

Allow your program to accept user interaction while conducting a long running computation.

Example:

Hello user! Please input a string to permute: (input thread)
abcdef
Passing on abcdef... (input thread)
Please input another string to permute: (input thread)
lol
Passing on lol... (input thread)
Done Work On abcdef! (worker thread)
["abcdef", "abcefd", ... ] (worker thread)
Please input another string to permute: (input thread)
EXIT
Quitting, I'll let my worker thread know... (input thread)
We'
re quitting! Alright! (worker thread)

--Notice, that this could be accomplished on the command line or within a GUI. The point is that computation and user interaction should take place on separate threads of control.
fsharp
open System

/// Computes all permutations of an array
let rec permute = function
| [| |] -> [| [| |] |]
| a ->
a
|> Array.mapi (fun i ai ->
Array.sub a 0 i
|> Array.append (Array.sub a (i + 1) (a.Length - i - 1))
|> permute
|> Array.map (fun perm -> Array.append [| ai |] perm)
)
|> Array.concat

/// Computes all permutations of a string
let permuteString (s: string) =
s.ToCharArray()
|> permute
|> Array.map (fun p -> new String(p))


type PermuteMessage =
| PermuteString of string
| Cancel

let mailbox = new MailboxProcessor<PermuteMessage>(fun inbox ->
let rec loop() =
async {
let! msg = inbox.Receive()
match msg with
| PermuteString s ->
printfn "[Worker] Starting to work on %s" s
let p = permuteString s
printfn "[Worker] Done my work on %s" s
let firstElems =
if s.Length > 4 then
let first = p |> Seq.truncate 4 |> Seq.toArray
String.Join(", ", first) + ", ..."
else
String.Join(", ", p)
printfn "[Worker] Result is %s" firstElems
return! loop()
| Cancel ->
printfn "[Worker] Nuff done, I'm quitting!"
return ()
}
loop()
)

do
printfn "[Input] Setting up worker."
mailbox.Start()
let loop = ref true
while !loop do
printfn "[Input] Please enter a word, or EXIT to exit"
let s = Console.ReadLine()
match s with
| "EXIT" ->
printfn "[Input] Sending worker the cancellation notice."
mailbox.Post(Cancel)
loop := false
| _ ->
printfn "[Input] Sending task to the worker."
mailbox.Post(PermuteString s)
180
180

180


Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes <code>[Mall3411]</code> - $175.01 : <<code>/title> <br/><meta http-equiv="Content-Type" content="text/</code>html; charset=utf-8<code>" /> <br/><meta name="</code>keywords<code>" content="</code>Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes <code>[Mall3411]</code> Robes de Mariée Robes de mariée 2012 Robe de mariée sexy Robes de mariée robes Quinceanera Robes de bal Robes de soirée Robes de bal Robes de soirée Robes de cocktail <code>" /> <br/><meta name="</code>description<code>" content="</code> Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes <code>[Mall3411]</code> - Nom de l<code>'article: " /> <br/><meta http-equiv="imagetoolbar" content="no" /> <br/><meta name="author" content="Zen Cart China" /> <br/><meta name="generator" content="Zen Cart, http://www.zen-cart.cn" /> <br/> <br/> <br/><link rel="canonical" href="http://fr.weddingdressescompany.com/low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html" /> <br/> <br/><link rel="stylesheet" type="text/css" href="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/css/style_imagehover.css" /><br/><link rel="stylesheet" type="text/css" href="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/css/stylesheet.css" /><br/><link rel="stylesheet" type="text/css" href="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/css/stylesheet_css_buttons.css" /><br/><link rel="stylesheet" type="text/css" media="print" href="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/css/print_stylesheet.css" /><br/><br/><br/><br/> <br/><link type="text/css" href="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/css/magiczoomplus.css" rel="stylesheet" media="screen" /> <br/> <br/><br/><br/> <br/> <br/> <br/> <br/> <br/><div id="mainWrapper "> <br/> <br/> <br/> <br/><br/> <br/> <br/><div id="headerWrapper "><div id="lang_main_page" style="padding-top:10px; float:right; "><b>language:</b> <br/> <br/> <a href="http://de.weddingdressescompany.com "> <br/> <img src="http://fr.weddingdressescompany.com/langimg/gericon.gif" alt="Deutsch" title=" Deutsch " height="15" width="24 "></a>   <br/> <a href="http://fr.weddingdressescompany.com "> <br/> <img src="http://fr.weddingdressescompany.com/langimg/fricon.gif" alt="Français" title=" Français " height="15" width="24 "></a>   <br/> <a href="http://it.weddingdressescompany.com "> <br/> <img src="http://fr.weddingdressescompany.com/langimg/iticon.gif" alt="italiano" title=" italiano " height="15" width="24 "></a>   <br/> <a href="http://es.weddingdressescompany.com ">         <br/> <img src="http://fr.weddingdressescompany.com/langimg/esicon.gif" alt="Español" title=" Español " height="15" width="24 "></a>   <br/> <a href="http://pt.weddingdressescompany.com "> <br/> <img src="http://fr.weddingdressescompany.com/langimg/pticon.gif" alt="Português" title=" Português " height="15" width="24 "></a>   <br/> <a href="http://jp.weddingdressescompany.com "> <br/> <img src="http://fr.weddingdressescompany.com/langimg/jpicon.gif" alt="日本語" title=" æ—¥æœ¬èªž " height="14" width="24 "></a>   <br/> <a href="http://www.weddingdressescompany.com "> <br/> <img src="http://fr.weddingdressescompany.com/langimg/icon.gif" alt="English" title=" English " height="15" width="24 "></a>   <br/></div> <br/><br/> <br/><div class="topper-menu float-left" style="background:#333333; width:100%; text-align:right; padding:0px; "> <br/> <br/><div id="navEZPagesTop "> <br/> <ul style="list-style-image: none;list-style-type: none; padding:0px; height:28px; line-height:28px;margin-top: 0px; margin-bottom:0px;margin-left:55%; "> <br/> <li><a href="http://fr.weddingdressescompany.com/index.php?main_page=login "><font style="color:#FFFFFF ">My Account</font></a></li> <br/> <li><a href="http://fr.weddingdressescompany.com/index.php?main_page=shopping_cart "><font style="color:#FFFFFF ">View Cart</font></a></li> <br/> <li><a href="http://fr.weddingdressescompany.com/index.php?main_page=login "><font style="color:#FFFFFF ">Checkout</font></a></li> <br/> <br/>   <li> <a href="http://fr.weddingdressescompany.com/index.php?main_page=login "><font style="color:#FFFFFF ">Se connecter</font></a> <br/> <font style="color:#FFFFFF "> HEADER_OR </font> <br/>    <a href="http://fr.weddingdressescompany.com/index.php?main_page=create_account "><font style="color:#FFFFFF ">HEADER_TITLE_REGISTER</font></a></li> <br/> <br/> <br/> <br/> </ul> <br/></div> <br/></div> <br/><div class="clearBoth" /></div> <br/><br/> <br/> <br/> <br/><br/> <br/><br/> <br/> <br/><br/> <br/> <br/><div id="logoWrapper "> <br/><div id="logo"  style="margin-top:5px; margin-bottom:5px; "><a href="http://fr.weddingdressescompany.com/ "><img src="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/images/logo.gif" alt="" width="250" height="73" /></a></div> <br/><div class="td-search-header "> <br/><div class="search-header float-left "> <br/><form name="quick_find_header" action="http://fr.weddingdressescompany.com/index.php?main_page=advanced_search_result" method="get "><input type="hidden" name="main_page" value="advanced_search_result" /><input type="hidden" name="search_in_description" value="1" /><div class="search-header-input"  style="padding-top:10px;padding-bottom:0px; "><input type="text" name="keyword" size="6" maxlength="30" value="Entrez vos mots clefs ici" onfocus="if (this.value == '</code>Entrez vos mots clefs ici<code>') this.value = ';" onblur="if (this.value == ') this.value = '</code>Entrez vos mots clefs ici<code>';" /></div><div style="float:left "><input  style="float:left;width:47px; height:35px;"  type="image" src="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/images/search-bg_02.gif" value="Serch" /></div></form></div> <br/></div> <br/><div style=" float:left; margin-left:10px; height:58px; width:270px; "> <br/><br/> <br/><div style="float:left; padding-top:15px; "> <br/><img src="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/images/shipping.gif"/><a href="http://fr.weddingdressescompany.com/index.php?main_page=shopping_cart "><img src="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/images/cart.gif" style="border:0px;"/></a> <br/></div> <br/><br/> <br/><div style="height:10px; "></div> <br/><div style="padding-top:0px; "> <br/><div style="float:left; width:120px; "><font style=" font-size:0.96em; background:#FFFFFF; color:#000000; ">Choisissez votre devise</font></div> <br/><div style="float:left; width:100px; "> <br/><form name="currencies" action="http://fr.weddingdressescompany.com/" method="get "><select name="currency" onchange="this.form.submit();" style="width: 100% "><br/>  <option value="USD" selected="selected ">US Dollar</option><br/>  <option value="CNY ">CNY</option><br/>  <option value="EUR ">Euro</option><br/>  <option value="GBP ">GB Pound</option><br/>  <option value="CAD ">Canadian Dollar</option><br/>  <option value="AUD ">Australian Dollar</option><br/></select><br/><input type="hidden" name="main_page" value="product_info" /><input type="hidden" name="products_id" value="456" /></form></div> <br/></div> <br/><br/> <br/></div> <br/></div> <br/><div class="clearBoth" /></div> <br/><br/> <br/> <br/><br/> <br/> <br/><br/> <br/><br/> <br/> <br/> <br/><div id="top_nav "> <br/><div id="tab_nav "> <br/><br/> <br/><div class="top-nav-right "></div> <br/><div style=" float:left; "> <br/> <a href="http://fr.weddingdressescompany.com/low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html" ><img src="http://fr.weddingdressescompany.com/includes/templates/weddingdress-7/images/home.jpg"/></a> <br/></div> <br/><ul class="list-style-none "> <br/><li class="home-link "><a href="http://fr.weddingdressescompany.com/" >TOP_MENU_HOME</a></li> <br/><li id="" ><a href="http://fr.weddingdressescompany.com/cocktail-dresses-c-28.html ">Robes de cocktail</a></li> <br/><li id="" ><a href="http://fr.weddingdressescompany.com/evening-dresses-c-27.html ">Robes de soirée</a></li> <br/><li id="" ><a href="http://fr.weddingdressescompany.com/wedding-dresses-c-1.html ">Robes de mariée</a></li> <br/><li id="" ><a href="http://fr.weddingdressescompany.com/prom-dresses-c-24.html ">Robes de bal</a></li> <br/><li id="" ><a href="http://fr.weddingdressescompany.com/index.php?main_page=contact_us ">Contactez-nous</a></li> <br/><li id="" ><a href="http://fr.weddingdressescompany.com/javascript:__Bookmark('</code>http:<code>//</code>fr.weddingdressescompany.com<code>/»,«http:/fr.weddingdressescompany.com/</code><code>' ) " > Marque page</a></li> <br/></ul> <br/></div> <br/></div> <br/><hr style="border:2px solid #666666;"/> <br/><br/> <br/><br/> <br/> <br/></div> <br/><br/> <br/><table width="100%" border="0" cellspacing="0" cellpadding="0" id="contentMainWrapper "> <br/><tr> <br/> <br/><td id="navColumnOne" class="columnLeft" style="width:210px "> <br/><div id="navColumnOneWrapper" style="width: 220px" > <br/><div class="leftBoxContainer" id="categories" style="width: 220px "> <br/><div class="sidebox-header-left main-sidebox-header-left "><h3 class="leftBoxHeading main-sidebox-header-right" id="categoriesHeading ">Catégories</h3></div> <br/><div id="categoriesContent" class="sideBoxContent "><br/><div class="categories-top-list no-dots "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-mariée-c-1.html "><span class="category-subs-parent ">Robes de Mariée</span></a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-meilleures-robes-de-mariée-de-vente-c-1_19.html ">MEILLEURES robes de mariée de Vente</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-mini-robes-de-mariée-c-1_11.html ">Mini robes de mariée</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-petites-robes-noires-c-1_13.html ">Petites robes noires</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robe-de-mariée-amie-c-1_3.html ">Robe de mariée amie</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robe-de-mariée-sexy-c-1_30.html ">Robe de mariée sexy</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariage-de-plage-c-1_20.html ">Robes de mariage de plage</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariage-empire-c-1_15.html ">Robes de mariage Empire</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariage-gaine-c-1_6.html ">Robes de mariage gaine</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariage-robe-boule-c-1_21.html ">Robes de mariage robe boule</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-2012-c-1_29.html ">Robes de mariée 2012</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-a-ligne-c-1_22.html ">Robes de mariée A- ligne</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-bustier-c-1_4.html ">Robes de mariée bustier</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-colonne-c-1_17.html ">Robes de mariée Colonne</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-courtes-c-1_5.html ">Robes de Mariée courtes</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-de-couleur-c-1_18.html ">Robes de mariée de Couleur</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-de-princesse-c-1_8.html ">Robes de mariée de princesse</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-designer-c-1_16.html ">Robes de mariée Designer</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-en-dentelle-c-1_14.html ">Robes de mariée en dentelle</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-épaule-c-1_10.html ">Robes de mariée Ã©paule</a></div><br/><div class="subcategory "><a class="category-products" href="http://fr.weddingdressescompany.com/robes-de-mariée-robes-de-mariée-sirène-c-1_12.html ">Robes de Mariée Sirène</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robe-de-mariée-sexy-c-7.html ">Robe de mariée sexy</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-bal-c-26.html ">Robes de bal</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-bal-c-24.html ">Robes de bal</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-cocktail-c-28.html ">Robes de cocktail</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-mariée-c-9.html ">Robes de mariée</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-mariée-2012-c-2.html ">Robes de mariée 2012</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-soirée-c-25.html ">Robes de soirée</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-de-soirée-c-27.html ">Robes de soirée</a></div><br/><div class="categories-top-list  "><a class="category-top" href="http://fr.weddingdressescompany.com/robes-quinceanera-c-23.html ">robes Quinceanera</a></div><br/></div></div> <br/> <br/> <br/><div class="leftBoxContainer" id="whatsnew" style="width: 220px "> <br/><div class="sidebox-header-left  "><h3 class="leftBoxHeading " id="whatsnewHeading ">Nouveaux produits - <a href="http://fr.weddingdressescompany.com/products_new.html ">  [plus]</a></h3></div> <br/><div class="sideBoxContent centeredContent "><a href="http://fr.weddingdressescompany.com/asymétrique-sweetheart-siren-applique-ruché-de-mariage-sweep-longueur-de-robe-pwd110-p-498.html "><img src="http://fr.weddingdressescompany.com/images/weddingdress/princess_wedding_dresses_110.jpg" alt="Asymétrique sweetheart Siren Applique ruché de mariage Sweep Longueur de robe (PWD-110)" title=" Asymétrique sweetheart Siren Applique ruché de mariage Sweep Longueur de robe (PWD-110) " width="130" height="257" style="position:relative" onmouseover="showtrail('</code>images<code>/weddingdress/princess_wedding_dresses_110.jpg','Asymétrique sweetheart Siren Applique ruché de mariage Sweep Longueur de robe (PWD-110)',130,256,304,600,this,0,0,130,256);" onmouseout="hidetrail();"  /</code>><<code>/a><a class="sidebox-products" href="http:/fr.weddingdressescompany.com/</code>asymétrique-sweetheart-siren-applique-ruché-de-mariage-sweep-longueur-de-robe-pwd110-p-498.html <code>">Asymétrique sweetheart Siren Applique ruché de mariage Sweep Longueur de robe (PWD-110)</a><div><span class="</code>normalprice <code>">$339.99 </span> <span class="</code>productSpecialPrice <code>">$169.99</span><span class="</code>productPriceDiscount <code>"><br />Economie : 50%</span></div></div><div class="</code>sideBoxContent centeredContent <code>"><a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/2012-chubby-à-encolure-en-v-à-taille-empire-applique-bretelles-robe-cour-train-pswd001-p-500.html "><img src="http:/fr.weddingdressescompany.com/</code>images<code>/weddingdress/</code>plus_size_wedding_dresses_001.jpg<code>" alt="</code>2012 Chubby à encolure en V à taille empire Applique bretelles Robe Cour Train (PSWD-001)<code>" title="</code> 2012 Chubby à encolure en V à taille empire Applique bretelles Robe Cour Train (PSWD-001) <code>" width="</code>130<code>" height="</code>173<code>" style="</code>position:relative<code>" onmouseover="</code>showtrail(<code>'images/weddingdress//plus_size_wedding_dresses_001.jpg'</code>,<code>'2012 Chubby Ã  encolure en V Ã  taille empire Applique bretelles Robe Cour Train (PSWD-001)'</code>,130,173,300,400,this,0,0,130,173);<code>" onmouseout="</code>hidetrail();<code>"  /></a><a class="</code>sidebox-products<code>" href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/2012-chubby-à-encolure-en-v-à-taille-empire-applique-bretelles-robe-cour-train-pswd001-p-500.html ">2012 Chubby Ã  encolure en V Ã  taille empire Applique bretelles Robe Cour Train (PSWD-001)</</code>a><div><span class=<code>"normalprice "</code>>$318.99 <<code>/span> <span class="productSpecialPrice ">$158.99</</code>span><span class=<code>"productPriceDiscount "</code>><br <code>/>Economie : 50%</</code>span><<code>/div></</code>div><div class=<code>"sideBoxContent centeredContent "</code>><a href=<code>"http://fr.weddingdressescompany.com/elégant-aligne-bretelles-plus-size-sash-avec-robe-applique-longueur-de-balayage-pswd003-p-501.html "</code>><img src=<code>"http://fr.weddingdressescompany.com/images/weddingdress/plus_size_wedding_dresses_003.jpg"</code> alt=<code>"Elégant A-ligne bretelles Plus Size Sash Avec Robe Applique Longueur de balayage (PSWD-003)"</code> title=<code>" Elégant A-ligne bretelles Plus Size Sash Avec Robe Applique Longueur de balayage (PSWD-003) "</code> width=<code>"130"</code> height=<code>"173"</code> style=<code>"position:relative"</code> onmouseover=<code>"showtrail('images/weddingdress//plus_size_wedding_dresses_003.jpg','Elégant A-ligne bretelles Plus Size Sash Avec Robe Applique Longueur de balayage (PSWD-003)',130,173,1000,1333,this,0,0,130,173);"</code> onmouseout=<code>"hidetrail();"</code> <code>/></</code>a><a class=<code>"sidebox-products"</code> href=<code>"http://fr.weddingdressescompany.com/elégant-aligne-bretelles-plus-size-sash-avec-robe-applique-longueur-de-balayage-pswd003-p-501.html "</code>>Elégant A-ligne bretelles Plus Size Sash Avec Robe Applique Longueur de balayage (PSWD-003)<<code>/a><div><span class="normalprice ">$348.99 </</code>span> <span class=<code>"productSpecialPrice "</code>>$166.99<<code>/span><span class="productPriceDiscount "><br /</code>>Economie : 52%<<code>/span></</code>div><<code>/div><div class="sideBoxContent centeredContent "><a href="http:/fr.weddingdressescompany.com/</code>2012-slinky-applique-charme-sweetheart-tribunal-train-plissé-princess-dress-pwd111-p-499.html <code>"><img src="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/images/</code>weddingdress<code>/princess_wedding_dresses_111.jpg" alt="2012 Slinky Applique Charme sweetheart tribunal train plissé Princess Dress (PWD-111)" title=" 2012 Slinky Applique Charme sweetheart tribunal train plissé Princess Dress (PWD-111) " width="130" height="259" style="position:relative" onmouseover="showtrail('images/</code>weddingdress<code>//</code>princess_wedding_dresses_111.jpg<code>','</code>2012 Slinky Applique Charme sweetheart tribunal train plissé Princess Dress (PWD-111)<code>',130,259,301,600,this,0,0,130,259);" onmouseout="hidetrail();"  /></a><a class="sidebox-products" href="http://fr.weddingdressescompany.com/2012-slinky-applique-charme-sweetheart-tribunal-train-plissé-princess-dress-pwd111-p-499.html ">2012 Slinky Applique Charme sweetheart tribunal train plissé Princess Dress (PWD-111)</a><div><span class="normalprice ">$326.99 </span> <span class="productSpecialPrice ">$165.99</span><span class="productPriceDiscount "><br />Economie : 49%</span></div></div></div> <br/> <br/></div></td> <br/><td id="columnCenter" valign="top "> <br/><br/> <br/><div id="navBreadCrumb ">  <a href="http://fr.weddingdressescompany.com/ ">Accueil</a> :: <br/>  <a href="http://fr.weddingdressescompany.com/robes-de-mariée-c-1.html ">Robes de Mariée</a> :: <br/>  <a href="http://fr.weddingdressescompany.com/robes-de-mariée-robe-de-mariée-sexy-c-1_30.html ">Robe de mariée sexy</a> :: <br/>Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes<br/></div> <br/><br/> <br/> <br/> <br/><br/> <br/><br/> <br/> <br/><div class="centerColumn" id="productGeneral "> <br/> <br/> <br/><h1 id="productName" class="productGeneral ">Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes</h1> <br/> <br/><form name="cart_quantity" action="http://fr.weddingdressescompany.com/low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html?action=add_product&number_of_uploads=0" method="post" enctype="multipart/form-data "><br/> <br/><div style="float:left; "> <br/> <br/> <br/>  <br/><div id="productMainImage" class="centeredContent back "> <br/> <br/><noscript> <br/><a href="http://fr.weddingdressescompany.com/index.php?main_page=popup_image&pID=456" target="_blank "> <a href="http://fr.weddingdressescompany.com/low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html" ><img src="http://fr.weddingdressescompany.com/images/weddingdress/sxw0018.jpg" alt="Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes" title=" Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes " width="240" height="329" /></a><br /><span class="imgLink ">Agrandir l'</code>image<<code>/span></</code>a><<code>/noscript> <br/></</code>div> <br/> <br/> <div id=<code>"productAdditionalImages "</code>> <br/> <div id=<code>"dfse "</code>><<code>/div> <br/>  <div class="centerBoxContent "> <br/> <br/> <br/>    <div class="additionalImages centeredContent back" style="width:100%; "><br/>      <br/>      <noscript><a href="http:/fr.weddingdressescompany.com/</code>low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html<code>" target="</code>_blank <code>"> <a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html" ><img src="http:/fr.weddingdressescompany.com/</code>images<code>/weddingdress/</code>sxw0018_01.jpg<code>" alt="</code>Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes<code>" title="</code> Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes <code>" width="</code>130<code>" height="</code>174<code>" style="</code>position:relative<code>" onmouseover="</code>showtrail(<code>'images/weddingdress//sxw0018_01.jpg'</code>,<code>'Low Cost Custom-Made bretelles sexy mariage mariée robe de mariée Robes'</code>,130,173,243,325,this,0,0,130,173);<code>" onmouseout="</code>hidetrail();<code>"  /></a><br /><span class="</code>imgLinkAdditional <code>">Agrandir l'image</span></a></noscript></div><br/><br class="</code>clearBoth<code>" /> <br/>  <br/></div></div> <br/> <br/></div> <br/> <br/><div style="</code>width:348px;float:right;<code>" id='pb-left-column'> <br/> <br/><span id="</code>productPrices<code>" class="</code>productGeneral <code>"> <br/>Price:  <br/><span class="</code>normalprice <code>">$218.77 </span> <span class="</code>productSpecialPrice <code>">$175.01</span><span class="</code>productPriceDiscount <code>"><br />Economie : 20%</span></span> <br/><div class="</code>model_number<code>" style="</code>height:14px;padding-top:7px <code>"><h4 style="</code>float: left;color:black; <code>"><label class="</code>class <code>">Modèle : </label></h4><div style="</code>float: left;margin-top:5px;margin-left:6px; <code>"><span style="</code>font-size:12px;height:20px;color:black; <code>">Mall3411</span></div><br/></div> <br/> <br/> <br/> <br/> <br/> <br/><div id="</code>productAttributes <code>"> <br/><h1 style='margin-bottom: 10px;'>Step 1 - Choose Options:</h1> <br/> <br/> <br/><div class="</code>wrapperAttribsOptions <code>"> <br/><h4 class="</code>optionName back <code>"><label>Colors</label></h4> <br/><div class="</code>back <code>"><br/><select name="</code>id<code>[8]</code><code>" id="</code>attrib-8 <code>"><br/>  <option value="</code>46 <code>">1</option><br/>  <option value="</code>52 <code>">10</option><br/>  <option value="</code>53 <code>">12</option><br/>  <option value="</code>54 <code>">16</option><br/>  <option value="</code>55 <code>">17</option><br/>  <option value="</code>56 <code>">18</option><br/>  <option value="</code>47 <code>">2</option><br/>  <option value="</code>57 <code>">20</option><br/>  <option value="</code>58 <code>">21</option><br/>  <option value="</code>59 <code>">23</option><br/>  <option value="</code>60 <code>">26</option><br/>  <option value="</code>61 <code>">27</option><br/>  <option value="</code>62 <code>">28</option><br/>  <option value="</code>63 <code>">29</option><br/>  <option value="</code>64 <code>">30</option><br/>  <option value="</code>65 <code>">31</option><br/>  <option value="</code>66 <code>">33</option><br/>  <option value="</code>67 <code>">35</option><br/>  <option value="</code>68 <code>">36</option><br/>  <option value="</code>69 <code>">37</option><br/>  <option value="</code>48 <code>">4</option><br/>  <option value="</code>70 <code>">41</option><br/>  <option value="</code>71 <code>">43</option><br/>  <option value="</code>72 <code>">44</option><br/>  <option value="</code>73 <code>">47</option><br/>  <option value="</code>74 <code>">48</option><br/>  <option value="</code>75 <code>">49</option><br/>  <option value="</code>49 <code>">5</option><br/>  <option value="</code>76 <code>">51</option><br/>  <option value="</code>77 <code>">54</option><br/>  <option value="</code>78 <code>">56</option><br/>  <option value="</code>79 <code>">60</option><br/>  <option value="</code>80 <code>">61</option><br/>  <option value="</code>81 <code>">66</option><br/>  <option value="</code>82 <code>">67</option><br/>  <option value="</code>83 <code>">69</option><br/>  <option value="</code>84 <code>">73</option><br/>  <option value="</code>85 <code>">77</option><br/>  <option value="</code>86 <code>">78</option><br/>  <option value="</code>87 <code>">79</option><br/>  <option value="</code>50 <code>">8</option><br/>  <option value="</code>51 <code>">9</option><br/>  <option value="</code>27 <code>">Ivory</option><br/>  <option value="</code>26 <code>">Same As Picture</option><br/>  <option value="</code>28 <code>">White</option><br/></select><br/><br/></div> <br/><br class="</code>clearBoth<code>" /> <br/></div> <br/> <br/> <br/> <br/> <br/><br/><br class="</code>clearBoth<code>" /> <br/> <br/><div class="</code>wrapperAttribsOptions <code>"> <br/><h4 class="</code>optionName back <code>"><label>Sizes</label></h4> <br/><div class="</code>back <code>"><br/><select name="</code>id<code>[9]</code><code>" id="</code>attrib-9 <code>"><br/>  <option value="</code>29 <code>">US 10 / UK 12 / EUR 40</option><br/>  <option value="</code>30 <code>">US 12 / UK 14 /EUR 42</option><br/>  <option value="</code>31 <code>">US 14 / UK 16 /EUR 44</option><br/>  <option value="</code>32 <code>">US 16 / UK 18 /EUR 46</option><br/>  <option value="</code>33 <code>">US 18 / UK 20 /EUR 48</option><br/>  <option value="</code>34 <code>">US 2 / UK 4 /EUR 32</option><br/>  <option value="</code>35 <code>">US 20 / UK 22 /EUR 50</option><br/>  <option value="</code>36 <code>">US 22 / UK 24 /EUR 52</option><br/>  <option value="</code>37 <code>">US 24 / UK 26 /EUR 54</option><br/>  <option value="</code>38 <code>">US 26 / UK 28 /EUR 56</option><br/>  <option value="</code>39 <code>">US 28 / UK 30 /EUR 58</option><br/>  <option value="</code>40 <code>">US 4 / UK 6 /EUR 34</option><br/>  <option value="</code>41 <code>">US 6 / UK 8 /EUR 36</option><br/>  <option value="</code>42 <code>">US 8 / UK 10 /EUR 38</option><br/></select><br/><br/></div> <br/><br class="</code>clearBoth<code>" /> <br/></div> <br/> <br/> <br/> <br/> <br/><br/><br class="</code>clearBoth<code>" /> <br/> <br/><div class="</code>wrapperAttribsOptions <code>"> <br/><h4 class="</code>optionName back <code>"><label>Back style</label></h4> <br/><div class="</code>back <code>"><br/><select name="</code>id<code>[10]</code><code>" id="</code>attrib-10 <code>"><br/>  <option value="</code>44 <code>">Lace Up</option><br/>  <option value="</code>43 <code>">Same As Picture</option><br/>  <option value="</code>45 <code>">Zip Up</option><br/></select><br/><br/></div> <br/><br class="</code>clearBoth<code>" /> <br/></div> <br/> <br/> <br/> <br/> <br/><br/><br class="</code>clearBoth<code>" /> <br/> <br/><div style="</code>padding-bottom:5px; <code>"><a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/size.html" style="color:black;font-weight:bold;text-decoration:underline; color:#FF0000;" target="_blank ">Size Chart</</code>a> | <a href=<code>"http://fr.weddingdressescompany.com/color.html"</code> style=<code>"color:black;font-weight:bold;text-decoration:underline;color:#FF0000;"</code> target=<code>"_blank "</code>>Color Chart<<code>/a></</code>div> <br/> <br/> <br/><<code>/div> <br/><div id='quantity_cart'> <br/><h1>Step 2 - Choose Quantity:</</code>h1> <br/> <br/> <br/> <div class=<code>"wrapperAttribsOptions"</code> style=<code>"height:14px;padding-top:7px "</code>><h4 style=<code>"float:left; "</code>><label class=<code>"attribsInput "</code>>Quantity :<<code>/label></</code>h4><div style=<code>"float:left; "</code>><input type=<code>"text"</code> class=<code>"text"</code> id=<code>"quantity_wanted"</code> name=<code>"cart_quantity"</code> value=<code>"1"</code> maxlength=<code>"6"</code> size=<code>"4"</code> <code>/></</code>div><<code>/div> <br/>  <br class="clearBoth "> <br/>    <h1 style='margin-bottom: 10px;'>Step 3 - Add to cart:</</code>h1> <br/> <p id=<code>'add_to_cart'</code> class=<code>'buttons_bottom_block'</code>> <br/> <input type=<code>"hidden"</code> name=<code>"products_id"</code> value=<code>"456"</code> <code>/><input type="image" src="http:/fr.weddingdressescompany.com/</code>includes<code>/templates/</code>weddingdress-7<code>/buttons/</code>french<code>/button_in_cart.gif" alt="ajouter au panier" title=" ajouter au panier " /</code>> <<code>/p> <br/>   <br/></</code>div> <br/><div> <br/> <div class=<code>'safe_onlinechat'</code>> <br/> <div class=<code>'safe_ssl'</code>> <br/> <a target=<code>'_blank'</code> href=<code>'msnim:chat?contact=myonlineservice@msn.com'</code> style=<code>"float:left; "</code>><img src=<code>'http://fr.weddingdressescompany.com/banner/msn.jpg'</code>><<code>/a> <br/> <a target='_blank' href='callto:/meganfox59'><img border=0 align='absmiddle' src='http:/fr.weddingdressescompany.com/</code>banner<code>/skype.jpg' style="float:left; "></</code>a> <br/> <<code>/div> <br/> </</code>div> <br/> <br/><<code>/div> <br/> <br/></</code>div> <br/> <br/> <br/><br class=<code>"clearBoth"</code> <code>/> <br/><div id='descript_menu'> <br/><ul id='more_info_tabs' class='idTabs idTabsShort'> <br/> <li><a onclick='dissplay_descript(this);' style='cursor:pointer;'>Details</</code>span><<code>/a></</code>li> <br/> <li><a onclick=<code>'displaysize(this);'</code>style=<code>'cursor:pointer;'</code>>SIZE & COLOR CHART<<code>/a></</code>li> <br/> <li><a onclick=<code>'dissplay_return(this);'</code>style=<code>'cursor:pointer;'</code>>Shipping<<code>/a></</code>li> <br/> <li><a onclick=<code>'measure(this);'</code>style=<code>'cursor:pointer;'</code>>How to Measure<<code>/a></</code>li> <br/><<code>/ul> <br/><script> <br/> function displaysize(obj){ <br/> var measure = document.getElementById('idTabMeasure'); <br/> var idTabtwo = document.getElementById('idTabtwo'); <br/> var shipping_return = document.getElementById('tab_3'); <br/> var descript = document.getElementById('productDescription'); <br/> <br/> idTabtwo.setAttribute('class','block_hidden_only_for_screen'); <br/> descript.setAttribute('class','display'); <br/> shipping_return.setAttribute('class','display'); <br/> measure.setAttribute('class','display'); <br/> } <br/> function dissplay_descript(obj){ <br/> var measure = document.getElementById('idTabMeasure'); <br/> var descript = document.getElementById('productDescription'); <br/> var idTabtwo = document.getElementById('idTabtwo'); <br/> var shipping_return = document.getElementById('tab_3'); <br/> descript.setAttribute('class','block_hidden_only_for_screen'); <br/> idTabtwo.setAttribute('class','display'); <br/> shipping_return.setAttribute('class','display'); <br/> measure.setAttribute('class','display'); <br/> <br/> } <br/> function dissplay_return(obj){ <br/> var measure = document.getElementById('idTabMeasure'); <br/> var shipping_return = document.getElementById('tab_3'); <br/> var descript = document.getElementById('productDescription'); <br/> var idTabtwo = document.getElementById('idTabtwo'); <br/> shipping_return.setAttribute('class','block_hidden_only_for_screen'); <br/> idTabtwo.setAttribute('class','display'); <br/> descript.setAttribute('class','display'); <br/> measure.setAttribute('class','display'); <br/> <br/> } <br/> function measure(obj){ <br/> var measure = document.getElementById('idTabMeasure'); <br/> var shipping_return = document.getElementById('tab_3'); <br/> var descript = document.getElementById('productDescription'); <br/> var idTabtwo = document.getElementById('idTabtwo'); <br/> measure.setAttribute('class','block_hidden_only_for_screen'); <br/> idTabtwo.setAttribute('class','display'); <br/> descript.setAttribute('class','display'); <br/> shipping_return.setAttribute('class','display'); <br/> <br/> <br/> <br/> } <br/></</code>script> <br/><div id=<code>'more_info_sheets'</code> class=<code>'sheets align_justify'</code>> <br/> <br/><div id=<code>"productDescription"</code> class=<code>'displayblock'</code>>Nom de l<code>'article:</div> <br/> <br/><div id='</code>idTabtwo<code>' class='</code>display<code>'> <br/> <div class='</code>SizeKind<code>'> <br/> <div style='</code>background-attachment: scroll; background-image: none; background-position: 0pt 0pt; background-repeat: repeat; border-bottom: 1px solid rgb(238, 238, 238); margin-bottom: 10px; padding-bottom: 10px; padding-top: 10px; text-align: center;<code>'> <br/> <p style='</code>font-weight: bold; color: rgb(178, 30, 54); font-size: 14px;<code>'>Please choose your favorite color from the palette</p> <br/> <a id='</code>single_3<code>' href='</code>http:<code>//</code>fr.weddingdressescompany.com<code>/image/</code>img_ColorCard.jpg<code>'><img src='</code>http:<code>//</code>fr.weddingdressescompany.com<code>/image/</code>img_ColorCard.jpg<code>' alt='</code>wedding dress card palette<code>' width='</code>720<code>'></a> <br/> <p style='</code>text-align: left;<code>'><span style='</code>color: rgb(255, 0, 0);<code>'>Notice:</span>Since computer screens have chromatic aberration, especially between CRT screen and LCD screen, we can not guarantee the color of the dress you get will be 100% similar as the color chart. And also different fabrics will show different color degree on the same color. So we can not accept any returned dress for sake of color. Please kindly understand us.</p> <br/> </div> <br/> <div style='</code>background-attachment: scroll; background-image: none; background-position: 0pt 0pt; background-repeat: repeat; border-bottom: 1px solid rgb(238, 238, 238); margin-bottom: 20px; padding-bottom: 20px; padding-top: 10px; text-align: center;<code>'> <br/> <p style='</code>font-weight: bold; color: rgb(178, 30, 54); font-size: 14px;<code>'> Please choose your size</p> <br/> <table cellspacing="0" cellpadding="0 "> <br/>    <tbody> <br/>        <tr> <br/>            <th colspan="15 ">Standard size (in centimeter)</th> <br/>        </tr> <br/>        <tr> <br/> <br/>            <th>US size no</th> <br/>            <td>2</td> <br/>            <td>4</td> <br/>            <td>6</td> <br/>            <td>8</td> <br/>            <td>10</td> <br/> <br/>            <td>12</td> <br/>            <td>14</td> <br/>            <td>16</td> <br/>            <td>18</td> <br/>            <td>20</td> <br/>            <td>22</td> <br/> <br/>            <td>24</td> <br/>            <td>26</td> <br/>            <td>28</td> <br/>        </tr> <br/>        <tr> <br/>            <th>EUR size no</th> <br/>            <td>32</td> <br/> <br/>            <td>34</td> <br/>            <td>36</td> <br/>            <td>38</td> <br/>            <td>40</td> <br/>            <td>42</td> <br/>            <td>44</td> <br/> <br/>            <td>46</td> <br/>            <td>48</td> <br/>            <td>50</td> <br/>            <td>52</td> <br/>            <td>54</td> <br/>            <td>56</td> <br/> <br/>            <td>58</td> <br/>        </tr> <br/>        <tr> <br/>            <th>Bust</th> <br/>            <td>84</td> <br/>            <td>86</td> <br/>            <td>89</td> <br/> <br/>            <td>91</td> <br/>            <td>94</td> <br/>            <td>98</td> <br/>            <td>102</td> <br/>            <td>105</td> <br/>            <td>109</td> <br/> <br/>            <td>114</td> <br/>            <td>119</td> <br/>            <td>124</td> <br/>            <td>132</td> <br/>            <td>142</td> <br/>        </tr> <br/> <br/>        <tr> <br/>            <th>Waist</th> <br/>            <td>66</td> <br/>            <td>69</td> <br/>            <td>71</td> <br/>            <td>74</td> <br/> <br/>            <td>76</td> <br/>            <td>80</td> <br/>            <td>84</td> <br/>            <td>88</td> <br/>            <td>91</td> <br/>            <td>96</td> <br/> <br/>            <td>102</td> <br/>            <td>107</td> <br/>            <td>114</td> <br/>            <td>124</td> <br/>        </tr> <br/>        <tr> <br/>            <th>Hip</th> <br/> <br/>            <td>91</td> <br/>            <td>94</td> <br/>            <td>97</td> <br/>            <td>99</td> <br/>            <td>102</td> <br/>            <td>105</td> <br/> <br/>            <td>109</td> <br/>            <td>113</td> <br/>            <td>117</td> <br/>            <td>122</td> <br/>            <td>127</td> <br/>            <td>132</td> <br/> <br/>            <td>140</td> <br/>            <td>150</td> <br/>        </tr> <br/>        <tr> <br/>            <th>Shoulder to floor</th> <br/>            <td>150</td> <br/>            <td>150</td> <br/> <br/>            <td>151</td> <br/>            <td>152</td> <br/>            <td>152</td> <br/>            <td>153</td> <br/>            <td>154</td> <br/>            <td>154</td> <br/> <br/>            <td>155</td> <br/>            <td>156</td> <br/>            <td>156</td> <br/>            <td>156</td> <br/>            <td>156</td> <br/>            <td>156</td> <br/> <br/>        </tr> <br/>    </tbody> <br/></table> <br/><p> </p> <br/><table cellspacing="0" cellpadding="0 "> <br/>    <tbody> <br/>        <tr> <br/>            <th colspan="15 ">Standard size (in inches)</th> <br/>        </tr> <br/> <br/>        <tr> <br/>            <th>US size no</th> <br/>            <td>2</td> <br/>            <td>4</td> <br/>            <td>6</td> <br/>            <td>8</td> <br/> <br/>            <td>10</td> <br/>            <td>12</td> <br/>            <td>14</td> <br/>            <td>16</td> <br/>            <td>18</td> <br/>            <td>20</td> <br/> <br/>            <td>22</td> <br/>            <td>24</td> <br/>            <td>26</td> <br/>            <td>28</td> <br/>        </tr> <br/>        <tr> <br/>            <th>EUR size no</th> <br/> <br/>            <td>32</td> <br/>            <td>34</td> <br/>            <td>36</td> <br/>            <td>38</td> <br/>            <td>40</td> <br/>            <td>42</td> <br/> <br/>            <td>44</td> <br/>            <td>46</td> <br/>            <td>48</td> <br/>            <td>50</td> <br/>            <td>52</td> <br/>            <td>54</td> <br/> <br/>            <td>56</td> <br/>            <td>58</td> <br/>        </tr> <br/>        <tr> <br/>            <th>Bust</th> <br/>            <td>33</td> <br/>            <td>34</td> <br/> <br/>            <td>35</td> <br/>            <td>36</td> <br/>            <td>37</td> <br/>            <td>39</td> <br/>            <td>40</td> <br/>            <td>42</td> <br/> <br/>            <td>43</td> <br/>            <td>45</td> <br/>            <td>47</td> <br/>            <td>49</td> <br/>            <td>52</td> <br/>            <td>56</td> <br/> <br/>        </tr> <br/>        <tr> <br/>            <th>Waist</th> <br/>            <td>26</td> <br/>            <td>27</td> <br/>            <td>28</td> <br/>            <td>29</td> <br/> <br/>            <td>30</td> <br/>            <td>32</td> <br/>            <td>33</td> <br/>            <td>35</td> <br/>            <td>36</td> <br/>            <td>38</td> <br/> <br/>            <td>40</td> <br/>            <td>42</td> <br/>            <td>45</td> <br/>            <td>49</td> <br/>        </tr> <br/>        <tr> <br/>            <th>Hip</th> <br/> <br/>            <td>36</td> <br/>            <td>37</td> <br/>            <td>38</td> <br/>            <td>39</td> <br/>            <td>40</td> <br/>            <td>42</td> <br/> <br/>            <td>43</td> <br/>            <td>45</td> <br/>            <td>46</td> <br/>            <td>48</td> <br/>            <td>50</td> <br/>            <td>52</td> <br/> <br/>            <td>55</td> <br/>            <td>59</td> <br/>        </tr> <br/>        <tr> <br/>            <th>Shoulder to floor</th> <br/>            <td>59</td> <br/>            <td>59</td> <br/> <br/>            <td>60</td> <br/>            <td>60</td> <br/>            <td>60</td> <br/>            <td>60</td> <br/>            <td>61</td> <br/>            <td>61</td> <br/> <br/>            <td>61</td> <br/>            <td>61</td> <br/>            <td>62</td> <br/>            <td>62</td> <br/>            <td>62</td> <br/>            <td>62</td> <br/> <br/>        </tr> <br/>    </tbody> <br/></table> <br/> <br/> </div> <br/> <br class='</code>clear<code>'> <br/> </div> <br/></div> <br/> <br/> <br/>          <div id="tab_3" class='</code>display<code>'> <br/> <br/>          <h3>Shipping Time</h3> <br/><p>Total Time=Operation Time + Shipping Time</p> <br/><p>Default operation time is 30 business days from the day you place an order.  <br/>We will rush your order within 20 business days and 15 business days if you  <br/>choose rush service from  the operation time option,and you will pay extra  <br/>cost for it.Shipping time varies as: UPS , TNT 2-4 business days, Air Mail(Express) 10  <br/>business days, Air Mail(Normal) 20 business days. Please calculate the total  <br/>time carefully before you place the order.</p> <br/><p><i>Note: You can also choose Air Mail(Normal) if package weight is under 2kg.</i></p> <br/> <br/><h3>Return Tips</h3> <br/><p>If any returns, please contact our customer support within 24 hours from the time you receive your gown and fill in the Application for Refund in email. Only products in their original condition will be accepted. We do not accept returns on any custom made order. ALL SALES ARE FINAL for custom made dresses. For mis-shipped items, once confirmation got with us, we will be responsible for item exchange and have full refund returned including shipping fee and handling fee.  In principle, any emergency order isnot subject to this return policy and will be denied. Also other merchandise, such as veil ect.</p></div> <br/> <br/><div id="idTabMeasure" style="height:510px;" class='</code>display<code>'> <br/> <div class="tempnr_box "> <br/> <br/> <div class="images_zuo "> <a href="http://fr.weddingdressescompany.com/low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html" ><img width="163" height="479" src="http://fr.weddingdressescompany.com/image/wedding_size.jpg"/></a></div> <br/> <br/> <div class="nr_right "> <br/> <p style="color:#b21e36;font-size:14px;font-style:italic;font-weight:bold; padding-left:0; ">How to Measure</p> <br/> <ul><li><span class="wzys ">A.Bust:</span>Measure Around The Fullest Part Of Your Bust.</li> <br/> <br/> <li><span class="wzys ">B.Waist:</span>Measure Around The Smallest Part Of Your Waistline.</li> <br/> <li><span class="wzys ">C.Hips:</span>Measure Around The Widest Part Of Your Hips.</li> <br/> <li><span class="wzys ">D.Length:</span> Measure From Top Of The Shoulder Through The Nipple To Floor,Including The Height Of <b>Wedding Shoes</b>.</li> <br/> <li><span class="wzys ">E.Under Bust:</span>Measure Around Under Your Bust.</li> <br/> <br/> <li><span class="wzys ">F.Nipple To Nipple:</span> The Measurement Between Your Two Nipples.</li> <br/> <li><span class="wzys ">G.Shoulder To NiPPLE:</span>Measure From Top Of The Shoulder To Nipple.</li> <br/> <li><span class="wzys ">H.Shoulder TO Waist:</span>Measure From Top Of The Shoulder Through The Nipple TO Waist.</li> <br/> <li><span class="wzys ">I.Shoulder To Hips:</span>Measure From Top Of The Shoulder Through The Nipple TO Hips.</li> <br/> <br/> <li><span class="wzys ">J.Shoulder To Shoulder:</span>Measure Your Shoulder Width From The Back.</li> <br/> <li><span class="wzys ">k.Neck:</span>Measure Around The Fullest Part Of Your Neck.</li> <br/> <li><span class="wzys ">L.Biceps:</span>Measure Around The Widest Part Of Your Arm.</li> <br/> <li class="wzys" style="color:#DD0000;font-size:14px;font-weight:bold;padding:5px;text-align:right;border:1px solid #eee; ">Please Measure With Bra and Underwear On.</li> <br/> <li class="wzys" style="font-size:11px;font-weight:bold;text-align:right; ">Remember To Keep The Measuring Tape Comfortably Loose.</li></ul> <br/> <br/>            <br class="clear" /> <br/> <div><span style="color:#DD0000; margin-top:10px; ">Notice:</span>1. Please also tell us your "Height with Shoes" on (measured from top head to your wedding shoes'</code> heel).<br> <br/>2. Please remember that wear your Wedding Underwear and your Wedding Shoes.<br> <br/>3.Inches and Centimetersare both available for size, and please tell us if you use inches or centimeters.<br> <br/>4. We suggest you measure yourself by a Professional Tailor. <br> <br/>5. It is very normal to have 3CM measurement error between the sizes you give and the sizes you will receive on your dress. This kind of error can not be accepted for any returns and exchanges. <<code>/div> <br/> <br/> </</code>div> <br/> <br/> <span class=<code>"clear "</code>><<code>/span> <br/> </</code>div> <br/> <<code>/div> <br/> <br/></</code>div> <br/><<code>/div> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/>  <br class="clear" /</code>> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/><<code>/form> <br/> <br/></</code>div> <br/><<code>/td> <br/> <br/> <br/></</code>tr> <br/><<code>/table> <br/><br/> <br/> <br/><div id="navSuppWrapper "> <br/> <br/><div id="navSupp "> <br/><ul><li><a href="http:/fr.weddingdressescompany.com/</code>index.php <code>">Accueil</a></li> <br/><li><a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/index.php?main_page=shippinginfo ">Frais de port</</code>a><<code>/li> <br/><li><a href="http:/fr.weddingdressescompany.com/</code>index.php?main_page=Wholesale <code>">Vente en gros</a></li> <br/><li><a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/index.php?main_page=privacy ">Confidentialité</</code>a><<code>/li> <br/><li><a href="http:/fr.weddingdressescompany.com/</code>index.php?main_page=Tracking <code>">Suivi de commande</a></li> <br/><li><a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/index.php?main_page=Coupons ">Coupons</</code>a><<code>/li> <br/><li><a href="http:/fr.weddingdressescompany.com/</code>index.php?main_page=conditions <code>">Conditions d'utilisation</a></li> <br/><li><a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/index.php?main_page=FAQ ">FAQ</</code>a><<code>/li> <br/><li><a href="http:/fr.weddingdressescompany.com/</code>index.php?main_page=Western_Union <code>">Western Union</a></li> <br/><li><a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/index.php?main_page=Payment_Methods ">Modes de paiement</</code>a><<code>/li> <br/><li><a href="http:/fr.weddingdressescompany.com/</code>index.php?main_page=contact_us <code>">Contactez-nous</a></li> <br/> <br/> <br/></ul> <br/> <br/></div> <br/><DIV  align="</code>center <code>"> <a href="</code>http:<code>//</code>fr.weddingdressescompany.com<code>/low-cost-custommade-bretelles-sexy-mariage-mariée-robe-de-mariée-robes-p-456.html" ><IMG src="http:/fr.weddingdressescompany.com/</code>includes<code>/templates/</code>weddingdress-7<code>/images/</code>payment.png<code>" width="</code>746<code>" height="</code>58 <code>"></a></DIV> <br/><div align="</code>center <code>">Copyright Â© 2012 Tous droits réservés .</div> <br/> <br/> <br/></div> <br/></div> <br/><br/> <br/><br/> <br/><br/> <br/><br/> <br/> <br/><br><br><a href="</code>http:<code>//</code>blog.ishirtsale.com<code>">  sexy  blog </a><br><br><a href="</code>http:<code>//</code>blog.surprisewatches.com<code>"> mariée  </a><br><br><a href="</code>http:<code>//</code>blog.bootsclubs.com"> About weddingdressescompany.com blog </a> </div> </div> </div> </div> <div class="category"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/nike-air-max">nike air max</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div id="category25"> <div class="subcategory"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/nike-air-max/180">180</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div style="clear:both"/> <div id="subcategory51"> <div class="problem"> <h3><a href="/erlang+fsharp/nike-air-max/180/180">180</a></h3> <div class="solutions" id="problem368"> <strong><a href=<code>"http://www.kissdrdrebeats.com/ "</code>>beats by dre headphones<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.beatsdrdrecompany.com/ "</code>>by dre tour<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.loginmonsterbeats.com/ "</code>>beats by dre tour<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.bigbeatsbydre.com/ "</code>>beats by dre solo<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.beatsdrdrecompany.com/ "</code>>monster beats by dre<<code>/a></</code>strong><br><br/><br><br/> <br/><title> 2011 Monster Beats Studio Transformers,Transformers Beats Sale,Dr Dre Transformers Online,Dr Dre Beats Outlet<<code>/title> <br/><meta http-equiv="Content-Type" content="text/</code>html; charset=UTF-8<code>" /> <br/><meta name="</code>keywords<code>" content="</code>2011 Monster Beats Studio Transformers,Transformers Beats Sale,Dr Dre Transformers Online,Dr Dre Beats Outlet <code>" /> <br/><meta name="</code>description<code>" content="</code>2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones.Buy Monster Beats Studio Transformers Online at discounted beets prices <code>" /> <br/><meta http-equiv="</code>imagetoolbar<code>" content="</code>no<code>" /> <br/><meta name="</code>author<code>" content="</code>Zen Cart China<code>" /> <br/><meta name="</code>generator<code>" content="</code>Zen Cart, http:<code>//</code>www.zen-cart.cn<code>" /> <br/> <br/> <br/><link rel="</code>canonical<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/2011-monster-beats-by-dr-dre-transformers-limited-edition-headphones-p-42.html" /</code>> <br/> <br/><link rel=<code>"stylesheet"</code> type=<code>"text/css"</code> href=<code>"http://www.kissdrdrebeats.com/includes/templates/monsterbeats/css/style_imagehover.css"</code> <code>/><br/><link rel="stylesheet" type="text/</code>css<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/includes/</code>templates<code>/monsterbeats/</code>css<code>/styles_AJAX_image_swapper.css" /</code>><br/><link rel=<code>"stylesheet"</code> type=<code>"text/css"</code> href=<code>"http://www.kissdrdrebeats.com/includes/templates/monsterbeats/css/stylesheet.css"</code> <code>/><br/><link rel="stylesheet" type="text/</code>css<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/includes/</code>templates<code>/monsterbeats/</code>css<code>/stylesheet_css_buttons.css" /</code>><br/><link rel=<code>"stylesheet"</code> type=<code>"text/css"</code> media=<code>"print"</code> href=<code>"http://www.kissdrdrebeats.com/includes/templates/monsterbeats/css/print_stylesheet.css"</code> <code>/><br/><br/><br/><br/> <br/><link type="text/</code>css<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/includes/</code>templates<code>/monsterbeats/</code>css<code>/magiczoomplus.css" rel="stylesheet" media="screen" /</code>> <br/> <br/><br/><br/> <br/> <br/> <br/> <br/><div id=<code>"mainWrapper "</code>> <br/> <br/> <br/> <br/> <br/> <br/><div id=<code>"headerWrapper "</code>> <br/> <br/> <br/> <br/><div id=<code>"logoWrapper "</code>> <br/> <div id=<code>"logo "</code>><a href=<code>"http://www.kissdrdrebeats.com/ "</code>><img src=<code>"http://www.kissdrdrebeats.com/includes/templates/monsterbeats/images/logo.gif"</code> alt=<code>"Powered by Zen Cart :: The Art of E-Commerce"</code> title=<code>" Powered by Zen Cart :: The Art of E-Commerce "</code> width=<code>"320"</code> height=<code>"72"</code> <code>/></</code>a><<code>/div> <br/> <br/><div class="list" style="float:right; "> <br/> <br/><div class="languages-wrapper "> <br/> <br/> <form name="currencies_form" action="http:/www.kissdrdrebeats.com/</code><code>" method="</code>get <code>"><select name="</code>currency<code>" onchange="</code>this.form.submit(); <code>"><br/>  <option value="</code>USD<code>" selected="</code>selected <code>">US Dollar</option><br/>  <option value="</code>CNY <code>">CNY</option><br/>  <option value="</code>EUR <code>">Euro</option><br/>  <option value="</code>GBP <code>">GB Pound</option><br/>  <option value="</code>CAD <code>">Canadian Dollar</option><br/>  <option value="</code>AUD <code>">Australian Dollar</option><br/></select><br/><input type="</code>hidden<code>" name="</code>main_page<code>" value="</code>product_info<code>" /><input type="</code>hidden<code>" name="</code>products_id<code>" value="</code>42<code>" /></form> <label class="</code>float-right<code>" style="</code>font-size:14px;font-weight:bold; <code>">  Currency:</label> <br/> <br/> <br/> <ul class="</code>list-style-none<code>" style="</code>float:left;<code>" id="</code>headlogin <code>"> <br/>    <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/index.php?main_page=login ">Log In</</code>a> <br/> or <a href=<code>"http://www.kissdrdrebeats.com/index.php?main_page=create_account "</code>>Register<<code>/a> <br/></</code>div> <br/> <br/><div style=<code>"float:right; margin-top:8px;"</code> > <br/> <form name=<code>"quick_find_header"</code> action=<code>"http://www.kissdrdrebeats.com/index.php?main_page=advanced_search_result"</code> method=<code>"get "</code>><input type=<code>"hidden"</code> name=<code>"main_page"</code> value=<code>"advanced_search_result"</code> <code>/><input type="hidden" name="search_in_description" value="1" /</code>><div class=<code>"search-header-input "</code>><input type=<code>"text"</code> name=<code>"keyword"</code> size=<code>"6"</code> maxlength=<code>"30"</code> style=<code>"width: 138px"</code> value=<code>"Search for..."</code> onfocus=<code>"if (this.value == 'Search for...') this.value = '';"</code> onblur=<code>"if (this.value == '') this.value = 'Search for...';"</code> <code>/></</code>div><input class=<code>"button-search-header"</code> type=<code>"image"</code> src=<code>"http://www.kissdrdrebeats.com/includes/templates/monsterbeats/images/search_header_button.gif"</code> value=<code>"Serch"</code> <code>/></</code>form><<code>/div> <br/><div style="float:right; margin-top:8px;  "> <br/>                 <div id="cartBoxEmpty "><a href="http:/www.kissdrdrebeats.com/</code>index.php?main_page=shopping_cart <code>"><img class="</code>cart-icon empty float-left<code>" src="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/includes/</code>templates<code>/monsterbeats/</code>images<code>/spacer.gif" /</code>><<code>/a>Your cart is empty</</code>div> <br/> <br/><<code>/div> <br/></</code>div> <br/><div class=<code>"clearBoth"</code> <code>/></</code>div> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/><div id=<code>"menu "</code>> <br/> <br/><div id=<code>"navEZPagesTop "</code>> <br/><ul> <br/> <li><a href=<code>"http://www.kissdrdrebeats.com/index.php "</code>>Home<<code>/a></</code>li> <br/> <li><a href=<code>"http://www.kissdrdrebeats.com/ "</code>>All Products<<code>/a></</code>li> <br/> <li><a href=<code>"http://www.kissdrdrebeats.com/index.php?main_page=shippinginfo "</code>>Shipping & Returns<<code>/a></</code>li> <br/> <li><a href=<code>"http://www.kissdrdrebeats.com/index.php?main_page=Coupons "</code>>Coupons<<code>/a></</code>li> <br/> <li><a href=<code>"http://www.kissdrdrebeats.com/index.php?main_page=Wholesale "</code>>Wholesale<<code>/a></</code>li> <br/> <li><a href=<code>"http://www.kissdrdrebeats.com/index.php?main_page=FAQ "</code>>FAQ<<code>/a></</code>li> <br/> <li><a href=<code>"http://www.kissdrdrebeats.com/index.php?main_page=contact_us "</code>>Contact Us<<code>/a></</code>li> <br/> <br/><<code>/ul> <br/></</code>div> <br/> <br/><<code>/div> <br/> <br/></</code>div> <br/> <br/><table width=<code>"100%"</code> border=<code>"0"</code> cellspacing=<code>"0"</code> cellpadding=<code>"0"</code> id=<code>"contentMainWrapper "</code>> <br/> <tr> <br/> <br/> <td id=<code>"navColumnOne"</code> class=<code>"columnLeft"</code> style=<code>"width: 190px "</code>> <br/><div id=<code>"navColumnOneWrapper"</code> style=<code>"width: 190px "</code>> <br/><div class=<code>"leftBoxContainer"</code> id=<code>"categories"</code> style=<code>"width: 190px "</code>> <br/><div class=<code>"sidebox-header-left main-sidebox-header-left "</code>><h3 class=<code>"leftBoxHeading main-sidebox-header-right"</code> id=<code>"categoriesHeading "</code>>Categories<<code>/h3></</code>div> <br/><div id=<code>"categoriesContent"</code> class=<code>"sideBoxContent "</code>><br/><div class=<code>"categories-top-list no-dots "</code>><a class=<code>"category-top"</code> href=<code>"http://www.kissdrdrebeats.com/2011-new-dr-dre-studio-for-christmas-gifts-c-4.html "</code>>2011 New Dr Dre Studio For Christmas Gifts<<code>/a></</code>div><br/><div class=<code>"categories-top-list  "</code>><a class=<code>"category-top"</code> href=<code>"http://www.kissdrdrebeats.com/2011-dr-dre-studio-teams-logo-headphones-c-6.html "</code>>2011 Dr Dre Studio Teams Logo Headphones<<code>/a></</code>div><br/><div class=<code>"categories-top-list  "</code>><a class=<code>"category-top"</code> href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-nate-robinson-c-9.html "</code>>2011 Monster Beats Studio Nate Robinson<<code>/a></</code>div><br/><div class=<code>"categories-top-list  "</code>><a class=<code>"category-top"</code> href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html "</code>><span class=<code>"category-subs-selected "</code>>2011 Monster Beats Studio Transformers<<code>/span></</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-butterfly-c-13.html <code>">Monster Beats Butterfly</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-by-dr-dre-power-c-25.html ">Monster Beats By Dr Dre Power</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-by-dr-dre-tour-c-16.html <code>">Monster Beats By Dr Dre Tour</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-dr-dre-diddy-c-10.html ">Monster Beats Dr Dre Diddy</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-dr-dre-pro-c-5.html <code>">Monster Beats Dr Dre Pro</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-dr-dre-solo-c-12.html ">Monster Beats Dr Dre Solo</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-dr-dre-solo-hd-c-19.html <code>">Monster Beats Dr Dre Solo HD</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-dr-dre-wireless-bluetooth-c-24.html ">Monster Beats Dr Dre Wireless Bluetooth</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-miles-davis-tribute-c-20.html <code>">Monster Beats Miles Davis Tribute</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-studio-c-3.html ">Monster Beats Studio</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-studio-diamond-c-14.html <code>">Monster Beats Studio Diamond</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-studio-dr-dre-ferrari-c-7.html ">Monster Beats Studio Dr Dre Ferrari</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-studio-dr-dre-graffiti-c-17.html <code>">Monster Beats Studio Dr Dre Graffiti</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-studio-justin-bieber-c-1.html ">Monster Beats Studio Justin Bieber</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-studio-kobe-bryant-c-2.html <code>">Monster Beats Studio Kobe Bryant</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-studio-lamborghini-c-21.html ">Monster Beats Studio Lamborghini</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-studio-lebron-james-c-22.html <code>">Monster Beats Studio Lebron James</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-studio-michael-jackson-c-18.html ">Monster Beats Studio Michael Jackson</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-beats-studio-red-sox-c-15.html <code>">Monster Beats Studio Red Sox</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-beats-turbine-c-23.html ">Monster Beats Turbine</</code>a><<code>/div><br/><div class="categories-top-list  "><a class="category-top" href="http:/www.kissdrdrebeats.com/</code>monster-lady-gaga-heartbeats-c-11.html <code>">Monster Lady Gaga Heartbeats</a></div><br/><div class="</code>categories-top-list <code>"><a class="</code>category-top<code>" href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/monster-vmoda-crossfade-lp-c-26.html ">Monster V-MODA Crossfade LP</</code>a><<code>/div><br/></</code>div><<code>/div> <br/> <br/></</code>div><<code>/td> <br/>    <td id="columnCenter" valign="top "> <br/> <br/>    <div id="navBreadCrumb ">  <a href="http:/www.kissdrdrebeats.com/</code> <code>">Home</a> :: <br/>  <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/2011-monster-beats-studio-transformers-c-8.html ">2011 Monster Beats Studio Transformers</</code>a> :: <br/>2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones<br/><<code>/div> <br/> <br/> <br/> <br/> <br/> <br/><div class="centerColumn" id="productGeneral "> <br/> <br/> <br/><h1 id="productName" class="productGeneral ">2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones</</code>h1> <br/> <br/> <br/> <br/><form name=<code>"cart_quantity"</code> action=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-by-dr-dre-transformers-limited-edition-headphones-p-42.html?action=add_product"</code> method=<code>"post"</code> enctype=<code>"multipart/form-data "</code>><br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/><div id=<code>"productMainImage"</code> class=<code>"centeredContent back "</code>> <br/> <br/><noscript> <br/><a href=<code>"http://www.kissdrdrebeats.com/index.php?main_page=popup_image&pID=42"</code> target=<code>"_blank "</code>> <a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> ><img src=<code>"http://www.kissdrdrebeats.com/images/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones.jpg"</code> alt=<code>"2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones"</code> title=<code>" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones "</code> width=<code>"300"</code> height=<code>"225"</code> <code>/></</code>a><br <code>/><span class="imgLink ">larger image</</code>span><<code>/a></</code>noscript> <br/><<code>/div> <br/> <br/> <br/><span id="productPrices" class="productGeneral "> <br/><span class="normalprice ">$479.00 </</code>span> <span class=<code>"productSpecialPrice "</code>>$209.90<<code>/span><span class="productPriceDiscount "><br /</code>>Save: 56% off<<code>/span></</code>span> <br/> <br/> <br/> <br/><ul id=<code>"productDetailsList"</code> class=<code>"floatingBox back "</code>> <br/> <li>Model: monster083<<code>/li><br/>  <br/>  <br/>  <br/></</code>ul> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <div id=<code>"cartAdd "</code>> <br/> Add to Cart: <input type=<code>"text"</code> name=<code>"cart_quantity"</code> value=<code>"1"</code> maxlength=<code>"6"</code> size=<code>"4"</code> <code>/><br /</code>><br <code>/><input type="hidden" name="products_id" value="42" /</code>><input type=<code>"image"</code> src=<code>"http://www.kissdrdrebeats.com/includes/templates/monsterbeats/buttons/english/button_in_cart.gif"</code> alt=<code>"Add to Cart"</code> title=<code>" Add to Cart "</code> <code>/>          </</code>div> <br/> <br/> <br/><br class=<code>"clearBoth"</code> <code>/> <br/> <br/> <br/> <br/> <br/> <div id="productAdditionalImages "> <br/>  <div id="dfse "></</code>div> <br/> <div class=<code>"centerBoxContent "</code>> <br/> <br/> <br/> <div class=<code>"additionalImages centeredContent back"</code> style=<code>"width:33%; "</code>><br/> <br/> <noscript><a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> target=<code>"_blank "</code>> <a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> ><img src=<code>"http://www.kissdrdrebeats.com/images/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_001.jpg"</code> alt=<code>"2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones"</code> title=<code>" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones "</code> width=<code>"100"</code> height=<code>"75"</code> style=<code>"position:relative"</code> onmouseover=<code>"showtrail('images/monsterbeats//MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_001.jpg','2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones',100,75,600,450,this,0,0,100,75);"</code> onmouseout=<code>"hidetrail();"</code> <code>/></</code>a><br <code>/><span class="imgLinkAdditional ">larger image</</code>span><<code>/a></</code>noscript><<code>/div><br/>    <div class="additionalImages centeredContent back" style="width:33%; "><br/>      <br/>      <noscript><a href="http:/www.kissdrdrebeats.com/</code>2011-monster-beats-studio-transformers-c-8.html<code>" target="</code>_blank <code>"> <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/2011-monster-beats-studio-transformers-c-8.html" ><img src="http:/www.kissdrdrebeats.com/</code>images<code>/monsterbeats/</code>MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_002.jpg<code>" alt="</code>2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones<code>" title="</code> 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones <code>" width="</code>100<code>" height="</code>75<code>" style="</code>position:relative<code>" onmouseover="</code>showtrail(<code>'images/monsterbeats//MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_002.jpg'</code>,<code>'2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones'</code>,100,75,600,450,this,0,0,100,75);<code>" onmouseout="</code>hidetrail();<code>"  /></a><br /><span class="</code>imgLinkAdditional <code>">larger image</span></a></noscript></div><br/>    <div class="</code>additionalImages centeredContent back<code>" style="</code>width:33%; <code>"><br/>      <br/>      <noscript><a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/2011-monster-beats-studio-transformers-c-8.html" target="_blank "> <a href="http:/www.kissdrdrebeats.com/</code>2011-monster-beats-studio-transformers-c-8.html<code>" ><img src="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/images/</code>monsterbeats<code>/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_003.jpg" alt="2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones" title=" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones " width="100" height="75" style="position:relative" onmouseover="showtrail('images/</code>monsterbeats<code>//</code>MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_003.jpg<code>','</code>2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones<code>',100,75,600,450,this,0,0,100,75);" onmouseout="hidetrail();"  /></a><br /><span class="imgLinkAdditional ">larger image</span></a></noscript></div><br/><br class="clearBoth" /> <br/> <br/>    <div class="additionalImages centeredContent back" style="width:33%; "><br/>      <br/>      <noscript><a href="http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html" target="_blank "> <a href="http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html" ><img src="http://www.kissdrdrebeats.com/images/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_004.jpg" alt="2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones" title=" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones " width="100" height="75" style="position:relative" onmouseover="showtrail('</code>images<code>/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_004.jpg','2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones',100,75,600,450,this,0,0,100,75);" onmouseout="hidetrail();"  /</code>><<code>/a><br /</code>><span class=<code>"imgLinkAdditional "</code>>larger image<<code>/span></</code>a><<code>/noscript></</code>div><br/> <div class=<code>"additionalImages centeredContent back"</code> style=<code>"width:33%; "</code>><br/> <br/> <noscript><a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> target=<code>"_blank "</code>> <a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> ><img src=<code>"http://www.kissdrdrebeats.com/images/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_005.jpg"</code> alt=<code>"2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones"</code> title=<code>" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones "</code> width=<code>"100"</code> height=<code>"75"</code> style=<code>"position:relative"</code> onmouseover=<code>"showtrail('images/monsterbeats//MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_005.jpg','2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones',100,75,600,450,this,0,0,100,75);"</code> onmouseout=<code>"hidetrail();"</code> <code>/></</code>a><br <code>/><span class="imgLinkAdditional ">larger image</</code>span><<code>/a></</code>noscript><<code>/div><br/>    <div class="additionalImages centeredContent back" style="width:33%; "><br/>      <br/>      <noscript><a href="http:/www.kissdrdrebeats.com/</code>2011-monster-beats-studio-transformers-c-8.html<code>" target="</code>_blank <code>"> <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/2011-monster-beats-studio-transformers-c-8.html" ><img src="http:/www.kissdrdrebeats.com/</code>images<code>/monsterbeats/</code>MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_006.jpg<code>" alt="</code>2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones<code>" title="</code> 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones <code>" width="</code>100<code>" height="</code>75<code>" style="</code>position:relative<code>" onmouseover="</code>showtrail(<code>'images/monsterbeats//MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_006.jpg'</code>,<code>'2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones'</code>,100,75,600,450,this,0,0,100,75);<code>" onmouseout="</code>hidetrail();<code>"  /></a><br /><span class="</code>imgLinkAdditional <code>">larger image</span></a></noscript></div><br/><br class="</code>clearBoth<code>" /> <br/> <br/>    <div class="</code>additionalImages centeredContent back<code>" style="</code>width:33%; <code>"><br/>      <br/>      <noscript><a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/2011-monster-beats-studio-transformers-c-8.html" target="_blank "> <a href="http:/www.kissdrdrebeats.com/</code>2011-monster-beats-studio-transformers-c-8.html<code>" ><img src="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/images/</code>monsterbeats<code>/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_007.jpg" alt="2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones" title=" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones " width="100" height="75" style="position:relative" onmouseover="showtrail('images/</code>monsterbeats<code>//</code>MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_007.jpg<code>','</code>2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones<code>',100,75,600,450,this,0,0,100,75);" onmouseout="hidetrail();"  /></a><br /><span class="imgLinkAdditional ">larger image</span></a></noscript></div><br/>    <div class="additionalImages centeredContent back" style="width:33%; "><br/>      <br/>      <noscript><a href="http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html" target="_blank "> <a href="http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html" ><img src="http://www.kissdrdrebeats.com/images/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_008.jpg" alt="2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones" title=" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones " width="100" height="75" style="position:relative" onmouseover="showtrail('</code>images<code>/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_008.jpg','2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones',100,75,600,450,this,0,0,100,75);" onmouseout="hidetrail();"  /</code>><<code>/a><br /</code>><span class=<code>"imgLinkAdditional "</code>>larger image<<code>/span></</code>a><<code>/noscript></</code>div><br/> <div class=<code>"additionalImages centeredContent back"</code> style=<code>"width:33%; "</code>><br/> <br/> <noscript><a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> target=<code>"_blank "</code>> <a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> ><img src=<code>"http://www.kissdrdrebeats.com/images/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_009.jpg"</code> alt=<code>"2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones"</code> title=<code>" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones "</code> width=<code>"100"</code> height=<code>"75"</code> style=<code>"position:relative"</code> onmouseover=<code>"showtrail('images/monsterbeats//MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_009.jpg','2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones',100,75,600,450,this,0,0,100,75);"</code> onmouseout=<code>"hidetrail();"</code> <code>/></</code>a><br <code>/><span class="imgLinkAdditional ">larger image</</code>span><<code>/a></</code>noscript><<code>/div><br/><br class="clearBoth" /</code>> <br/> <br/> <div class=<code>"additionalImages centeredContent back"</code> style=<code>"width:33%; "</code>><br/> <br/> <noscript><a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> target=<code>"_blank "</code>> <a href=<code>"http://www.kissdrdrebeats.com/2011-monster-beats-studio-transformers-c-8.html"</code> ><img src=<code>"http://www.kissdrdrebeats.com/images/monsterbeats/MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_010.jpg"</code> alt=<code>"2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones"</code> title=<code>" 2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones "</code> width=<code>"100"</code> height=<code>"75"</code> style=<code>"position:relative"</code> onmouseover=<code>"showtrail('images/monsterbeats//MonsterBeatsByDr.DreTransformersLimitedEditionHeadphones_010.jpg','2011 Monster Beats By Dr. Dre Transformers Limited Edition Headphones',100,75,600,450,this,0,0,100,75);"</code> onmouseout=<code>"hidetrail();"</code> <code>/></</code>a><br <code>/><span class="imgLinkAdditional ">larger image</</code>span><<code>/a></</code>noscript><<code>/div><br/><br class="clearBoth" /</code>> <br/> <br/><<code>/div></</code>div> <br/> <br/> <br/> <br/><div id=<code>"productDescription"</code> class=<code>"productGeneral biggerText "</code>><p>Advanced driver design for precise audio <br> Extra large speaker drivers for super deep bass<br> High powered digital amplifier plays hip hop, rock, R+B and more loud, without distortion<br> Monster headphone cable with Quadripole twisted pair construction for balanced sound and clarity<<code>/p><p><strong>What's In The Box</</code>strong><<code>/p><p>Beats Studio headphones<br>  Monster Cable headphone cable<br>  Rigid Tour case<br>  Anti-Microbial Cleaning cloth<br>  1/</code>8 to 1<code>/4" Adapter<br>  Monster iSoniTalk iPhone enabled headphone </</code>p><<code>/div> <br/> <br/> <br/><br class="clearBoth" /</code>> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/><<code>/form> <br/> <br/></</code>div> <br/><<code>/td> <br/> <br/> <br/>  </</code>tr> <br/><<code>/table> <br/> <br/> <br/><div id="navSuppWrapper "> <br/> <br/><div id="navSupp "> <br/><ul><li><a href="http:/www.kissdrdrebeats.com/</code>index.php <code>">Home</a></li> <br/><li>   <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/index.php?main_page=shippinginfo ">Shipping</</code>a><<code>/li> <br/><li>   <a href="http:/www.kissdrdrebeats.com/</code>index.php?main_page=Wholesale <code>">Wholesale</a></li> <br/><li>   <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/index.php?main_page=privacy ">Privacy</</code>a><<code>/li> <br/><li>   <a href="http:/www.kissdrdrebeats.com/</code>index.php?main_page=Tracking <code>">Order Tracking</a></li> <br/><li>   <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/index.php?main_page=Coupons ">Coupons</</code>a><<code>/li> <br/><li>   <a href="http:/www.kissdrdrebeats.com/</code>index.php?main_page=conditions <code>">Conditions of Use</a></li> <br/><li>   <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/index.php?main_page=FAQ ">FAQ</</code>a><<code>/li> <br/><li>   <a href="http:/www.kissdrdrebeats.com/</code>index.php?main_page=Payment_Methods <code>">Payment Methods</a></li> <br/><li>   <a href="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/index.php?main_page=contact_us ">Contact Us</</code>a><<code>/li> <br/> <br/> <br/></</code>ul> <br/> <br/><<code>/div> <br/><DIV  align="center "> <a href="http:/www.kissdrdrebeats.com/</code>2011-monster-beats-studio-transformers-c-8.html<code>" ><IMG src="</code>http:<code>//</code>www.kissdrdrebeats.com<code>/includes/</code>templates<code>/monsterbeats/</code>images<code>/paymentcart.jpg" width="473" height="37 "></</code>a> <<code>/DIV> <br/><div align="center ">Copyright Â© 2012 All Rights Reserved. </</code>div> <br/> <br/> <br/><<code>/div> <br/></</code>div> <br/> <br/> <br/> <br/> <br/><strong><a href=<code>"http://www.kissdrdrebeats.com/2011-new-dr-dre-studio-for-christmas-gifts-c-4.html "</code>>2011 New Dr Dre Studio For Christmas Gifts<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.kissdrdrebeats.com/2011-new-dr-dre-studio-for-christmas-gifts-c-4.html "</code>>Cheap Dr Dre Studio<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.kissdrdrebeats.com/2011-new-dr-dre-studio-for-christmas-gifts-c-4.html "</code>>Monster Studio Diamond Beats<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.kissdrdrebeats.com/2011-new-dr-dre-studio-for-christmas-gifts-c-4.html "</code>>Dr Dre Diamond Sale<<code>/a></</code>strong><br><br/><strong><a href=<code>"http://www.kissdrdrebeats.com/2011-new-dr-dre-studio-for-christmas-gifts-c-4.html "</code>>Dr Dre Studio For Christmas<<code>/a></</code>strong><br><br/><br><br><a href=<code>"http://blog.acheapbagsale.com"</code>> headphones blog <<code>/a><br><br><a href="http:/blog.kissmbtboots.com"> headphones  </</code>a><br><br><a href=<code>"http://blog.ringsday.com"</code>> About kissdrdrebeats.com blog </a> </div> </div> </div> </div> <div class="category"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/ugg">ugg</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div id="category26"> <div class="subcategory"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/ugg/180">180</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div style="clear:both"/> <div id="subcategory52"> <div class="problem"> <h3><a href="/erlang+fsharp/ugg/180/180">180</a></h3> <div class="solutions" id="problem362"> <strong><a href=<code>"http://www.freshmoncler.com/ "</code>>moncler<<code>/a></</code>strong><strong><a href=<code>"http://www.freshmoncler.com/ "</code>>moncler coat<<code>/a></</code>strong>The sorts of lighting found in a area can noticeably change exactly how that room in your home looks. Lighting generally is a complicated dilemma, so let<code>'s begin by defining various lighting words. <br /><br/><br /><br/>Incandescent signals. These lights supply a nice, golden glow into a room. <strong><a href="http://www.freshmoncler.com/ ">moncler vest</a></strong>There'</code>re much nicer to utilize than this cheaper on the lookout flourescent equipment. <br <code>/><br/><br /</code>><br/>Downlights usually are round or perhaps square cannisters, commonly metal, which might be recessed directly into or secured onto a ceiling. These lights may very well be used simply because spotlights, floodlights or maybe for basic lighting. <br <code>/><br/><br /</code>><br/>Table lamps can be employed as project lighting or perhaps for overall lighting. <br <code>/><br/><br /</code>><br/>Uplights are usually one-bulb lights which can be placed on to the ground behind pieces of furniture, glass shelving or plants to supply them some sort of dramatic accentuation. <strong><a href=<code>"http://www.freshmoncler.com/ "</code>>moncler jackets<<code>/a></</code>strong><br <code>/><br/><br /</code>><br/>Strip lighting can be employed behind drawers and about stairs together with platforms to get a dramatic direct result. The networks lit in this way can seems to be floating above the ground. <br <code>/><br/><br /</code>><br/>Trail Lighting. A track can help you use a single electrical outlet to provide electricity to numerous lights along side track<code>'s length of time. The track is usually surface affixed or recessed. <strong><a href="http://www.freshmoncler.com/ ">discount moncler jackets</a></strong>Track lighting is amongst the most adaptable lighting solutions available and will be changed around for you to accent different aspects of a bedroom. <br /><br/><br /><br/>Track lighting products and recessed lighting is usually set to make an benefit called retaining wall washing which unfortunately, as that sounds, washes a total wall by using light. <br /><br/><br /><br/>Dimmer clicks give the chance to provide an alternative level about light through turning any knob. Dimmers help save electricity and gives mood lighting products for exclusive occasions. <strong><a href="http://www.freshmoncler.com/moncler-accessories-sale-c-1.html ">Moncler accessories</a></strong><br /><br/><br /><br/>Different rooms in your own home need distinctive lighting. Halls and also stairs need to be well lit to stop accidents. Livingrooms need a number of lighting solutions:background, undertaking lights and also accent lighting products. The most effective lighting to get kitchens will be bright above your head lights and extra under-counter signals for endeavor lighting. <br /><br/><br /><br/>All forms of lighting fixtures can be located for whatever your expections may get. <strong><a href="http://www.freshmoncler.com/moncler-vest-women-sale-c-10.html ">cheap Moncler Vest</a></strong>They can easily run as a result of very low-priced to remarkably high price fixtures. <br /><br/><br /><br/>You will discover special considerations when working with lighting to get art or perhaps wall hangings. <br /><br/><br /><br/>For anyone who is lighting an individual picture and painting, try to position the light so that it does not really show a good reflection in the glass of your art bit. There happen to be special snapshot lights made specifically for lighting shots but most of these are a lot of effective simply because can mainly highlight the highest or bottom with the picture. Downlights undoubtedly are a good choice. <strong><a href="http://www.freshmoncler.com/moncler-womens-hoody-sale-c-12.html ">Moncler Womens Hoody</a></strong><br /><br/><br /><br/>When lighting a gaggle of pictures, it'</code>s easier to use man or women lights inside track lighting which might be positioned on the pictures. <br <code>/><br/><br /</code>><br/>Lighting sculptures is usually particularly complex. You are able to use uplights, downlights or perhaps strip lamps, depending with the sculpture and its particular placement. Experiment by using different devices and their particular placement to discover the best impact. <strong><a href=<code>"http://www.freshmoncler.com/moncler-men-jackets-sale-c-4.html "</code>>cheap moncler jacket on sale<<code>/a></</code>strong><br <code>/><br/><br /</code>><br/>Creative by using lighting really can enhance a person<code>'s decorating venture. Make use out of all the different different types of lighting to make your home a amazing showcase. So you might have gone released and bought yourself a furry friend that you are excited concerning teaching not to mention feeding but it really suddenly occurred to you you happen to be unsure about precisely how to feed the ferret and you may be wondering just what do ferrets try to eat. That is a wonderful question because like any living thing on earth, the eating habits plays a big factor while in the health as well as the quality about life that it will have. What do ferrets eat when they are young? What do ferrets eat when they are older? What do ferrets eat when they are babies? If these are among a person'</code>s questions, keep reading and we<code>'ll touch with those content. <strong><a href="http://www.freshmoncler.com/moncler-kids-sale-c-3.html "> Moncler Jackets on sale</a></strong><br /><br/><br /><br/>What Do Ferrets Eat as Little ones? <br /><br/><br /><br/>What undertake ferrets consume as babies is a great question simply because likely if you'</code>ve owned an old-fashioned pet such as a cat or a dog a person likely wanted to feed them puppy food or become supplemental milk with the pet retail store and ferrets are only not which usually hard so that you can feed due to that. Baby ferrets feed off the mother and tend to be weaned off by the breeder or perhaps pet store so that you can ever become one still, with that said, once you may have the the baby ferret he is already familiar with a diet consists of pellets. <br <code>/><br/><br /</code>><br/>What Do Ferrets Eat as Parents? <br <code>/><br/><br /</code>><br/>What complete ferrets eat as people is a different wonderful query however it is not complicated by using a ferret like some other species of animals. The simply thing ferrets usually do not fair certainly with in the way of pet meals are foods that incorporate fish mealtime and ferrets never like this in the least. Try to stay away from every fish centered food anytime purchasing any ferret cuisine pellets and as a make a difference of matter, ferrets like shaped food quite as good as pellets that look a little like rabbit foods. <br <code>/><br/><br /</code>><br/>An excellent quality snake food that could be extremely high in protein is often fed and also to a ferret but they really demand a high amount of protein and typically you ought to look just for food comprising at lowest 25-30% healthy proteins content. Always be sure to stay from the foods which might be easily attainable at a grocery retail store or food outlet as they quite simply are generally very cheaply made and do not provide the correct nutrition in a ferret. <br <code>/><br/><br /</code>><br/>What Do Ferrets Eat as Pleasures? <br <code>/><br/><br /</code>><br/>Ferrets thrive on a goody based method when assisting them matters but there are a few things to know before serving your dig up any goodies. Acceptable treats would be things just like fruits and vegetables but manufactured! What complete ferrets eat that are bad for them? Always stay away from chocolate, dog food, any type of raw steak and dairy. . <br><br><a href=<code>"http://blog.dressever.com"</code>> stroe blog <<code>/a><br><br><a href="http:/blog.bootsvillage.com"> stroe  </</code>a><br><br><a href=<code>"http://blog.superbootsonline.com"</code>> About freshmoncler.com blog </a> </div> </div> </div> </div> <div class="category"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/ebel-watches">Ebel watches</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div id="category27"> <div class="subcategory"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/ebel-watches/180">180</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div style="clear:both"/> <div id="subcategory53"> <div class="problem"> <h3><a href="/erlang+fsharp/ebel-watches/180/180">180</a></h3> <div class="solutions" id="problem369"> <br><strong><a href=<code>"http://www.watchcoltd.com/ "</code>>Hugo Boss Watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/ "</code>>Hush Puppies Watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/ "</code>>IWC Watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/ "</code>>Jaeger-LeCoultre Watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/a-lange-sohne-watches-c-567.html "</code>>A. Lange & Sohne watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/casio-watches-c-649.html "</code>>cheap Casio Watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/breguet-watches-c-606.html "</code>>Breguet<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/hermes-watches-c-751.html "</code>>Hermes<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/casio-watches-c-649.html "</code>>Replica Casio Watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.watchcoltd.com/rolex-watches-c-923.html "</code>>replica Rolex Watches<<code>/a></</code>strong>. <br><br><a href=<code>"http://blog.linkpandora.com"</code>> watches blog <<code>/a><br><br><a href="http:/blog.biguggbootsoutlet.com"> watches  </</code>a><br><br><a href=<code>"http://blog.kindsofboots.com"</code>> About watchcoltd.com blog </a> </div> </div> </div> </div> <div class="category"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/rolex-online">rolex online</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div id="category28"> <div class="subcategory"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/rolex-online/180">180</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div style="clear:both"/> <div id="subcategory54"> <div class="problem"> <h3><a href="/erlang+fsharp/rolex-online/180/180">180</a></h3> <div class="solutions" id="problem370"> <br><strong><a href=<code>"http://www.dressreplicawatches.com/a-lange-sohne-watches-c-567.html"</code>>A. Lange & Sohne watches<<code>/a></</code>strong><strong><a href=<code>"http://www.dressreplicawatches.com/a-lange-sohne-watches-c-567.html"</code>>Replica A. Lange & Sohne watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.dressreplicawatches.com/a-lange-sohne-watches-c-567.html"</code>>fake A. Lange & Sohne watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.dressreplicawatches.com/a-lange-sohne-watches-c-567.html"</code>>copy A. Lange & Sohne watches<<code>/a></</code>strong><br><strong><a href=<code>"http://www.dressreplicawatches.com/a-lange-sohne-watches-c-567.html"</code>>cheap A. Lange & Sohne watches<<code>/a></</code>strong><br><br><br><a href=<code>"http://blog.iamjewelers.com"</code>> online blog <<code>/a><br><br><a href="http:/blog.swarovskiuk.org"> online  </</code>a><br><br><a href=<code>"http://blog.allpandoracharms.com"</code>> About dressreplicawatches.com blog </a> </div> </div> </div> </div> <div class="category"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/watches">watches</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div id="category29"> <div class="subcategory"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="/erlang+fsharp/watches/180">180</a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> <div style="clear:both"/> <div id="subcategory136"> <div class="problem"> <h3><a href="/erlang+fsharp/watches/180/180">180</a></h3> <div class="solutions" id="problem497"> <strong><a href=<code>"http://www.watchload.com/"</code>>watches<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/"</code>>women watches<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/"</code>>watches<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/"</code>>watches on sale<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/"</code>>cheap watches<<code>/a></</code>strong> <br><br/><br><br/><strong><a href=<code>"http://www.watchload.com/"</code>>replica watches<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/"</code>>fake watches<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/a.lange-&-sohne-watches-c-268.html"</code>>A.Lange & Sohne Watches<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/a.lange-&-sohne-watches-c-268.html"</code>>Replica A.Lange & Sohne Watches<<code>/a></</code>strong> <br><br/><strong><a href=<code>"http://www.watchload.com/a.lange-&-sohne-watches-c-268.html"</code>>A.Lange & Sohne Datograph<<code>/a></</code>strong> <br><br/><code>[b]</code><code>[url=http://www.watchload.com/]</code>watches<code>[/url]</code><code>[/b]</code> <br/><code>[b]</code><code>[url=http://www.watchload.com/]</code>women watc </div> </div> </div> </div> <div id="footer"> <div class="box"> <b class="rtop"> <b class="r1"></b> <b class="r2"></b> <b class="r3"></b> <b class="r4"></b> </b> <div class="content"> <a href="http://langref.org/submit">submit problem</a> | <a href="mailto:rob@langref.org">contact</a> | sponsored by <a href="http://refactor.com.au/"><img alt="Refactor-small" border="0" src="/images/refactor-small.png?1233409755" style="vertical-align:middle; padding-bottom:5px" /></a> </div> <b class="rbottom"> <b class="r4"></b> <b class="r3"></b> <b class="r2"></b> <b class="r1"></b> </b> </div> </div> </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-4264032-1"; _udn = "langref.org"; urchinTracker(); </script> </body> </html>