2010-08-01から1ヶ月間の記事一覧

ghc-mod をインストールして夢のemacs上でhaskellプログラムを補完

ghc-mod をインストールして夢のemacs上でhaskellプログラムを補完http://www.mew.org/~kazu/proj/ghc-mod/en/ をインストールしようとおもう。ubuntuのデフォルトパッケージでやることはあきらめた。 なるべく最新のGHCにして(6.12.2) cabalでいろんなもの…

リストの直積(デカルト積、カルテシアン)を内包表記→do記法→モナド→concatMapの形で表してみる。

リストの直積(デカルト積、カルテシアン)を内包表記→do記法→モナド→concatMapの形で表してみる。 モナドとdoが同じなのがわかって実験 内包表記 [[x,y] | x <- [1,2] , y <- [3,4]] do記法 returnが入っているところで若干 モナドを意識させる do {x <- [1…

virutualboxでubuntuServerをつくりバックグラウンドで起動させるには

virutualboxでubuntuServerをつくりバックグラウンドで起動させるには VirtualboxにubuntuServerを入れる。 ゲストOS名は"Ubuntu Server since 20100831"にするwubuntu serverを選択したのはXとか不要だし、常駐量は小さくしたいしね。 virturalboxを選択し…

haskellのセクションと無名関数と関数名消費

haskellのセクションと無名関数と関数名消費 通常2引数(?)の関数を1引数の関数にするには関数名を消費する以下のような場合 *Main> let f x=x+1 in f 2 3 *Main> let f x=1+x in f 2 3これだと定義と本体と二つに分かれるのであまり好きじゃなく、つい…

haskellのオフサイドルールはバインドでインデントは式の継続だったんだ。

haskellのbindがよくわからない(というかレイアウト) なぜcat6.hsを許すんだろう・・・と、研究開始!a.txt と b.txtを結合するものをまずdo記法で書く --:::::::::::::: --cat1.hs --:::::::::::::: main=do x<-readFile "a.txt" y<-readFile "b.txt" putS…

ghciのプロンプトを短くしつつemacsのhaskellモードと共存させるには

ghci のプロンプトがながすぎ。どうもhaskell-modeがプロンプトをみているみたいで ~/.ghciでプロンプトを設定すると挙動がおかしいので、.ghciの方をemacsにあわせる。以下を~/.ghciに設定する :set prompt "*Main> "ついでに ghciでC-pnで履歴を操作するの…

ubuntu10.04でnfs4をつかう

いままでLAN内の全マシンをNFSでつないでいたのだが先日いきなりマウントできなくなった。 理由がまったくわからず1週間放置していたのだがどうもNFS3->NFS4になったものと思われる。(もしくはnfs3モードでうまく動かなくなった。)ちょうど一週間前ぐらいに…

haskellで簡易lsを作る

苦労の末に Prelude System.Directory> getDirectoryContents "/" >>= return.concatMap (++" ") >>= putStrLn bin lib sbin sys selinux vmlinuz . root boot usr srv cdrom vmlinuz.old initrd.img var tmp dev media opt proc mnt initrd.img.old home lo…

haskellでカレントディレクトリを表示する

haskellでカレントディレクトリを表示する Prelude> :m +System.Directory Prelude System.Directory> setCurrentDirectory "/etc" "/etc" Prelude System.Directory> putStrLn getCurrentDirectory <interactive>:1:9: Couldn't match expected type `String' against in</interactive>…

ubuntu9.10上のhaskell(ghc)でUTF8を扱うには

追記 2010/08/20 13:21:22: ubuntu10.04以降ではhaskellのバージョンが上がって以下の問題は起きないらしい。 http://www.sampou.org/cgi-bin/w3ml.cgi/haskell-jp/msg/480 追記ここまで そこで色んな対処方があるのですが、utf8-string という素敵なパッケ…

rubyでフォルダ構造維持しながらファイルをコピー

rubyでフォルダ構造維持しながらファイルをコピーする xcopyみたいな形で第2引数に第1引数のディレクトリ以下のファイルをコピーする 第2引数のフォルダがなかったら作る src,dest=ARGV[0]||"a",ARGV[1]||"a_dash" Dir.exist?(dest)||Dir.mkdir(dist) Dir.gl…

project euler problem 10

10以下の素数の和は2 + 3 + 5 + 7 = 17である. 200万以下の全ての素数の和を計算しなさい. 昨日取得した素数列を生み出す関数ですぐ終わると思ったが計算時間が半端じゃなかった main=print $ sum $takeWhile (<2000000) primes primes = sieve [2..] sieve …

project euler problem 12

三角数の数列は自然数の和で表わされ、7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である。 三角数の最初の10項は1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... となる。最初の7項について、その約数を列挙すると、以下のとおり。?1: 1?3: 1,3?6: 1,2,3,6…

project euler problem 13

以下の50桁の数字100個の総和の上位10桁を求めよ。37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 919422133635741615725224305633018110724…

project euler problem 16

2^15 = 32768 であり、これの各数字の合計は 3 + 2 + 7 + 6 + 8 = 26 となる。同様にして、2^1000 の各数字の合計を求めよ。 簡単そうなのですぐやってしまった。 read [c]+0 がきもちわるいけど… Prelude> foldl (\x y->x+(read [y]+0)) 0 $ show (2^1000) …

project euler problem 11

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91…

project euler problem 8

以下の1000桁の数字から5つの連続する数字を取り出して その積を計算する。そのような積の中で最大のものの値はいくらか73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 8586156078911294949545950…

haskellで組合せと順列

まさか… そんなまさか… さっき id:nobsun さんに教えてもらった [(i,j)|i<-[1..10],j<-[i+1..10]] が組合せだったなんて… Prelude> mapM_ print $ map (\x->[(i,j)|i<-[1..x],j<-[i+1..x]]) [2..6] [(1,2)] [(1,2),(1,3),(2,3)] [(1,2),(1,3),(1,4),(2,3),(2…

project euler problem 9

ピタゴラスの三つ組(ピタゴラスの定理を満たす自然数)とはa

haskellで文字列を数字に変換する

haskellで文字列を数字に変換するにはreadを使う。 ただしreadは多相型なので後ろに型の識別子が必要。 Prelude> :type read read :: (Read a) => String -> a Prelude> read "123" <interactive>:1:0: Ambiguous type variable `a' in the constraint: `Read a' arising </interactive>…

project euler problem 7

Problem 7 † 素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり、6番目の素数は 13 である。10001 番目の素数を求めよ。 再起で素数は難しいよ 値を引き回すのが面倒でしょうがない。 main = (putStrLn.show) problem problem = last $ primeList 10…

project euler problem 6

Problem 6 † 最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。1? + 2? + ... + 10? = 385 (1 + 2 + ... + 10)? = 3025 これらの数の差は 3025 - 385 = 2640 となる。同様にして、最初の100個の自然数について和の二乗と二乗の和の差を…

project euler ploblem 5

2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり、そのような数字の中では最小の値である。では、1 から 20 までの整数全てで割り切れる数字の中で最小の値はいくらになるか。 あれ?ghc6.10からlcmが実装されていたはずなので… main = putStrL…

project euler problem 4

左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。 文字列に変換する方法にしばらく悩んだ 単なるshow…

ubuntuのコマンドラインでV8を動かす

ubuntuのコマンドラインでgoogleのjavascriptエンジンであるv8を動かしてみよう。 $ sudo aptitude install subversion scons libreadline-dev $ svn co http://v8.googlecode.com/svn/trunk/ v8-read-only $ cd v8-read-only $ CXX=g++-4.1 scons d8 consol…

project euler problem 1-3

久しぶりに暇してるのでeulerをやってみることにした。問題は以下 http://projecteuler.net/index.php?section=problems日本語訳も見つけたのでここからコピペしながら進行 http://odz.sakura.ne.jp/projecteuler/index.php?Project%20Euler 問題1 10未満の…