Clojure(というかLisp)での「評価」について

Posted by YpsilonTAKAI On 2013年12月19日木曜日 0 コメント
最近、Clojureのとっかかりの部分についての説明が書かれたものをWeb上でよく見かけるようになりましたが、Lispを語る上で欠かせない「評価」という事柄についての記述が無いものがほとんどのようです。

Lispの力の源はevalであって、evalとは「評価」そのものであるので、Lispを知る(=使う)には、「評価」を理解することは必須だと思うのです。

あまりえらそうな事を言えるほどのスキルがあるわけではありませんが、ちまちま書いていたものが形になったので、公開します。

READ MORE

clojure contrib library advent calender 投稿記事

Posted by YpsilonTAKAI On 0 コメント
clojure contrib library advent calender に記事を投稿しました。

numeric-tower と memoize です。

numeric-tower は、PEをやっているときに、何度か使っていたのだけれど、中身を見ていなかったので、今回題材にして中身を見てみた。 記事では中身のことは話題にしませんでしたけど、やっぱり参考になりますね。 普段、面倒くさがりなので、あまり他人のコードを読むことは無いのですが、いけないなーと思います。

もう一つはmemoizeです。
こちらは、このブログでも何回か取りあげた、clojureのコアに入っているmemoizeの強化版です。 作者は Joy of Clojureの著者のFogusさんです。 コアのmemoizeに苦戦しているころ、メーリングリストに新しいmemoizeの話題が出ていて作られたものです。
こっちのソースも今回初めて見てみたのですが、僕の理解の範囲を超えていて、まいったなーっていう感じです。

今回の担当分はこれで終りです。なんとか間に合いました。


READ MORE

2013 clojure系 Advent Calender

Posted by YpsilonTAKAI On 2013年12月6日金曜日 0 コメント
最近、あまり趣味プログラミンングをしていなくて、めっきり投稿していなかったわけですが、年末になったので、Advent Calenderイベントに参加してみています。

今年、参加しているのは、2つ。

  clojure contribライブラリを説明しまくってやろうというものです。athosさん主宰です。




もうひとつはclojure一般ものです。 って、あれ? こっちも担当今日じゃん!
やばいやばい。 書いてあったからいいようなものの、冷や汗ものだった。

こちらは、以前から作ろうと思っていた、zlogデータ操作ツール関連ですが、マクロの話題を取り上げました。



READ MORE

DDSKK で DvorakJP

Posted by YpsilonTAKAI On 2013年6月21日金曜日 0 コメント
DDSKKでDvorakJPを使えるようにしてみましたという話です。

ファイル

必要なファイルは以下に置いてあります。

https://gist.github.com/ypsilon-takai/5825262

使うには、EmacsとDDSKKをインストールする必要があります。インストールしてあれば、Emacsのsite-lispディレクトリにskkというディレクトリがあって各種.elファイルが入っているはずです。

  1. skk-dovjp.elファイルを置きます。
  2. skk.elとskk-vars.elをdiffに併せて修正して再コンパイルします。
  3. $HOME/.skkファイル(無ければ作る)に (setq skk-use-dvojp t) という記述
  4. を追加します。
  5. Emacsを再起動すればOK。


READ MORE

Project Euler 100番まで解いたよ。

Posted by YpsilonTAKAI On 2013年6月11日火曜日 0 コメント
100個解くのを目標にしていたので、ひとまず目標は達成です。
これにあまり時間を取るのもなんなので、Project Eulerはしばらくお休みにします。

もうちょっと実用的ななにかをしないとということで、作りかけていたツールでも作ろうかと思っております。Herokuでwebアプリです。

あとは、core.logicもちょっとやってみたいと思っとります。



READ MORE

Euler: Problem 100

Posted by YpsilonTAKAI On 0 コメント
100番です。
袋から連続で2個のボールを取り出したときに、同じ色のボールが出る確率をちょうど2分の1にするには、何個のポールを入れたらいいでしょうか。という問題です。

初めに思いついた方法は時間がかかりすぎてだめでした。
式を立てていろいろいじっていたら解けました。

READ MORE

Euler: Problem 99

Posted by YpsilonTAKAI On 2013年6月9日日曜日 0 コメント
99番目の問題です。
ここに来て、問題ごとの難易度の差が激しいですね。

この問題はとても簡単。
思いつきでだーーっと書いたコードなので、あまりきれいではないのですが、直すまでも無いので、このままにしときます。

今回も内容についてのコメントは無し。




READ MORE

Euler: Problem 98

