Middle three digits: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: restore test accidentally deleted)
(→‎{{header|D}}: don't need an exception actually)
Line 8: Line 8:


=={{header|D}}==
=={{header|D}}==

{{trans|Python}}
<lang d>import std.stdio, std.traits, std.math, std.conv;
<lang d>import std.stdio, std.traits, std.math, std.conv;


string middleThreeDigits(T)(T n) if (isIntegral!T) {
string middleThreeDigits(T)(in T n) if (isIntegral!T) {
auto s = n.abs().text();
auto s = n.abs().text();
auto len = s.length;
auto len = s.length;
if (len < 3 || len % 2 == 0)
if (len < 3 || len % 2 == 0)
throw new Exception("Need odd and >= 3 digits");
return "Need odd and >= 3 digits";
auto mid = len / 2;
auto mid = len / 2;
return s[mid - 1 .. mid + 2];
return s[mid - 1 .. mid + 2];
Line 21: Line 21:


void main() {
void main() {
auto passing = [123, 12345, 1234567, 987654321, 10001, -10001,
immutable passing = [123, 12345, 1234567, 987654321, 10001, -10001,
-123, -100, 100, -12345];
-123, -100, 100, -12345];
auto failing = [1, 2, -1, -10, 2002, -2002, 0];
immutable failing = [1, 2, -1, -10, 2002, -2002, 0];
foreach (n; passing ~ failing) {
foreach (n; passing ~ failing)
writefln("middleThreeDigits(%s): %s", n, middleThreeDigits(n));
string answer;
try {
answer = middleThreeDigits(n);
} catch (Exception e) {
answer = e.msg;
}
writefln("middleThreeDigits(%s) returned: %s", n, answer);
}
}</lang>
}</lang>
<pre>middleThreeDigits(123) returned: 123
<pre>middleThreeDigits(123): 123
middleThreeDigits(12345) returned: 234
middleThreeDigits(12345): 234
middleThreeDigits(1234567) returned: 345
middleThreeDigits(1234567): 345
middleThreeDigits(987654321) returned: 654
middleThreeDigits(987654321): 654
middleThreeDigits(10001) returned: 000
middleThreeDigits(10001): 000
middleThreeDigits(-10001) returned: 000
middleThreeDigits(-10001): 000
middleThreeDigits(-123) returned: 123
middleThreeDigits(-123): 123
middleThreeDigits(-100) returned: 100
middleThreeDigits(-100): 100
middleThreeDigits(100) returned: 100
middleThreeDigits(100): 100
middleThreeDigits(-12345) returned: 234
middleThreeDigits(-12345): 234
middleThreeDigits(1) returned: Need odd and >= 3 digits
middleThreeDigits(1): Need odd and >= 3 digits
middleThreeDigits(2) returned: Need odd and >= 3 digits
middleThreeDigits(2): Need odd and >= 3 digits
middleThreeDigits(-1) returned: Need odd and >= 3 digits
middleThreeDigits(-1): Need odd and >= 3 digits
middleThreeDigits(-10) returned: Need odd and >= 3 digits
middleThreeDigits(-10): Need odd and >= 3 digits
middleThreeDigits(2002) returned: Need odd and >= 3 digits
middleThreeDigits(2002): Need odd and >= 3 digits
middleThreeDigits(-2002) returned: Need odd and >= 3 digits
middleThreeDigits(-2002): Need odd and >= 3 digits
middleThreeDigits(0) returned: Need odd and >= 3 digits</pre>
middleThreeDigits(0): Need odd and >= 3 digits</pre>



=={{header|OCaml}}==
=={{header|OCaml}}==