ここのバージョン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…
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)組み合わせを実際に作って、数を数えて、二項係数配列を作って、!!で取…
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) …
ちょうしにのってモンテカルロシミュレーション。ある事象が確率pで起きるとき n回のうち、k回の事象が起きる確率は となる。そこで、「n回のうちk回成功」という確率をシミュレーションで求めて その後にコンビネーションを逆算する。シミュレーションの試…
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)意味が分からない。 気にしない方がよさそう。
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…
http://haskell.g.hatena.ne.jp/hyuki/20060611/letghciで変数束縛したり関数束縛するときはletが便利だと今日気付く。 (最後に評価した値が変数itに束縛されるのも便利) *Main> [['a'..'z'],['A'..'Z']] ["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOP…
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…
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] …
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してくれれば、 英語の語法への悩みを減らせるんじゃないか。 プログラミングの統合開発環境ではそういう機能あるよね。
見出し(*)とリスト(-)の出し方が分かった。
何故? ブラウザ側のバックスペースを抑止する機能があればいいのに。 手間がかかる文章は外部エディタで書くのが正解なのかな。
括弧内はグーグルでの検索件数*1ブログ を開設する。(88,000) を開く。(66,900) を持つ。(49,800) する。(185,000) リンク を貼る。(916,000) を張る。(1,120,000) する。(4,970,000) コメント する。(3,320,000) を打つ。(537) を書く。(5,420,000) トラッ…
ソーシャルブックマークが使いたかったのでアカウントを取りました。 とりあえず実験的にいろいろ弄ってみたいと思います。バックスペースを押したら「ブラウザの戻る」が実行されちゃって 書いた内容が全部消えたのでさっそく怒ってます。