View Category

Find the distance between two points

groovy
distance = distance(x1, y1, x2, y2)
distance = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
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]).

Zero pad a number

Given the number 42, pad it to 8 characters like 00000042
groovy
formatted = new DecimalFormat('00000000').format(42)
formatted = 42.toString().padLeft(8, '0')
// to stdout
printf "%08d\n", 42
// to a string
formatted = sprintf("%08d", 42)
formatted = String.format("%08d", 42)
erlang
Formatted = io_lib:format("~8..0B", [42]),
io:format("~8..0B~n", [42]).

Right Space pad a number

Given the number 1024 right pad it to 6 characters "1024  "
groovy
println 1024.toString().padRight(6)
formatted = sprintf("%-6d", 1024)
erlang
Formatted = io_lib:format("~-6B", [1024]),
io:format("~-6B~n", [1024]).

Format a decimal number

Format the number 7/8 as a decimal with 2 places: 0.88
groovy
def result = 7/8
println result.round(new MathContext(2))
def result = 7/8
printf "%.2g", result
new Double(7/8).round(2)
erlang
Formatted = io_lib:format("~.2f", [7/8]),
io:format("~.2f~n", [7/8]).

Left Space pad a number

Given the number 73 left pad it to 10 characters "        73"
groovy
println 73.toString().padLeft(10)
printf "%10d\n", 73
erlang
Formatted = io_lib:format("~10B", [73]),
io:format("~10B~n", [73]).

Generate a random integer in a given range

Produce a random integer between 100 and 200 inclusive
groovy
random = new Random()
randomInt = random.nextInt(200-100+1)+100
erlang
RandomInt = gen_rand_integer(100, 200),

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.
groovy
random = new Random(12345)
orig = (1..5).collect { random.nextInt(200-100+1)+100 }
random = new Random(12345)
repeat = (1..5).collect { random.nextInt(200-100+1)+100 }
assert orig == repeat
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))]).