Middle three digits: Difference between revisions
Content added Content deleted
(→{{header|Picat}}: Split into subsections, added {{out}}) |
|||
Line 4,420: | Line 4,420: | ||
=={{header|Picat}}== |
=={{header|Picat}}== |
||
===Prolog-style=== |
|||
Two get_middle/1 functions: |
|||
{{trans|Prolog}} |
|||
⚫ | |||
* get_middle_f2/1: Using string length and list range |
|||
⚫ | |||
⚫ | |||
===List slice=== |
|||
⚫ | |||
⚫ | |||
===Test=== |
|||
<lang Picat>go => |
<lang Picat>go => |
||
Success = [123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345], |
Success = [123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345], |
||
Line 4,449: | Line 4,456: | ||
if Len mod 2 = 0 then throw $not_odd_length(N) |
if Len mod 2 = 0 then throw $not_odd_length(N) |
||
elseif Len < 3 then throw $number_too_small(N) |
elseif Len < 3 then throw $number_too_small(N) |
||
end. |
end.</lang> |
||
% inspired by the Prolog solution |
|||
⚫ | |||
⚫ | |||
⚫ | |||
{{out}} |
|||
% Using slice |
|||
⚫ | |||
⚫ | |||
Both tests outputs: |
|||
<pre>[n = 123,middle = 123] |
<pre>[n = 123,middle = 123] |
||
[n = 12345,middle = 234] |
[n = 12345,middle = 234] |
||
Line 4,478: | Line 4,476: | ||
[n = -2002,exception = not_odd_length(-2002)] |
[n = -2002,exception = not_odd_length(-2002)] |
||
[n = 0,exception = number_too_small(0)]</pre> |
[n = 0,exception = number_too_small(0)]</pre> |
||
=={{header|PicoLisp}}== |
=={{header|PicoLisp}}== |