I would like to suggest another solution:
def dashes(num)
str = num.to_s
dashed_arr = str.chars.map.with_index do |digit, index|
next digit if digit.to_i.even?
if index.zero?
"#{digit} -"
elsif index == str.length - 1
"- #{digit}"
else
"- #{digit} -"
end
end
dashed_arr.join(' ').gsub('- -', '-')
end
puts dashes(95601137)
puts dashes(909)
:
str = num.to_s - , .. "95601137"str.chars - . , : ["9", "5", "6", "0", "1", "1", "3", "7"], .map , do ... end.
, :
[1, 2, 3].map do |num|
num * 2
end
, .map.with_index ( ):
[1, 2, 3].map.with_index do |num, index|
num * index
end
, , digit 0- index.
next digit if digit.to_i.even?. , . .to_i digit integer, . next digit .
, , : , , , , :
if index.zero?
"#{digit} -"
elsif index == str.length - 1
"- #{digit}"
else
"- #{digit} -"
end
dashed_arr, . : ["9 -", "- 5 -", "6", "0", "- 1 -", "- 1 -", "- 3 -", "- 7"]. , , .
dashed_arr.join(' '). . : 9 - - 5 - 6 0 - 1 - - 1 - - 3 - - 7. , , .
gsub: dashed_arr.join(' ').gsub('- -', '-'). gsub , , : 9 - 5 - 6 0 - 1 - 1 - 3 - 7.
! , , .