challenge 逆転したビット列

32以下の正の整数nが与えられた場合に、 0以上、2のn乗未満の整数を「ビット的に逆転したもの」のリストを 作成する関数を書いてください。 なお「ビット的に逆転」とはnotを使った反転ではなく、 「0001」を「1000」にするような処理を指すものとします。

n = 4の時には [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15] が正解です。

問題の理解を促すために上のリストを2進数表記で表示してみます。

0000 0
1000 8
0100 4
1100 12
0010 2
1010 10
0110 6
1110 14
0001 1
1001 9
0101 5
1101 13
0011 3
1011 11
0111 7
1111 15
n = 8などの場合のリストは音声のFFT演算でよく使わているそうです。 この問題は光成さんの投稿を元にしています。 ご協力ありがとうございました。

Posted feedbacks

Number of comments:65 Nested Flatten
  1. 9 Haskell
  2. 4 Scheme Other Python
  3. 3 Perl C# C++ Common Lisp
  4. 2 Java C awk Ruby R OCaml Scala
  5. 1 PHP XSLT なでしこ D VB.net Bash JavaScript Smalltalk J Erlang

Index

Feed

Other

Link

Pathtraq

loading...