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

Haskellの簡約の実装とMemoTrieの秘密?

関数型言語では,グラフ簡約と最外簡約を行うと効率が良くなるらしい. っていうのを http://www.amazon.co.jp/%E9%96%A2%E6%95%B0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-R-%E3%83%90%E3%83%BC%E3%83%89/dp/4764901811 で読んだ…

MemoTrie? (関数の自動メモ化@Haskell)

HaskellにはMemoTireというパッケージがあります. どうやら,関数のメモ化を自動でやってくれるみたい. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/MemoTrie http://hackage.haskell.org/packages/archive/MemoTrie/0.4.5/doc/html/Data…

Java には 何故 演算子オーバーロード がないのか?

なんで? 確かに,演算子オーバーロードは強力,故に危険でもある.でもさ,複素数型を実装したとして, c = c1.add(c2.add(c3));とかするよりも c = c1 + c2 + c3って書けたほうが,ずっと幸せだと思うんだ.つまり,複素数型,有理数型,多倍長型くらいに…

Problem 155 再び(C++)

Haskellが遅かった. 1分以上. そこで,単純な全探索を少し工夫して,しかも,C++で実装したら, 5秒未満になった. #include <iostream> #include <vector> #include <boost/rational.hpp> #include <boost/foreach.hpp> #define FOREACH BOOST_FOREACH using namespace std; typedef boost::rational<int> rat; static co</int></boost/foreach.hpp></boost/rational.hpp></vector></iostream>…

LU分解

LU分解@Haskell 遅延評価って便利.自分で評価の順番を明示的に与えなくても, よきにはからってくれる. import Data.Array type Matrix = Array (Int, Int) Double -- assumption: u!(i,i) /= 0 lu :: Matrix -> (Matrix, Matrix) lu a = (l, u) where b =…

topcoder

TopCoder やってみた. Haskell が使えなくて愕然とした.ってのは冗談.C++, C#, Java, VB が使えるらしい.このなかで一番まともに使えるのは多分,Java.ってことで,Javaでやってみたら,文法完全に忘れてて,笑えた. 簡単なコード書くのにもの凄い時間…

段落の右寄せ,中央揃え(Lyx)

Lyx

layout-paragraph を使うか 追加のツールバーの段落設定ボタン.これを使えば,図の中央表示とかできるわけですよ.

箇条書きのなかの箇条書き(Lyx)

Lyx

M-x depth-increment,M-x depth-decrement とするか(関数実行のショートカットがM-xでない場合もある), のボタンを使えば良い. こんな感じ. だけど調子にのって,深くしすぎると…怒られます.

「たんも」の意味を知る

世の中には単模(たんも)行列なるものが存在する. 参考:完全単模性とその整数性(pdf) まぁ,そのようなものが存在すると,ここまでは良い. なにも問題ない. しかし,気になる. 「たんも」ってなによ?その意味を先日知った.ずばり,単一な(行列式の…

ラングトンのアリ

平面が格子状に構成され、各マスが白または黒で塗られる。ここで、1つのマスを「アリ」とする。アリは各ステップで上下左右のいずれかのマスに移動することができる。アリは以下の規則に従って移動する。 * 黒いマスにアリがいた場合、90°右に方向転換し、そ…

日記

皆既日食帯の軌跡が若干曲っているのは何故? 地球も月も動くから? 頭,混乱してきた.

GMAP

import Data.List -- greedy algorithm next :: Integral a => a ->[a] -> [a] next c ms = bs ++ 1: genericReplicate n 0 where (as, bs) = genericSplitAt c ms n = c - sum as sequences :: Integral a => a -> a -> [[a]] sequences c n | c > n = [] |…

あれ!?

無期限にしたはずなのに… - firestorage よりファイル削除のお知らせ - こちらはfirestorageです。 お預かり期限が過ぎましたので以下のファイルが削除されましたp247.hs アクセスがないと削除してしまうのだろう.無料サービスだし. あーあ.

cabal-install を インストール

何度もcabal-installをインストールしている気がするのでメモ. 追記 id:nobsunさんのコメントから; cabal-installを展開した中に bootstrap があります.これを実行すれば必要なパッケージを インストールしてくれるようです.(試していませんが) 以下 R…

APR素数判定

多分当っている. コード長いです. Miller Rabin はやはり非常にシンプル. それに比べ,APRは… まぁ,実装がヘタなんだよと,言われればそれまでだが. しかし,綺麗なコードがあれば見てみたいが,すくなくとも簡単にはwebでは見つからなかった. 100桁と…

連立合同方程式

ちょっと,連立合同方程式を解く必要がでてきたので,実装してみた. ここで,invMod n p = n^(-1) (mod p). -- Input: 互いに素な整数 m1,m2,...,mn, 整数 a1,a2,...,an -- Output: 連立合同方程式の解 x in Zm s.t. x = ai (mod mi) congruence :: (Integ…

いまさらながら,素数判定 @ Haskell

とりあえず,試し割りとMiller-Rabin. Miller-Rabinはアルゴリズム自体は簡単. なんで,こんなコードがほぼ正しい答えを返すか若干不思議である (乱択アルゴリズムは,相当単純なのに,まぁまぁなものが多い). 決定性アルゴリズムも実装したいが… modul…

ぐるぐる

http://www.surfex.algebraicsurface.net/ でつくりました.x^2+y^2+z^2 - x*y*z = pで p をパラメータとして,動かした.ずっと見ていると,なんだか,気持ちが悪くなってくる…

代数曲面で遊ぶ

こんな,ソフトウェアを見つけたので,遊んでみた. しかし,コンパイルが大変だった(この話はまた今度). surf - Homeなにができるか,というと… 次のような素晴しい絵が描ける! 使用したもの surf - Home http://www.singular.uni-kl.de/ http://www.im…

Problem 252

252 Convex Holes Problem 252 - Project Euler 計算幾何の問題. 二次元平面上に点集合が与えられる. 最大空凸包とでもいうのでしょうか? 凸包であって,内部に他の点を含まないもの のうちの最大面積を求める問題. さて,どこから手を付ければ良いのや…

計算幾何

面倒. 嫌いだ…

Problem 251

251 Cardano Triplets Problem 251 - Project Euler ある条件を満たす,三つ組の整数を探すもんだい. 条件に三乗根があり,しかも,その中に二乗根まであるので,見た瞬間は,ぎょっとしますが…

Shpere

レベルが上がって,球になった. ところで,次のレベルはどうなるんでしょう?

Problem 250

250 250250 Problem 250 - Project Euler 前の問題(249)と似ているが…

Problem 249

249 Prime Subset Sums Problem 249 - Project Euler 部分和問題はNP困難で,難しそうですが…

Problem 248

248 Numbers for which Euler’s totient function equals 13!Problem 248 - Project Eulerphi(n) = 13 ! となる n を探す問題. 一見,探索範囲が広そうに見えるが…

Problem 245 (改良)

C++で書いて,その際,効率の良い方法をつかった.