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) |
||
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() { |
||
immutable passing = [123, 12345, 1234567, 987654321, 10001, -10001, |
|||
-123, -100, 100, -12345]; |
-123, -100, 100, -12345]; |
||
immutable failing = [1, 2, -1, -10, 2002, -2002, 0]; |
|||
foreach (n; passing ~ failing) |
foreach (n; passing ~ failing) |
||
⚫ | |||
string answer; |
|||
try { |
|||
answer = middleThreeDigits(n); |
|||
} catch (Exception e) { |
|||
answer = e.msg; |
|||
} |
|||
⚫ | |||
} |
|||
}</lang> |
}</lang> |
||
<pre>middleThreeDigits(123) |
<pre>middleThreeDigits(123): 123 |
||
middleThreeDigits(12345) |
middleThreeDigits(12345): 234 |
||
middleThreeDigits(1234567) |
middleThreeDigits(1234567): 345 |
||
middleThreeDigits(987654321) |
middleThreeDigits(987654321): 654 |
||
middleThreeDigits(10001) |
middleThreeDigits(10001): 000 |
||
middleThreeDigits(-10001) |
middleThreeDigits(-10001): 000 |
||
middleThreeDigits(-123) |
middleThreeDigits(-123): 123 |
||
middleThreeDigits(-100) |
middleThreeDigits(-100): 100 |
||
middleThreeDigits(100) |
middleThreeDigits(100): 100 |
||
middleThreeDigits(-12345) |
middleThreeDigits(-12345): 234 |
||
middleThreeDigits(1) |
middleThreeDigits(1): Need odd and >= 3 digits |
||
middleThreeDigits(2) |
middleThreeDigits(2): Need odd and >= 3 digits |
||
middleThreeDigits(-1) |
middleThreeDigits(-1): Need odd and >= 3 digits |
||
middleThreeDigits(-10) |
middleThreeDigits(-10): Need odd and >= 3 digits |
||
middleThreeDigits(2002) |
middleThreeDigits(2002): Need odd and >= 3 digits |
||
middleThreeDigits(-2002) |
middleThreeDigits(-2002): Need odd and >= 3 digits |
||
middleThreeDigits(0) |
middleThreeDigits(0): Need odd and >= 3 digits</pre> |
||
=={{header|OCaml}}== |
=={{header|OCaml}}== |