Middle three digits: Difference between revisions

(→‎{{header|Python}}: Name changes)
(→‎{{header|D}}: added D)
Line 7:
1, 2, -1, -10, 2002, -2002, 0</pre>
Show your output on this page.
 
=={{header|D}}==
{{trans|Python}}
<lang d>import std.stdio, std.traits, std.math, std.conv;
 
string middleThreeDigits(T)(T n) if (isIntegral!T) {
auto s = n.abs().text();
auto len = s.length;
if (len < 3 || len % 2 == 0)
throw new Exception("Need odd and >= 3 digits");
auto mid = len / 2;
return s[mid - 1 .. mid + 2];
}
 
void main() {
auto passing = [123, 12345, 1234567, 987654321, 10001, -10001,
-123, -100, 100, -12345];
auto failing = [1, 2, -1, -10, 2002, -2002, 0];
foreach (n; passing ~ failing) {
string answer;
try {
answer = middleThreeDigits(n);
} catch (Exception e) {
answer = e.msg;
}
writefln("middleThreeDigits(%s) returned: %s", n, answer);
}
}</lang>
<pre>middleThreeDigits(123) returned: 123
middleThreeDigits(12345) returned: 234
middleThreeDigits(1234567) returned: 345
middleThreeDigits(987654321) returned: 654
middleThreeDigits(10001) returned: 000
middleThreeDigits(-10001) returned: 000
middleThreeDigits(-123) returned: 123
middleThreeDigits(-100) returned: 100
middleThreeDigits(100) returned: 100
middleThreeDigits(-12345) returned: 234
middleThreeDigits(1) returned: Need odd and >= 3 digits
middleThreeDigits(2) returned: Need odd and >= 3 digits
middleThreeDigits(-1) returned: Need odd and >= 3 digits
middleThreeDigits(-10) returned: Need odd and >= 3 digits
middleThreeDigits(2002) returned: Need odd and >= 3 digits
middleThreeDigits(-2002) returned: Need odd and >= 3 digits
middleThreeDigits(0) returned: Need odd and >= 3 digits</pre>
 
 
=={{header|Python}}==
Anonymous user