2006-01-01から1年間の記事一覧

http://kokogiko.net/m/archives/001820.html 冗談です。

あるユーザーを「お気に入り」にいれている公開ユーザーの探し方

次のキーワードでググる。 "ユーザーID site:b.hatena.ne.jp -site:b.hatena.ne.jp/ユーザーID inurl:favorite" 例) "taninsw site:b.hatena.ne.jp -site:b.hatena.ne.jp/taninsw inurl:favorite" http://www.google.com/search?q=taninsw+site%3Ab.hatena.n…

greasemonkey script「全サイトはてブ化」のユーザーからセッションIDを盗む受動的攻撃

http://d.hatena.ne.jp/kusigahama/20060307#1141708818 http://b.hatena.ne.jp/entry/http%3A//b.hatena.ne.jp/taninsw/20061005%23bookmark-1522615はてブは100文字制限がキツいので、こちらに書かせて頂きます。 悪意あるuser.jsを作るなら、rkmなんて中…

http://gigazine.net/index.php?/news/comments/20061009_teleporting_cat/ http://undeniablefacts.blogspot.com/2006/10/undeniable-friday-teleporting-cat-trick.html

ゲームプレーワーキング (ちなみに全く寝ないでフラフラしながら書いています)

http://blog.japan.cnet.com/geetstate/archives/2006/09/1.html過去に似たような事を考えたことがある。 (知能工学・インターフェイス・Web2.0・ゲームデザインについて 学習していれば自然と思いつく事のようにも思われる。) とはいえ、この概念は確かに…

我々は"既に"Googleに労働力を搾取されている

情報発電所ことGoogleをMatrixに、一般ユーザーを電池に見立てた論考をどっかで見た覚えがあるのに、検索しても見つけられない。<陰謀論>まさかGoogle八部に・・・</陰謀論>

Stage6も本当は埋め込み可能です

<object classid='clsid:67DABFBF-D0AB-41fa-9C46-CC0F21721616' width='639' height='379' codebase='http://go.divx.com/plugin/DivXBrowserPlugin.cab'> <br/><param name='src' value='http://video.stage6.com/63372/1607.divx' /><br/> </br/></param></br/></object>

Youtubeの画質が低い事は「Flashビデオ形式」の画質の低さを意味しない。

(消去)

言語 Brainf*ck

http://ja.wikipedia.org/wiki/Brainfuck8命令しかないけどチューリング完全な言語Brainf*ck ++++++++[>++++++<-]>[>+>+>+<<<-],>[<->-],>[<->-]<[-<+>]<[->>>+<<<]>>>.2文字の数字入力を受け取りそれぞれの数を足した物を出力するプログラム(1桁のみ) つ…

ビット数を数える4 再帰版2(シンプルバージョン)

bitCount4 :: Int -> Int bitCount4 0 = 0 bitCount4 b = (b .&. 1) + bitCount4(shiftR b 1)いかにも再帰的な感じ。

ビット数を数える3 高階関数版(testBitを使用)

bitCount3 :: Int -> Int bitCount3 b = length $ filter (testBit b) [0..bitSize(b)-1] いかにもビットを数えている感じ。分かりやすい。

ビット数を数える2 再帰版

ここのバージョン3を参考に http://www.nminoru.jp/~nminoru/programming/bitcount.html import Bits bitCount2 :: Int -> Int bitCount2 0 = 0 bitCount2 b = 1 + bitCount2 ( b .&. (b-1))こっちの方が綺麗で好きだなぁ。なんとなく短くしてみたり import…

組み合わせの数 ビットカウントバージョン

import Bits import List bitCount1 :: Int -> Int bitCount1 b = (foldl f) b [(1,0x55555555),(2,0x33333333), (4,0x0f0f0f0f),(8,0x00ff00ff),(16,0x0000ffff)] where f :: Int -> (Int,Int) -> Int f b (n,a) = (b .&. a) + ((shiftR b n).&. a) c n k =…

これを使って2項係数配列を生成

*Main> [0..2^5-1::Int] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31] *Main> map bitCount1 it [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5] *Main> sort it [0,1,1,1,1,1,2,2,2,2,2,…

ビット数を数える

ここのバージョン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] …