Middle three digits: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|Vedit macro language}}: Add bash) |
||
Line 804: | Line 804: | ||
No middle three |
No middle three |
||
</pre> |
</pre> |
||
=={{header|UNIX Shell}}== |
|||
{{works with|Bourne Again Shell}} |
|||
<lang bash>function middle3digits |
|||
{ |
|||
local -i n="${1#-}" |
|||
local -i l=${#n} |
|||
if (( l < 3 )); then |
|||
echo "$0: $1 has less than 3 digits" 1>&2 |
|||
return 1 |
|||
elif (( l % 2 == 0 )); then |
|||
echo "$0: $1 has an even number of digits" 1>&2 |
|||
return 1 |
|||
else |
|||
echo ${n:$((l/2-1)):3} |
|||
return 0 |
|||
fi |
|||
} |
|||
# test |
|||
testdata=(123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345 1 2 -1 |
|||
-10 2002 -2002 0) |
|||
for n in ${testdata[@]}; do |
|||
printf "%10d: " $n |
|||
middle3digits "$n" |
|||
done</lang> |
|||
Output: <pre> 123: 123 |
|||
12345: 234 |
|||
1234567: 345 |
|||
987654321: 654 |
|||
10001: 000 |
|||
-10001: 000 |
|||
-123: 123 |
|||
-100: 100 |
|||
100: 100 |
|||
-12345: 234 |
|||
1: ./mid3: 1 has less than 3 digits |
|||
2: ./mid3: 2 has less than 3 digits |
|||
-1: ./mid3: -1 has less than 3 digits |
|||
-10: ./mid3: -10 has less than 3 digits |
|||
2002: ./mid3: 2002 has an even number of digits |
|||
-2002: ./mid3: -2002 has an even number of digits |
|||
0: ./mid3: 0 has less than 3 digits</pre> |
|||
=={{header|Vedit macro language}}== |
=={{header|Vedit macro language}}== |