2011-04-01から1ヶ月間の記事一覧

『直角三角形の面積...』に挑戦

お題:http://d.hatena.ne.jp/route150/20110428/1303994639 直角三角形の斜辺でない2辺をa、bとする。a、bは整数で「1 (追記) 但し、列挙する数は無限個とする(現実的には無理だが)。 最初に一覧にして眺めてみる。 [1, 1] [1, 2] [1, 3] [1, 4] [2, 2] [1…

Groovy on コマンドプロンプト

独学なのでプログラミングの最初の関門は環境設定だった。検索しては他の人の設定を参考にさせて頂いたので私も公開しておく。現在、Groovy 1.8 リリースされたところ。Groovy をアルゴリズムの勉強をするための動く疑似コードとして使い始めた。半年間、コ…

Catalan number その2

.hs

Haskell で 前回 の処理を実装してみた。 catalan :: Int -> [[Char]] catalan 0 = [[]] catalan n = ['N':c1++'E':c2 | i <- [0..n-1], c1 <- catalan i, c2 <- catalan (n-i-1)] path :: [Char] -> Int -> [[Char]] -> [[Char]] path [] _ (s:ss) = (take …

Catalan number

Rosetta Code の方は公式を実装するだけだったので『数のマジック』の練習問題 7.4.1 を NxN 格子上にして出力することにする。 3x3 の場合 次の線上をSからGまで北か東に移動して辿り着くすべてのパスを表示する。 パスの総数はカタラン数になる。 +--+--+-…

Hamming number その2

id:akihiro4chawon 氏のエントリの 1つ目の実装を見て Haskell の実装と同じだったので驚いた。 スクリプトで Haskell と同じように書き直してみる。 val hamming: Stream[BigInt] = BigInt(1) #:: merge(merge(hamming map {_ * 2}, hamming map {_ * 3}), …

Hamming number

Hamming numbers - Rosetta Code から 素因数分解した形が 2^i 3^j 5^k になる数をハミング数というらしい。ただし i, j, k >= 0Haskell のコードを引用する。 Haskell hamming = 1 : map (2*) hamming `merge` map (3*) hamming `merge` map (5*) hamming w…

Groovy の Deque

GroovyにおけるProject Coin相当拡張について - uehaj's blog のように Java より先に Groovy にはその機能が存在することがある。でもそれはたまに問題になる。 LinkedList と ArrayDeque はともに Deque であるがその振る舞いが違う。 Deque linkedList = …

Happy number

Happy numbers - Rosetta Code から Happy number とは次のようなものらしい。 その数の各桁の平方和が 1 になれば Happy ならない場合は再帰して調べる 各桁の平方和が 4 になると循環するので Happy ではない 例) 79 は 49+81=130 -> 1+9+0=10 -> 1 なので…

groovy.util.MapEntry

Hash from two arrays - Rosetta Code から Groovy keys = ['a','b','c'] vals = ['aaa', 'bbb', 'ccc'] hash = [:] keys.eachWithIndex { key, i -> hash[key] = vals[i] } Haskell import Data.Map makeMap ks vs = fromList $ zip ks vs mymap = makeMap …

Fibonacci number

以前、AST変換でバイトコードを直接生成して計算する方法で Pure Java より速いことが話題に上がっていた。*1 http://www.jroller.com/melix/entry/yes_fibonacci_in_groovy_can 速いぞGroovy! - uehaj's blog Pure Java より速いぞ Groovy! - 倭マン's BLOG…

Groovy で改行のエスケープ

Rosetta Code で発見したソースから def queensUniqueSolutions = { start -> assert start instanceof Number || start instanceof List def qus = (start instanceof Number) \ ? queensDistinctSolutions(start) \ : [] + start for (def i = 0; i < qus.…

Groovy でリストのかけ算

元ネタ: http://d.hatena.ne.jp/atsuoishimoto/20110409/1302347562 Groovy でも同様で*1 groovy:000> a = [[]] * 5 ===> [[], [], [], [], []] groovy:000> a.head() << 'A' ===> [A] groovy:000> a ===> [[A], [A], [A], [A], [A]] 別のインスタンスにした…

『今流行のお題を出してみた』に Groovy で挑戦

お題:はてなブログに移行しました 問題をみて「グラフが強連結であること」ってところまでは調べたんだが 強連結であることを判定するアルゴリズムはあっても強連結なグラフを作るものがみあたらない。 何回かグラフ関連のアルゴリズムをあさっていたら気が…

評価順

.hs

『Jythonプログラミング』の西尾泰和氏のエントリに似ているけど違う話。 最小限Lisp - 西尾泰和のはてなダイアリー 最小限 Haskell あるかな? 『プログラミング Haskell』 10.5 仮想マシン 関数型パーサに比べて検索に Hit しない。 プログラミングHaskell…

Groovy の in キーワード

groovy.time パッケージを調べていたら知らない in の使い方をしていた。 http://groovy.codehaus.org/JN0545-Dates System.setProperty('user.timezone', 'GMT') def c= new GregorianCalendar( 2002, Calendar.JUNE, 30 ) assert c.lenient c.set( Calenda…

List comprehension

Scala の for 式で覆面算を解いているエントリを見つけたので同じように Haskell と Groovy で解きながらリスト内包表記について考える。 リストモナドを使ってみる - みずぴー日記 リスト内包表記は Groovy にもいずれ実装されるのか? http://jira.codehau…

時間帯重複チェック(応用編)その3

お題:時間帯重複チェック(応用編) - No Programming, No Life Haskell で解答されていたのでそれを Groovy で書いてみる。 http://d.hatena.ne.jp/route150/20110401/1301661345 Control.Applicative モジュールの知識がないので読めない部分がある。 ghc…