タグ

2010年5月15日のブックマーク (4件)

  • バケツ問題 - nidoの雑記

    某プログラム勉強会で、お題が出たので解いてみる。 問題 水がいっぱい入ったバケツ一個と、空のバケツがいくつかあり、それぞれのバケツの容量は正確にわかっている。この状態から指定された容量を量りとる、最 小手数の手順を求めよ。 ただし ・バケツからバケツに水を移す操作を1手と数える。 ・バケツからバケツに水を移す際は、注がれるバケツがいっぱいになるか、注ぐバケツが空になるまで行う。 ・従って、水は一滴も漏れない。 例えば。バケツが4つ。10リットル,8リットル,3リットル。10リットルのバケツが満タンで、あとは空っぽ。ここから4リットル量りとりたい。 最小手数の手順は 10リットルのバケツから、3リットルのバケツに注ぐ 3リットルのバケツから、8リットルのバケツに注ぐ 10リットルのバケツから、3リットルのバケツに注ぐ の3手(要するに、10リットルから3リットルを2回減じている)となる。 表

    バケツ問題 - nidoの雑記
  • 切符問題 - nidoの雑記

    某プログラム勉強会で、お題が出たので解いてみる。 いくつかの正の整数と加算・減算・乗算 の3つの演算子(そして、括弧)を使って、ある別の正の整数を生成する方法を探し出すプログラムを書け。 例えば。{2,5,6,8}から10を生成する方法は、例えば (2+8)*(6-5) があるので、これを出力すればよい。 なお: ・解がない場合は、その旨を出力すること ・解が複数ある場合でも、ひとつだけ出力すればよい ・オーバーフローは考慮しなくてもよい ・不正な入力(負の数がある、など)への対処は不要 ・括弧は無駄にたくさんついていてもよい。 ・ヒント:再帰 遠い昔に似た問題のソルバーを作ったことがある。 「切符問題」といわれていたけれど、与えられた4つの数字を加減乗除して指定された数字にする、という問題。 切符に数字が4つ書かれていて、その数字を使ったのが起源だったようだが。 見かけた車のナンバーを加

    切符問題 - nidoの雑記
  • ナップサック問題? - nidoの雑記

    某プログラム勉強会で、お題が出たので解いてみる。 あなたは硬貨を何枚か持っており、ある金額を払いたい。 お釣りの金額が最小となるような硬貨の組み合わせと、その場合のおつりを計算せよ。 硬貨の価値はすべて正の整数、払いたい金額も正の整数で、オーバーフローは考慮しなくても良いとする。 最良の組み合わせが複数ある場合、そのうちひとつを出力すればよい。 問題を読んだ瞬間「ナップサック問題?」と思ったけれど微妙に違う。 しかし、「持っている硬貨の金額合計−払う金額」を超えない最大硬貨の組み合わせと考えるとナップサック問題になる。 ナップサック問題の解法はネットにいくらでもあるし楽勝楽勝。と思っていた・・が。 よく見かける動的計画法を使ったアルゴリズムは同じ硬貨を何枚でも使っていい場合のみ適用できるので、この問題では使えない。 その他は遺伝的アルゴリズムとか必ずしも最適解を出すとは限らないものばかり。

    ナップサック問題? - nidoの雑記
  • Subversion対応マクロ(update) - nidoの雑記

    Subversionのファイル管理のために、わざわざEclipseを立ち上げるってのも何か間違ってる気がする。 ファイル管理はファイラーの役目、ってことでSubversion対応のマクロを少しずつ作ってみる。 まずはupdateから。 外部コマンドのsvnを呼んでるので、Windowsならsvn.exeにパスが通っている必要がある。 ダイアログを作るのにgroovyのSwingBuilderを使ったけど、これはいい!! コンポーネントの関係が見やすいしレイアウトしやすい。 Swingを使うのは初めて(awtもほとんど忘れた)なので、希望のレイアウト(BoxLayout)を探すのにちょっと手間取ったけど。 import javax.swing.BoxLayout import com.nullfish.app.jfd2.ext_command.CommandExecuter dlg=new

    Subversion対応マクロ(update) - nidoの雑記
    fumokmm
    fumokmm 2010/05/15
    SwingBuilderのサンプルコード。