不格好エンジニア (引っ越しました)

wordpress.comから引っ越しました。

コーディング面接対策サイトCodilityの練習問題を解いてみた(BinaryGap)

問題

Codility

nを二進数にして、1に囲まれた0の数を数える

回答

def solution(n)
  s = n.to_s(2)
  zeroes = s.split('1')
  zeroes.pop if n % 2 == 0
  return 0 if zeroes.empty?
  zeroes.map{ |z| z.length }.max
end


# debug

puts solution(20) == 1
puts solution(6) == 0
puts solution(1041) == 5
puts solution(255) == 0
puts solution(529) == 4
puts solution(66666) == 5
puts solution(1024) == 0
puts solution(9) == 2
puts solution(11) == 1

感想

この書き方、知らなかった。

9.to_s(2) #=> "1001"