2014-07-01から1ヶ月間の記事一覧

「脱アルゴリズム宣言」読書ノート

この話で出てくる「アルゴリズム」「脱アルゴリズム」という単語について ここでいうアルゴリズムとは命令型言語的なアルゴリズムを指している なので必要に応じて「アルゴリズム」という単語を「(命令型言語的)アルゴリズム」と脳内正規表現マッシーンっで…

c++11constexprでコンパイル時バイトニックソートを大雑把に実装した

C++

ネタではなく非常に強力であり実用的なソートである //コード bitonic_sort.hpp //実行結果 [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッちなみに一部コードは C++11 constexprでマージソート - ここは匣 から借りてきた バイトニックソートとはマージソートの亜種であり…

c=pow(2,k)のとき、n xor cはn + c*((n/c) mod 2 ? -1:1)と等しいらしい

解説 c == pow(2,k) == (1<<k)n + c*((n/c) mod 2 ? -1:1) → n + c*((n/(1<<k)) mod 2 ? -1:1) → n + c*((n>>k)mod 2?-1:1) → n + c*([nのk番bitが立っているか]?-1:1) → [nのk番が立っているか] ? n-c :n+c → [nのk番が立っているか]? [nのk番を折る] :[nのk番を立てる] → n^c</k)n>

constexprで無限リスト作った

C++

こんな感じ struct Func { constexpr int operator()(int i)const { return i+1; } }; make_recurrence_list(0,Func{});//0,1,2,3,4... 無限だから長さを求めようとすると無限ループ起こしてコンパイラが死ぬ 単方向リストだから巻き戻しもできない かいてて…