ゴール
負でない整数が与えられた場合、その整数のバイナリ値で最大数の連続した1の開始位置を返す関数を作成します。
入力が与えられたら0
、を返し0
ます。
番号に同じ長さの複数のストリークがある場合、最後のストリークの位置を返す必要があります。
入力
整数より大きいか等しい 0。
出力
以下で説明するように計算された整数。
ルール
- これはコードゴルフなので、各言語のバイト単位の最短コードが優先されます。
- 標準的な抜け穴は禁止されています。
例とテストケース
例1
- 関数には整数142が渡されます
- 142はバイナリで10001110に等しい
- 最長のストリークは「111」(3つのストリーク)です
- ストリークは2 ^ 1の位置から始まります
- 関数は結果として1を返します
例2
- 関数には整数48が渡されます
- 48はバイナリで110000に等しい
- 最長のストリークは「11」(2つのストリーク)です
- ストリークは2 ^ 4の位置から始まります
- 関数は結果として4を返します
例3
- 関数には整数750が渡されます
- 750はバイナリで1011101110に等しい
- 最長のストリークは「111」(3つのストリーク)です
- 長さが等しい2つのストリークがあるので、後のストリークを返します。
- 後のストリークは2 ^ 5の位置から始まります
- 関数は結果として5を返します
0
。それは重要なテストケースです。