In this HackerRank Ruby – Strings – Indexing problem solution In this challenge, your task is to code a serial_average method which is described below:
It takes a fixed-width string in the format: SSS-XX.XX-YY.YY. SSS is a three-digit serial number, XX.XX and YY.YY are two-digit numbers including up to two decimal digits.
It returns a string containing the answer in format SSS-ZZ.ZZ where SSS is the serial number of that input string, and ZZ.ZZ is the average of XX.XX and YY.YY.
All numbers are rounded off to two decimal places.
For example:
> serial_average(‘002-10.00-20.00’)
“002-15.00”
You can use string interpolation to insert Ruby code within a string.
For example:
> tmp = 123
> “Hello #{tmp}”
Hello 123
Problem solution.
# Your code here def serial_average(n) serial = n[0,3] first_num = n[4,5].to_f.round(2) sec_num = n[10,5].to_f.round(2) average = ((first_num + sec_num) / 2).round(2) return "#{serial}-#{average}" end
Second solution.
# Your code here def serial_average(s) serial = s[0, 3] x = s[4, 5].to_f y = s[10, 5].to_f z = (x + y) / 2 "#{serial}-#{'%.2f' % z}" end
Third solution.
def serial_average(s) sss = s[0..2] x_s = s[4..8].to_f y_s = s[10..14].to_f avg = ((x_s + y_s) / 2).round(2) return "#{sss}-#{avg}" end