2007-01-01から1年間の記事一覧

UIデザインはコミュニケーションデザイン

分からないことがあれば質問したり、曖昧なことがあれば確認したり、何か変化があれば報告したり。ソフトウェアの使いやすさを人の性格に例えた場合、不便なソフトウェアとはこちらの言うことがなかなか伝わらない付き合いにくい人で、便利なソフトウェアと…

π計算(Scheme版)

既に誰かがやっているんだろうが、クロージャによる超軽量並行プロセスの簡単実装法で紹介されたπ計算をSchemeで実装してみた。実際にコードを書いてみることで、並行プロセスを使用したプログラミングスタイルがちょっと掴めた気がする。 (use util.queue) …

分割数・続き

自然数を[分割]して得られた数列を各要素と同じ数だけ点を並べて表現してみよう。例えば、 14 = 6 + 4 + 3 + 1 をこのルールに従って表現すると次のようなパターンができる。 ●●●● ●●● ●●● ●● ● ● このように分割を複数の点で視覚化したパターンのことを[Fer…

[プログラミング]分割数

数論には「分割数」という概念があって、与えられた任意の自然数NをN以下の自然数の和で表現したものを言うんだそうだ。 例えば、4の分割数は下記の5種類となる。 4 = 4 = 3 + 1 = 2 + 2 = 2 + 1 + 1 = 1 + 1 + 1 + 1 ここで自然数nを分割する関数をp(n)とし…

Longest Increasing Subsequence

最近「Longest Increasing Subsequence」という問題を知りました。問題の内容は、 自然数からなるランダムな数列の中から最長の増加部分列(Longest Increasing Subsequence)を探す という単純なものでグラフ問題の一種だそうです(http://en.wikipedia.org…

Fizz-Buzz問題(Scheme版)

巷で「Fizz-Buzz問題」が流行っているみたいなので、私も解いてみました。 ただし、3分以上かかってしまいましたが...。 (define (fizz-buzz) (letrec ((loop (lambda (n result) (if (< n 1) result (cond ((= (remainder n 15) 0) (loop (- n 1) (cons…