この記事では群論の重要定理であるラグランジュの定理の簡単な説明と、 群論を用いたCodeforces 334 (Div. 1) B. Moodular Arithmeticの解法について説明する。 この記事は 群の定義 部分群の定義 群の位数の定義 既約剰余類群 を知っている人を対象として書いた。 さて、ラグランジュの定理とは次の定理のことである。 有限群\(G\)の部分群\(H\)がある。このとき\(|H|\)は\(|G|\)の約数である。 この定理の証明方法と、応用方法を順に説明する。 ラグランジュの定理 ラグランジュの定理を導くのに必要な2つの定理を紹介する。 1つ目の定理は次のようなもの。 定理1:有限群\(G\)の部分集合\(A=\{g_1,g_2,\ldots,g_n\}\)の各元に\(g\in G\)を掛けた集合を \(gA=\{gg_1, gg_2,\ldots,gg_n\
A team of neuroscientists has found new support for MIT linguist Noam Chomsky’s decades-old theory that we possess an “internal grammar” that allows us to comprehend even nonsensical phrases. A team of neuroscientists has found new support for MIT linguist Noam Chomsky’s decades-old theory that we possess an “internal grammar” that allows us to comprehend even nonsensical phrases. “One of the foun
luminance 0.8 and existential quantification It’s been a while I haven’t released anything on my blog. I just wrote a few changes for the latest version of luminance, luminance-0.8.2 and I decided to write about it because I think those changes are interesting on a Haskell level. The problem If you haven’t read the changelog yet, I changed the createProgram function and the way it handles uniform
Note 2018-07-28: 最新の lts-12.2 で動くようにサンプルコードを修正しました。 Haskellは型の表現力がとても高い言語です。 型をうまく使えば意図しないプログラムがコンパイルできないように設計することが出来ます。ServantはWebアプリがどのように振る舞うかを型で設計するためのDSLです。APIと対応した型を作ることで間違いが少なくなるだけでなく様々なボイラープレートを型から生成することも出来ます。特殊な外部ファイル等は必要無く全てHaskellの文法で完結します。まさに型の表現力が高いHaskellでしか作れないライブラリです。 Servantの特徴としてチュートリアルでは以下の4つが挙げられています。 concision (簡潔である) flexibility (汎用的・柔軟性がある) separatation of concerns (関心の分離) t
http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html : closures are in fact poor man's objects (in his opinion). ...snip... A closure is an object that supports exactly one method: "apply". Christian Queinnecは、 closures are a poor man's objects と言っている、一方、Norman Adamsは、 objects are a poor man's closures と言っている、と、そんなことみたいです。「クロージャはよく知らないがオブジェクトなら知ってる」という人は多そうなので、「クロージャとは、貧乏人のオブジェ
これはHaskellスペースリーク Advent Calendar 2015の8日目の記事です。 IOのコードは、普通に書けば末尾呼び出しの最適化が効く形になる。たとえば、こんな感じ: foo :: Char -> String -> IO Int foo a b = do c <- bar a b zoo b c woo c woo :: Int -> IO Int woo c = do d <- goo c return $ d + 1 foo が woo を呼び出す時は、fooのフレームを忘れてしまってよい。IOの文脈で再帰関数を書く場合も末尾再帰で十分な場合が多い。 goo :: Int -> IO () goo 0 = return () goo n = do getChar >>= putChar goo (n - 1) 残念なことに、一見末尾再帰に見えるが実はそうなっていなく
非正格評価をデフォルトとするHaskellは、注意を怠るとしばしばスペースリークと呼ばれる非効率なメモリの使い方を引き起こす。幸いなことにGHCには多くの場合において有効なヒーププロファイラを備えているので、実際にスペースリークを特定するのはそれほど難しくない。 GHCのヒーププロファイラについて解説した文書としてはGHCの公式マニュアルがあるが、これだけで効果的に使うのは難しいのと、非公式のツールの使い方は紹介されていないので、それらを含めてまとめてみたい。 スペースリークの正格な定義があるのかはさておき、実際の使われ方としては、プログラマが意図しない非効率なメモリの使い方を指すと言ってよいと思う。一口にスペースリークと言っても様々な原因があり、これらを分類する試みとしては例えばSpace leak zooがある。いくつかの例はあとで触れることにして、まずはスペースリークの見つけ方につい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く