21 lines
752 B
D
21 lines
752 B
D
import std.stdio, std.traits, std.conv;
|
|
|
|
string middleThreeDigits(T)(in T n) pure nothrow if (isIntegral!T) {
|
|
auto s = n < 0 ? n.text[1 .. $] : n.text;
|
|
auto len = s.length;
|
|
if (len < 3 || len % 2 == 0)
|
|
return "Need odd and >= 3 digits";
|
|
auto mid = len / 2;
|
|
return s[mid - 1 .. mid + 2];
|
|
}
|
|
|
|
void main() {
|
|
immutable passing = [123, 12345, 1234567, 987654321, 10001, -10001,
|
|
-123, -100, 100, -12345, long.min, long.max];
|
|
foreach (immutable n; passing)
|
|
writefln("middleThreeDigits(%s): %s", n, middleThreeDigits(n));
|
|
|
|
immutable failing = [1, 2, -1, -10, 2002, -2002, 0,int.min,int.max];
|
|
foreach (immutable n; failing)
|
|
writefln("middleThreeDigits(%s): %s", n, middleThreeDigits(n));
|
|
}
|