ビット数を数える

ここのバージョン5を参考に http://www.nminoru.jp/~nminoru/programming/bitcount.html import Bits bitCount1 :: Int -> Int bitCount1 b = (foldl f) b [(1,0x55555555),(2,0x33333333),(4,0x0f0f0f0f), (8,0x00ff00ff),(16,0x0000ffff)] where f :: Int…

組み合わせの数3

com n k = (map length $ group $ sort $ map sort $ pow n ["a","b"]) !! k where mul as bs = concat $ map (\x -> map(++ x) as) bs pow 1 xs = xs pow n xs = mul xs (pow (n-1) xs)組み合わせを実際に作って、数を数えて、二項係数配列を作って、!!で取…

組み合わせの数2

k * nCk = n * (n-1)C(k-1) より c n 0 = 1 c n k = n/k*(c(n-1)$k-1) 短いけど / が嫌な感じ。

組み合わせの数

http://haskell.g.hatena.ne.jp/hyuki/20060612/combinationこれを c n k=n^k`div`k^k where n^k=foldr(*)1[n-k+1..n]2文字節約 c n k=n^k`div`k^k where n^k=product[n-k+1..n](せこい)whereを消して c n k=product[n-k+1..n]`div`product[1..k]

組み合わせの数 独り言

二項分布を正規分布に近似して正規分布の分布関数から逆算とかすれば乱数使わなくて済むかな・・ (そこまでして組み合わせの数を求めたくない)

組み合わせの数 再び

http://haskell.g.hatena.ne.jp/hyuki/20060612/combination1行にまとめるのがありならこれでどうだヽ(´ー`)ノ c _ 0=1;c n k=(c(n-1)$k-1)*n`div`k34 byteほとんど上のと一緒だけど、計算順序を変えることで、 (/)の変わりにdivが使えることに気が付きま…

円周率モンテカルロ

ついでに円周率を。 pi' = do let t = 100000 nums <- sequence(map sequence (replicate t (replicate 2 randomFIO))) putStrLn $ show $ (fromIntegral(length(filter f nums) )/fromIntegral(t)) * 4 where f :: [Float] -> Bool f = (< 1). sum.map(^2) …

組み合わせの数4 ーモンテカルロシミュレーション版

ちょうしにのってモンテカルロシミュレーション。ある事象が確率pで起きるとき n回のうち、k回の事象が起きる確率は となる。そこで、「n回のうちk回成功」という確率をシミュレーションで求めて その後にコンビネーションを逆算する。シミュレーションの試…

Yet Another Haskell Hacker

yahh = (putChar `mapM_`) =<< return (foldr (++) (map pred "\v") $ (concat.transpose.((flip(map) [id,((flip(replicate) " ").length)]). (flip($)))) $flip (.) (words. map succ) (map (\xs -> toUpper(((head.head.tails)xs)):tail(xs)) ) $ "xds\US…

・・・・

*Main> sub 4 24 (0.00 secs, 0 bytes) *Main> sub 4 24 (0.00 secs, 3062564 bytes) *Main> sub 4 24 (0.00 secs, 0 bytes)意味が分からない。 気にしない方がよさそう。

1〜10000までの合計を求めるプログラム in Haskell

Prelude> sum $ take 10000 $ iterate (+1) 1 50005000 cmTypeOfName: it it :: Integer (0.06 secs, 3128088 bytes) Prelude> sum [1..10000] 50005000 cmTypeOfName: it it :: Integer (0.02 secs, 0 bytes) Prelude> foldr (+) 0 [1..10000] 50005000 cmT…

let式

http://haskell.g.hatena.ne.jp/hyuki/20060611/letghciで変数束縛したり関数束縛するときはletが便利だと今日気付く。 (最後に評価した値が変数itに束縛されるのも便利) *Main> [['a'..'z'],['A'..'Z']] ["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOP…

unfoldrでevery関数

http://www.hyuki.com/haskell/200412#i20041222095833 every' n xs = unfoldr f xs where f [] = Nothing f cs = Just (splitAt n cs)Maybeの有り難さがちょっと分かった

できたーヽ(´ー`)ノ

splitAt3' = flip((flip((flip(map) . flip(map) [take,drop] . flip($)))).flip($) ) *Main> :! type mysplit.hs splitAt' n = flip(map) (flip(map) [take,drop] ($ n)) . flip($) splitAt2' n = (flip(map) . flip(map) [take,drop] . flip($)) n.flip($)…

後一歩?

splitAt2' n = (flip(map) . flip(map) [take,drop] . flip($)) n.flip($) f::(i->(a->b)->c) 、g::(a->b) のとき f(n).g = k(n) となるようなk::(i->c) を作れればいいのかな・・・・・flip(f) g?? 型とにらめっこ。 *Main> :t (flip(map) . flip(map) [t…

xs追い出し成功・・なの?

Prelude> flip(map) (flip(map) [take,drop] ($ 3)) $ flip($) $ [1..5] [[1,2,3],[4,5]] Prelude> flip(map) (flip(map) [take,drop] ($ 3)) . flip($) $ [1..5] [[1,2,3],[4,5]]*Main> :! type mysplit.hs splitAt' n = flip(map) (flip(map) [take,drop] …

Pre機能テスト

Prelude> map ($ [1..5]) . map ($ 3) . map ($ (take,drop)) $ [fst,snd] [[1,2,3],[4,5]]真似して合成してみたけど[fst,snd]が外に出ちゃった。意味無い。

http://haskell.g.hatena.ne.jp/hyuki/20060605/splitat疑問のところについて考えてみる。 最初に思いついた形 zipWith (\f x -> f x) (zipWith (\f x -> f x) [take,drop] (replicate 2 n)) (replicate 2 xs) 関数適用は$だね zipWith ($) (zipWith ($) [ta…

おまけ(´ー`)

(take,drop)の形から([a],[a])の形を返すように微調整したバージョン splitAt5' = curry((\[x,y]->(x,y)).(uncurry (flip((flip((flip(map) . flip(map) (map($ take,drop)) [fst,snd]) . flip($)))).flip($))))) 実行結果 *Main> :! type mysplit.hs splitA…

英語の場合はどうだろう。

名詞を入力する度に接続確率が高い順に動詞をsuggestしてくれれば、 英語の語法への悩みを減らせるんじゃないか。 プログラミングの統合開発環境ではそういう機能あるよね。

今日のはてなダイアリー

見出し(*)とリスト(-)の出し方が分かった。

またバックスペースを押しちゃって凄い焦ったけど、今度は残っていた。

何故? ブラウザ側のバックスペースを抑止する機能があればいいのに。 手間がかかる文章は外部エディタで書くのが正解なのかな。

web keywordに接続する動詞

括弧内はグーグルでの検索件数*1ブログ を開設する。(88,000) を開く。(66,900) を持つ。(49,800) する。(185,000) リンク を貼る。(916,000) を張る。(1,120,000) する。(4,970,000) コメント する。(3,320,000) を打つ。(537) を書く。(5,420,000) トラッ…

アカウントを取ったので日記の機能も試してみる。

ソーシャルブックマークが使いたかったのでアカウントを取りました。 とりあえず実験的にいろいろ弄ってみたいと思います。バックスペースを押したら「ブラウザの戻る」が実行されちゃって 書いた内容が全部消えたのでさっそく怒ってます。