Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
For each layer 1..(n-1)/2, the four corners of an Ulam spiral are
spaced 2*layer apart. Step k four times per layer, accumulate:
let euler28 n =
let s = ref 1 in
let k = ref 1 in
for layer = 1 to (n - 1) / 2 do
let step = 2 * layer in
for _ = 1 to 4 do
k := !k + step;
s := !s + !k
done
done;
!s
euler28 7 = 1 + (3+5+7+9) + (13+17+21+25) + (31+37+43+49) = 261
Real PE28 uses 1001x1001 (answer 669171001); 7x7 is fast.
117 baseline programs total.
16 lines
216 B
OCaml
16 lines
216 B
OCaml
let euler28 n =
|
|
let s = ref 1 in
|
|
let k = ref 1 in
|
|
for layer = 1 to (n - 1) / 2 do
|
|
let step = 2 * layer in
|
|
for _ = 1 to 4 do
|
|
k := !k + step;
|
|
s := !s + !k
|
|
done
|
|
done;
|
|
!s
|
|
|
|
;;
|
|
|
|
euler28 7
|