Jump to content

Middle three digits: Difference between revisions

(→‎{{header|Rust}}: Add Ruby header.)
(→‎{{header|Ruby}}: Add code.)
Line 548:
 
=={{header|Ruby}}==
<lang>def middle_three_digits(n)
# minus sign doesn't factor into digit count,
# and calling #abs acts as a duck-type assertion
n = n.abs
 
# convert to string and find length
l = (s = n.to_s).length
 
# check validity
raise "Number must have at least three digits" if l < 3
raise "Number must have an odd number of digits" if l % 2 == 0
 
return s[l/2-1,3].to_i
end
 
[ 123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345,
1, 2, -1, -10, 2002, -2002, 0 ].each do |n|
print "#{n}: "
begin
puts "%03d" % middle_three_digits(n)
rescue RuntimeError => e
puts e.to_s
end
end</lang>
123: 123
12345: 234
1234567: 345
987654321: 654
10001: 000
-10001: 000
-123: 123
-100: 100
100: 100
-12345: 234
1: Number must have at least three digits
2: Number must have at least three digits
-1: Number must have at least three digits
-10: Number must have at least three digits
2002: Number must have an odd number of digits
-2002: Number must have an odd number of digits
0: Number must have at least three digits</pre>
Output:
<pre>
 
=={{header|Rust}}==
<lang rust>fn middle_three_digits(x: int) -> Result<~str, ~str> {
1,481

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.