2007-10 << 2007-11 >> 2007-12

2007-11-16 (金)

*サークル

鍋.鮭とか鯛とか.goto君のために鯛のお頭を入れてあげたのだけど,あまり喜んでなかった.

*0,-1,-1,-1,0,1,1,1

少し前のサークル中にSafiiが考えていた問題.分岐や除算を使わずに,上記数列を作るということらしい.テーブル作れば良いじゃん…というのは駄目らしい.

そのときに書いたコードがこれ.そろそろHDDから消したくなった(というか消してしまって書き直した)ので,ここに載せておきます.

#include <iostream>
using namespace std;

int main() {
    int i,j;
    for (i=0;i<8;i++) {
        j = ((i|i>>1)&1) * ((i>>1&2)-1);
        cout << j << endl;
    }
    return 0;
}

乗算は使ってしまったけど,あまり複雑にしても仕方なさそうなので,こんな感じでしょう.

Safiiとsangoは少し悩んでいたみたいですが,この数列が(0,1,1,1,0,1,1,1)と(-1,-1,-1,-1,1,1,1,1)の積であると認識できれば,あとは対応付けたい 0~7 の各ビットを見ながら適当に調節すれば,上記の式はすぐに出てくると思います.