RosettaCodeData/Task/Generate-Chess960-starting-position/D/generate-chess960-starting-position-3.d
2015-02-20 09:02:09 -05:00

13 lines
438 B
D

void main() {
import std.stdio, std.random, std.array, std.range;
// Subsequent order unchanged by insertions.
auto start = "RKR".dup;
foreach (immutable piece; "QNN")
start.insertInPlace(uniform(0, start.length), piece);
immutable bishpos = uniform(0, start.length);
start.insertInPlace(bishpos, 'B');
start.insertInPlace(iota(bishpos % 2, start.length, 2)[uniform(0,$)], 'B');
start.writeln;
}