Function to print a diamond shape
Jay Norwood
jayn at prismnet.com
Sun Mar 23 18:45:28 PDT 2014
These were the times on ubuntu 64 bit dmd. I added diamondShape,
which is slightly modified to be consistent with the others ..
just removing the second parameter and doing the writeln calls
within the function, as the others have been done. This is still
with dmd. I've downloaded ldc.
Also, I posted the test code on dpaste.com/hold/1753517
brad: time: 20837[ms]
printDiamond1: time: 482[ms]
printDiamond2: time: 944[ms]
printDiamond3: time: 490[ms]
jay1: time: 62[ms]
sergei: time: 4154[ms]
jay2: time: 30[ms]
diamondShape: time: 3384[ms]
void diamondShape(in int N)
{
import std.range : chain, iota, repeat;
import std.algorithm : map;
import std.conv : text;
import std.string : center, format;
import std.exception : enforce;
dchar fillChar = '*';
enforce(N % 2, format("Size must be an odd number. (%s)", N));
foreach(ln;
chain(iota(1, N, 2),
iota(N, 0, -2))
.map!(i => fillChar.repeat(i))
.map!(s => s.text)
.map!(s => s.center(N))) writeln(ln);
}
More information about the Digitalmars-d-learn
mailing list