2011-06-01から1ヶ月間の記事一覧

言い訳がましいようですが

えー、ある方からコメントをいただきましたので、ここで釈明(?)しておきます。まぁ、プログラミングをかじったことのある人ならだれでも知ってるアルゴリズムを例に、Haskell で書き下したらどうなるかざっとご紹介したわけですが、私は「これが効率のいいア…

Fibonacci 数列は 2 行 !

fibs :: [Integer] fibs = 0 : 1 : [x + y | (x, y) <- zip fibs (tail fibs)] Fibonacci 数列は急速に値が大きくなるので Int より精度の高い Integer 型を使ってます。もうあまりの嬉しさに泣きたくなってきた。

クイックソートも 6 行で

qsort :: Ord a => [a] -> [a] qsort [] = [] qsort (x : xs) = qsort smaller ++ [x] ++ qsort larger where smaller = [a | a <- xs, a <= x] larger = [a | a <- xs, a > x] マジ Haskell 凄いんですけど。ちなみに qsort 関数の最初の宣言は順序クラスに…

エラトステネスの篩がたったの 4 行 !

primes :: [Int] primes = sieve [2..] sieve :: [Int] -> [Int] sieve (p : xs) = p : sieve [x | x <- xs, x `mod` p /= 0] 目から鱗でござった。

演算子を使わずに加法

Twitter でとある方が「+ 演算子を使わずに a と b の和を求める方法を…」といったことをつぶやいていたので、ちょっと作ってみた。 #include <stdio.h> int add(int, int); int main() { printf("%d\n", add(2, 3)); printf("%d\n", add(2, - 3)); return 0; } int a</stdio.h>…