僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
適当に検索して適当に試してみた。
sqlite> select * from ggroup; id name numb ---- ------------- ---- 1 foo 100 2 foo 200 3 bar 20 4 baz 210 5 bar 35 6 baz 10 7 baz 25
sqlite> select name, sum(number) ...> from ggroup ...> group by name ...> order by id; name sum(number) ---- ------------- foo 300 bar 55 baz 245
EightQueensもう少し。
手詰まりになったら最初からやり直し、で
どのくらい失敗を繰り返すのか
見えるように
してみた。
何回か試して、非効率を痛感する。
一回で完了する場合もなくはないが、大抵
数回以上は
失敗している。10回以上になることもまま
あった。
$ python watch_try_and_error.py Eight Queen Start! [[7, 0]] [[7, 0], [1, 1]] [[7, 0], [1, 1], [3, 2]] [[7, 0], [1, 1], [3, 2], [6, 3]] [[7, 0], [1, 1], [3, 2], [6, 3], [2, 4]] 1 Times Fault! [[3, 0]] [[3, 0], [1, 1]] [[3, 0], [1, 1], [4, 2]] [[3, 0], [1, 1], [4, 2], [2, 3]] [[3, 0], [1, 1], [4, 2], [2, 3], [5, 4]] 2 Times Fault! [[6, 0]] [[6, 0], [1, 1]] [[6, 0], [1, 1], [3, 2]] [[6, 0], [1, 1], [3, 2], [0, 3]] [[6, 0], [1, 1], [3, 2], [0, 3], [7, 4]] [[6, 0], [1, 1], [3, 2], [0, 3], [7, 4], [4, 5]] [[6, 0], [1, 1], [3, 2], [0, 3], [7, 4], [4, 5], [2, 6]] After 2 times Fault, Now Success! [[6, 0], [1, 1], [3, 2], [0, 3], [7, 4], [4, 5], [2, 6], [5, 7]]
モンテカルロ法らしいものを使って
EightQueensを再実装してみた。
y座標を8つ、ランダムな順序で(つまりダブらない)x座標と組み合わせて8つの位置を
設定し、互いに効いてないことを確認するだけ。
もちろん効いていたら破棄してやりなおし。
スクリプトはコンパクト(現時点で合計47行)にできたが、 失敗回数がひどい(稀には10回未満だったりするが)。
$ python monte_8q.py 204 Times Fault and Success [[0, 2], [1, 4], [2, 1], [3, 7], [4, 0], [5, 6], [6, 3], [7, 5]] $ python monte_8q.py 573 Times Fault and Success [[0, 4], [1, 1], [2, 3], [3, 5], [4, 7], [5, 2], [6, 0], [7, 6]] $ python monte_8q.py 447 Times Fault and Success [[0, 0], [1, 5], [2, 7], [3, 2], [4, 6], [5, 3], [6, 1], [7, 4]] $ python monte_8q.py 34 Times Fault and Success [[0, 4], [1, 1], [2, 3], [3, 5], [4, 7], [5, 2], [6, 0], [7, 6]] $ python monte_8q.py 977 Times Fault and Success [[0, 1], [1, 6], [2, 4], [3, 7], [4, 0], [5, 3], [6, 5], [7, 2]]
x座標もランダムに、あるいはダブるか否かお構いなくランダムにしたら どうなることか。
と思って、0-7の任意の数字をx, y座標に入れて8組作り、あってるかどうか
確認するだけの
スクリプトも書いてみた。
もっとも、10分くらいまわしても終わらない。
そのためちゃんと動作するのか
確認できていない。
Cで書きなおしたほうがよさそう。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。