Posted by YpsilonTAKAI On 2013年6月7日金曜日 0 コメント
99番です。

アナグラムにあてはまる平方数についての問題です。
回答者数を見ると難しそうな問題だったのと、数独を解いた余波と、100達成に向けた勢いで、解説付きにチャレンジしました。

ほぼ、解いた手筋をなぞってます。

gistにソースつきで載せました。

解法としては、10分もかかってしまったので今一つですが、難しい問題ということで、よしとしときます。

READ MORE

Euler: Problem 97

Posted by YpsilonTAKAI On 2013年6月6日木曜日 0 コメント

大きな数の下10ケタを求める問題です。

2万人以上の人が解いている問題なので簡単です。

READ MORE

Euler: Problem 96

Posted by YpsilonTAKAI On 2013年6月3日月曜日 0 コメント
数独を解く問題です。

95を2月に解いて、それから取り組んでいたのですが、昼休みとか暇なときにしかやってないとは言え、なかなかタフで時間がかかりました。

結果的には、ネットからのデータの取得も含めて3.4秒ほどで解けたので上々でしょう。

READ MORE

Euler: Porblem 95

Posted by YpsilonTAKAI On 0 コメント
95番です。友愛数の列をみつける問題です。

 2月に解いていたのに、なぜかここにエントリを作っていませんでした。 そんなわけで、どんな風に解いたのかうろ覚えなので、コードを読んで解説してみます。


READ MORE

Euler: Problem 94

Posted by YpsilonTAKAI On 2013年2月12日火曜日 0 コメント
辺の長さと面積が整数になる、「ほぼ正三角形」を見つける問題です。

始めに総当たりで解くやつを作ったら、10時間かかりました。さすがにこれはだめなので、恒例の逆から考えるパターンです。

READ MORE

Euler: Problem 93

Posted by YpsilonTAKAI On 2013年2月8日金曜日 0 コメント


4つの数字を加減乗除して作れる数を求める問題です。

しばらく考えてはみたのですが、総当たり以外にやりかたはなさそうなので、それで実装してます。
2分くらいかかってしまっていますが、まあ、よしとします。

READ MORE

Euler: Problem 92

Posted by YpsilonTAKAI On 2013年2月5日火曜日 0 コメント
数の各桁の数を二乗した和を並べた数が89でループする場合を数える問題です。

操作からすると、345と435と543などの同じ構成の数は同じ結果になるので、それをうまく使えばメモ化で速くなりそうなので、やってみた。

数を数列にしてソートする。0はなくても同じなので除外する。そうしてできた数列で判定する関数を作ってメモ化する。

解けたんだけど、遅い。

ふと、元の数をつくるのにどれくらいかかるか計算してみたら、それだけで2分近くかかってる。こりゃだめだ。 どうしよう。


READ MORE

Euler: Problem 91

Posted by YpsilonTAKAI On 2013年2月1日金曜日 0 コメント

格子点を使って直角三角形を作る問題です。

まずは、格子から2点を取って、原点合せた3点でできる三角形が直角を含むかどうかをチェックしてみたのですが、10分という想像以上の時間がかかってしまい、別解を考えました。
このとき、「直交するベクトルの内積は0になる」なんていうのを使ったのですが、かなり懐かしい感じでした。


READ MORE

Euler: Problem 90

Posted by YpsilonTAKAI On 4 コメント
やっとこさ90番まで来ました。
ダイスの目を使って、2桁までの2乗数を作る問題です。

結果的には総当たりで解いたのですが、うまい方法ほないかなーっとつらつら考えていたりして、そこそこ時間はかかりました。
一番考えたのは、あるダイスがあったときに、題意を満たすもう一方のダイスの目を特定できないかということなのですが、条件を絞ることができずにあきらめました。


READ MORE

Euler : Problem 89

Posted by YpsilonTAKAI On 2013年1月10日木曜日 0 コメント


ローマ数字の正規化?の問題です。

質問は、正規化したときにどれだけ文字数が減るかというものです。
解くにはいろいろ方法がありそうですが、問題の最後の一文に書かれている内容から置換対象が数個に限定されるので、それを数えることで直接減らせる文字数を数えています。

以下コードです。
簡単なので、解説無しです。

READ MORE

Euler : Problem 88

Posted by YpsilonTAKAI On 2013年1月9日水曜日 0 コメント


久し振りに進めました。

和と積が同じになる数列について、その個数ごとの最小のものをみつける問題。
仕事がいそがしかったせいもありますが、時間がかかりました。

苦労したので長ーい解説です。

READ MORE