Pending
Rubyで1〜2週間遊ぼうかと思っていたのですが,同じやるならJavaらーたるものGroovyの方がいいかな?とかなり心を現在揺さぶられています.このまま行ってしまいそうです.
とりあえず当初の目標だったプログラム1個作るのはできましたので,ここまでにしておきます.Groovy自体,Rubyの文法などを取り入れているようなのでGroovyをすることでまたRubyを触る時にも役に立つかもしれない,という言い訳を残しつつ.
酷いコードなのでコードは公開できませんが,以下のような出力を出せるコードはできました.
テーブルは9x9サイズ,indexは362880個です PUSH 0.0, 現時点で1回目 PUSH 0.01, 現時点で4回目 PUSH 0.06, 現時点で38回目 PUSH 0.0, 現時点で39回目 PUSH 0.1, 現時点で99回目 PUSH 0.27, 現時点で245回目 PUSH 4.617, 現時点で2964回目 PUSH 71.873, 現時点で47583回目 PUSH 67.648, 現時点で96171回目 以下の数独的テーブルもどきが仕上がりました... [4, 5, 8, 9, 2, 1, 6, 7, 3] [1, 8, 3, 6, 9, 7, 5, 4, 2] [8, 3, 5, 2, 4, 9, 1, 6, 7] [7, 6, 9, 4, 5, 2, 8, 3, 1] [9, 1, 6, 3, 7, 8, 4, 2, 5] [6, 4, 2, 5, 1, 3, 7, 9, 8] [3, 2, 4, 7, 8, 5, 9, 1, 6] [2, 7, 1, 8, 6, 4, 3, 5, 9] [5, 9, 7, 1, 3, 6, 2, 8, 4] 試行回数 96171 処理時間(順列生成) 15.743秒 処理時間(インデックス生成) 0.12秒 処理時間(テーブル生成) 144.578秒 処理時間(合計時間) 160.441秒
単純総当りによる実装と,試行結果が×だった場合にインデックスから削除する学習型の実装をやってみましたが,後者は試行回数こそは劇的に減りますがオーバーヘッドで死にました.
これもJ君にかかれば30秒くらいまで短くいける?
追記
ところでアンテナにも登録させていただいている某著名なJBossユーザの方の日記もいつのまにかスクリプト言語ネタのエントリがわさわさと追加されていました.明日のスクリプト言語(JVM上で動作するもの)がGroovyなら,今日のスクリプト言語はJythonとのことで,Jythonを触られているようです.うーんJythonか.