トップ «前の日記(2015-07-07(Tue)) 最新 次の日記(2015-07-09(Thu))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2015-07-08(Wed) 多分降り続いてた

ランダムEightQueens

メモリ6GBのCore i7(1.6GHz)にて9時間動かしても、 faultばかりが何万回だか何十万回だか何百万回だか続いて、 終わるまで待つ気になれなかった。
top(1)で見ると、当該スクリプトでCPU%は98前後..

で、スクリプトを一箇所書き換えて、Queenの数を4つに、盤面 を4x4に制限してみた。

$ time python at_random.py
.
.
.
590 Times Fault
591 Times Fault
592 Times Fault
592 Times Fault and Success
[[2, 0], [1, 3], [3, 2], [0, 1]]
 
real    0m2.898s
user    0m2.056s
sys     0m0.840s

この場合は比較的早く出たが、

3927 Times Fault and Success
[[3, 2], [1, 3], [0, 1], [2, 0]]
 
real    0m19.259s
user    0m13.580s
sys     0m5.676s

のようなこともあった。
統計までは取らなかったが、大体一千回近く 失敗するようだ。
スクリプト自体に無限ループのような間違いは ないみたいだけど。

4x4の他、5x5もわりと簡単にできた。
しかし、6x6は10分あまり、8万回以上失敗してもダメだった。

前の スクリプト(これも 一箇所 複数に対応) で試すと、6x6のパターンは一種類(ひっくり返したり裏返したりを重複と見做せば) しかなさげ。

$ python eq2.py 
   0 1 2 3 4 5
0 | |♕| | | | |
1 | | | |♕| | |
2 | | | | | |♕|
3 |♕| | | | | |
4 | | |♕| | | |
5 | | | | |♕| |

ちなみに5x5は二種類ある模様。

$ python eq2.py 
   0 1 2 3 4
0 | | |♕| | |
1 |♕| | | | |
2 | | | |♕| |
3 | |♕| | | |
4 | | | | |♕|
 
$ python eq2.py 
   0 1 2 3 4
0 | |♕| | | |
1 | | | | |♕|
2 | | |♕| | |
3 |♕| | | | |
4 | | | |♕| |

読み込んだ変数に代入して

考えれば当たり前かもしれないが、確認したとしても 忘れてしまっている。

$ cat inc.py
foo = 3
bar = 4
 
def fooprint():
  print 'foo is ', foo
 
def barprint():
  print 'bar is ', bar
$ cat new.py
#!/usr/bin/env python
 
import inc
 
inc.foo = 8
 
inc.fooprint()
inc.barprint()

で実行すると、

$ python new.py 
foo is  8
bar is  4

リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。