Middle three digits: Difference between revisions

→‎{{header|D}}: don't need an exception actually
(→‎{{header|Perl 6}}: restore test accidentally deleted)
(→‎{{header|D}}: don't need an exception actually)
Line 8:
 
=={{header|D}}==
 
{{trans|Python}}
<lang d>import std.stdio, std.traits, std.math, std.conv;
 
string middleThreeDigits(T)(in T n) if (isIntegral!T) {
auto s = n.abs().text();
auto len = s.length;
if (len < 3 || len % 2 == 0)
throwreturn new Exception("Need odd and >= 3 digits");
auto mid = len / 2;
return s[mid - 1 .. mid + 2];
Line 21:
 
void main() {
autoimmutable passing = [123, 12345, 1234567, 987654321, 10001, -10001,
-123, -100, 100, -12345];
autoimmutable failing = [1, 2, -1, -10, 2002, -2002, 0];
foreach (n; passing ~ failing) {
writefln("middleThreeDigits(%s) returned: %s", n, answermiddleThreeDigits(n));
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|OCaml}}==
Anonymous user