View Problem

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.
ExpandDiskEdit
php
$x = 1;
while($x < 150) {
echo "$x,";
$x *= 2;
}
ExpandDiskEdit
php
$x = 0;
$c = pow(2, $x);
while($c < 150) {
echo "$c,";
$c = pow(2, $x++);
}
ExpandDiskEdit
erlang
X = 1, print_while_X_less_150(X).
ExpandDiskEdit
erlang
Pred = fun (X) -> X < 150 end,
Action = fun (X) -> io:format("~B,", [X]), X * 2 end,
X = 1,

while_do(Pred, Action, X).
DiskEdit
csharp
int x = 1;

while (x < 150)
{
x *= 2;
Console.Write("{0},", x);
}
DiskEdit
clojure
(take-while #(< % 150) (iterate #(* 2 %) 1))

Submit a new solution for php, erlang, csharp, or clojure
There are 14 other solutions in additional languages (cpp, fantom, fsharp, groovy ...)