No Programming, No Life

プログラミング関連の話題や雑記

アルゴリズム

Groovyの再帰処理(trampoline)についてひとつ分かったこと

はじめに Groovyのクロージャ(Closure)には.trampolineってメソッドがあって、これをうまい感じに使うと末尾再帰を最適化してくれる。 よしやってみよう では、簡単な合計値を求めるサンプルを再帰処理で。 java.lang.StackOverflowError お約束。 よし、今…

Groovyでスリープソートとバケットソートをやってみた

はじめに ちょっと前にスリープソートが流行ってたので、それをid:orangecloverさんが実装していたのを見て、id:nobeansさんがさらに添削していたものを参考に書いたコードが下のようになりました。 スリープソートって スリープソートって、あるデータのも…

Groovyでライフゲームを書いてみた

はじめに ライフゲームをなんとなくGroovyで書いてみました。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) スクリーンショット グライダー(初期状態) shape.txtをいじった状態 実行方法 >groovy lifegame.groovy 操作方法など エラー処理などさ…

GroovyでQuickSortラムダ式版

おださん(id:odashinsuke)のところでGinAに載っているQuickSortについて書かれていたので ラムダ式版にさらに改変してみた。ダックタイピングの恩恵 - お だ のスペース 2010-10-10追記 クイックソートのお題だったので、#g100pon No.47 として下記コードを…

最小値や最大値をmax, minで表現する

ある変数の値がマイナスを許容しないような場合があるとして、他の変数から値を受け取って設定するような場合を考えてみる。(Javaにて) 普通に書くと int num1; if (a < 0) { num1 = 0; } else { num1 = a } こんな感じだろうか。もしくは三項演算子を利用し…

循環INDEX

サンプルはJavaで。 インクリメントしていった際に循環するINDEX int index; // 配列のindex int[] buffer = new int[3]; // 配列(長さ3) /* * (index + 1) が 3以上になった場合は、 * 配列の長さ(3)の剰余をとる。 */ index = (index + 1) % buffer.length…

ソートアルゴリズムを可視化

こんなのありました。見ているだけでもきれい。JavaScript でソートアルゴリズムを可視化 - bkブログ最近新人さんの研修でなにかとソートアルゴリズムとかやってるからね。やっぱりアルゴリズムの基本ですかね、ソートは。