2014-01-01から1年間の記事一覧
XP祭り2014で、Re:VIEWを使った書物の作成について話を聞きました。 Re:VIEWとその周辺とツールを使うことで、markdownでマークアップしたテキストをPDFやePubにできるとのこと。今回、仕事の納品物のドキュメントを作成するにあって、ツールに何を使ってもO…
型システム入門 −プログラミング言語と型の理論−作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男出版社/メーカー: オーム社発売日: 2013/03/26メディア: 単行本(ソフトカバー) クリック: 68回この商…
Rails で remote: true を指定した任意のリンクでPOSTしたい時の話。 必要に迫られて探した結果、こんな感じになりました。 POSTしたとき、data-paramsの値がパラメータとして送られるようです。 そしてdata-paramsは、CoffeeScript を使い .data('params', …
今月は、3年ぶりになるXP祭りに参加してきました。さらに初めてとなるRubyKaigiに参加してきました。外の、「ちょっとした身内の集まり」の規模を超えたイベントに参加したのは、2年ぶりぐらいになります。 このところ、体力低下、気力低下、意識低下、等々…
Haskellでたわむれていると。 id:nobsun さんが実に軽快な解法をコメントに残してくださいました。 colns = concat cns where cns'@(_:cns) = [""] : [[c:ns | c <- ['A'..'Z'], ns <- nss] | nss <- cns' ] Qiita では、さらにエレガントな解を展開されてい…
おさらい。 いかにして表計算の列名をつくるか - エンジニアのソフトウェア的愛情 いかにして表計算の列名をつくるか・補遺 - エンジニアのソフトウェア的愛情 最終形態 先日、Haskellで無限長配列を生成する例を挙げました。再掲。 import Data.List(group)…
先日Rubyで書いたものをRuby以外のメジャーどころの言語でも実装してみます。 桁上がりで1文字戻す Ruby 再掲。 def column_names(n) result = '' begin result = (n % 26 + 65).chr + result n = n / 26 - 1 end while n >= 0 result end C++ #include <string> st</string>…
「列名って、なに?」これです。このA, B, ..., Z, AA, AB, ... という文字列です。仕事でちょっとゴルフネタ的ななにかになったので、記録しておきます。 みんな大好き、直積 列名は最初は1桁の A〜Z の26個、次に2桁の AA〜ZZ の676個、次に3桁の AAA〜ZZZ…
なんか、こじらせた。 これだけではLispになりませんが、もだった材料はそろうみたいなので、できそうな気がします。たぶん。 #include <iostream> // 等値 template<typename T, typename U> struct Eq { static const bool condition = false; }; template<typename T> struct Eq<T, T> { static const bool con</t,></typename></typename></iostream>…
C++でテンプレートを使っていると、ときどき、文字列をテンプレートに渡したくなるときがあります。 ですが残念なことに、文字列をテンプレート引数にすることはできません。 // こういうことをやってみたい! (けど、できない) template<const char* S> struct Str { // </const>…
// リンクの終端 struct Nil {}; // 左畳み込みテンプレート template<template<typename, typename> class Operator, typename N, typename Sequence> struct Foldl { static const int value = Foldl< Operator, Operator<N, typename Sequence::head>, typename Sequence::tail >::value; }; // 左畳み込みテンプレ</n,></template<typename,>…
C++のテンプレートで。 Haskellのばあい 基本に立ち返って、まずはHaskellのばあい。 Haskellは基本的に遅延評価なので、不適切な式が含まれていても評価されないのであれば全体としては正しく評価してくれます。 ここでinfinityを評価してしまうと無限再帰…
はてなダイアリーにポストしているにもかかわらず、完全にマンスリーと化しています。自らの横着が成せる技。 それはそれとして。 目減りする技能 以前に「稼働率を100%にしてはいけない、と思う」というエントリを書きました(検索してみたら、ちょうど4年…
Mac内のファイルがまた乱雑になってきたので整理をしていたのですが。2010年ぐらいの日付のファイルに書かれている内容が、このところのわたしの振舞いから生じている問題について書かれたもののように思えて、「この4年間、なにも進歩しなかったんだろうか…
第20回 先日、「オフラインリアルタイムどう書く」が開催されました。今回で20回目でした。コンスタントに優良なお題と、みんなで集まって解くという場を提供され続けていることに尊敬と感謝の念を抱くばかりです。…。とはいえ、いまだにオフラインリアルタ…
Twitterで、そのアカウントでの最初のtweetを検索するサービスが話題に出ていますが。わたしも検索してみました。プログラミングで稼いでみたい— MATSUMOTO Eiji (@emattsan) 2009, 7月 31 感慨深い。 当時の自分に言ってやりたい。 プログラミングで稼ぐの…
Steinhaus–Johnson–Trotter algorithm - Wikipedia, the free encyclopedia Permutation.h #ifndef PERMUTATION_H #define PERMUTATION_H #include <vector> class Permutation { public: Permutation(int* begin, int* end); bool isIdentity() const; Permutation&</vector>…
public class Shift { public static void main(String[] args) { for(int i = 0; i < Integer.SIZE + 2; ++i) { System.out.printf("%08x%n", 1 << i); } } } 実行。 $ javac Shift.java $ java Shift 00000001 00000002 (中略) 40000000 80000000 000000…
グラフを木分解します。…。木分解。わたしもひと月前まで聞いたこともありませんでした。 木分解とは。おおざっぱに言うと、グラフからルールに従って部分グラフの集合を取り出し、その部分グラフを木構造のノードとする木を作ること。くわしいことはここと…