Kei Minagawa's Blog

皆川圭(@keimina)のブログ、Pythonで試したことを書いていきます

備忘録、Raspberry Piにシリアル接続する方法

1年くらいに購入したラズベリーパイMacでシリアル接続してみた。
結果、Arduino書き込みのために購入した、USB-シリアル変換ケーブルでシリアル接続できた。
配線は以下のとおり。

f:id:keimina:20160514174754j:plain
※ラズパイが3.3VなのでUSB-シリアル変換ケーブルも3.3Vに合わせる。

この状態で以下のコマンドを実行。
f:id:keimina:20160514184643p:plain

idとパスワードを入力
f:id:keimina:20160514184640p:plain

以上。

再帰を走らせた時の道筋

再帰を走らせた時の道筋が知りたくなったため、考察してみました。
具体的には、以下のPythonコードで表される再帰を考えます。

# -*- coding: utf-8 -*-
def recShow(n):
    if n == 5:
        return
    else:
        recShow(n + 1)
        recShow(n + 1)

recShow(1)

これが、どのような道筋をたどるのかを知りたかったため、
試行錯誤し、以下のようにしてみました。

# -*- coding: utf-8 -*-
def recShow(n, lst):
    if n == 5:
        lst.append("ret")
        return
    else:
        newlst = lst[:]
        newlst.append("a%d"%n)
        recShow(n + 1, newlst)
        newlst.append("b%d"%n)
        recShow(n + 1, newlst)
        print newlst
        
print ""
lst = []
recShow(1, lst)

出力は以下のようになります。

['a1', 'a2', 'a3', 'a4', 'ret', 'b4', 'ret']
['a1', 'a2', 'a3', 'b3', 'a4', 'ret', 'b4', 'ret']
['a1', 'a2', 'a3', 'b3']
['a1', 'a2', 'b2', 'a3', 'a4', 'ret', 'b4', 'ret']
['a1', 'a2', 'b2', 'a3', 'b3', 'a4', 'ret', 'b4', 'ret']
['a1', 'a2', 'b2', 'a3', 'b3']
['a1', 'a2', 'b2']
['a1', 'b1', 'a2', 'a3', 'a4', 'ret', 'b4', 'ret']
['a1', 'b1', 'a2', 'a3', 'b3', 'a4', 'ret', 'b4', 'ret']
['a1', 'b1', 'a2', 'a3', 'b3']
['a1', 'b1', 'a2', 'b2', 'a3', 'a4', 'ret', 'b4', 'ret']
['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'ret', 'b4', 'ret']
['a1', 'b1', 'a2', 'b2', 'a3', 'b3']
['a1', 'b1', 'a2', 'b2']
['a1', 'b1']

最深層まで行ったら戻って、また行けるところまでいくというようなイメージはつかめました。
あと、aの次はb、そのbの次はa、というような、グローバルな視点で眺めるとaとbを行き交うことがわかりました。

絶対解けるマインスイーパのようなパズル「宝探し」の6x6の問題を作成した

表題の通り、「宝探し」の6x6をつくりました。頭の体操にどうぞ。

      2    
  2        
  4     2  
    2 3    
  4 2 3   3
  2     2 1
2 3       2
           
3     3 1  
2 3        
  3 2 1    
2     1    
    2      
2          
        2  
3   3   3 2
2 3   3   1
1     2    
    1 1 2  
    1 2    
2   3     2
  2     2  
           
2   3   2  
  2        
2   3 3 2  
  3     3  
  4     2  
2   2      
1   2      
      2    
      3    
2     2    
  3 3 4   2
  3 2      
  2   3 2  
    2 2    
    4   4  
    4      
2 2 3 4 4  
    2      
  2 2      
    2 3   3
3 4 4      
        3 2
2         2
  2        
2         2
    1 1    
2 3        
      2 3 3
4   5 5    
          3
2     4    
  2 2      
      4   2
3       3  
2     2    
2         1
1 1       1
2 2     2  
      3   3
          3
  2   4    
  3        
1 2   3 2  
2         2
3     2 3  
2          
2 4        
          2
2   2 2   2
  2       2
  2   3   3
3   2 3   3
      4 3  
        3  
      2    
    2 2   2
  2 2   3  
2 3        
1          
1 2   2    
    1      
    2 2   3
2     4    
  2       2
    4 4 3 2
      2    
  2        
1 2 2     2
  4        
    3   4 3
    4   3  
2   3      
2          
  2 2 2    
3          
  2   2   1
    1 2    
2   1 2    
      2    
        2 2
    2 4    
           
1 2     2  
1 2 2 3   2
1          
    2     2
    3 3   2
      3   2
           
  2 2     1
1 1 2      
1   2      
        2  
  4 2 3    
2   2 4    
2 4       2
1          
2 2   2   2
          4
           
  2 3 3 4  
1       2  
  1   3    
    2   2 1
           
      4 3  
        3  
  2       2
1 2 2 3 2  

必ず解けるマインスイーパのようなパズル「宝探し」の5x5の問題

絶対解けるマインスイーパのようなパズル「宝探し」の5x5の問題です。暇つぶしにどうぞ。

      1 1
        2
      3  
1   1    
  2      
         
1 2 2 2  
1 1 3    
         
         
  1   2 2
    3    
      2  
    1 1  
         
    1    
    2    
1   3 2  
  2      
1        
    1 1  
    2    
    2 3 2
  2      
         
    1   1
      2  
         
    1   1
      1 1
1 2 1    
      1  
         
      1  
      1 1
         
    1 1  
1 1 3   3
1        
         
1        
         
2     1  
         
2 3 2 2  
         
        1
      2 1
    1 2 2
1        
1   2    
2     1  
  1      
1 2      
         
    1 2 2
         
         
  1   1  
1   2    
    1    
2        
  1 2    
1        
  2 3    
         
         
1     1  
1 2      
  1 2    
        1
         
    1 3  
1   2    
    2 1  

必ず解けるマインスイーパのようなパズル「宝探し」の4x4の問題ができた

「宝探し」パズルの4x4ができたので問題提供します(10問)。みなさんとけますか。ルールは「マスの数字の周りにその数字の数だけ宝がある、宝のある場所を◯で埋めなさい」です。言いかえると絶対解けるマインスイーパです。それだけですが、以外に面白いと思います。ただし、2,3手先読めば解ける問題もそれ以上先読みが必要な問題もあるのでやさしくはないかもしれません。

1   1  
  2   2
2   2  
    2  
       
1 2 2  
2     2
2     2
    1 1
2   3  
  2    
  2 2  
  1    
2     1
1      
1 2   2
    1 1
      2
1 3    
1   2  
  1    
2 2 2  
2   2  
    1  
    1 1
      2
  2    
1 1 1  
    1 1
    2  
1   2  
  1   1
1   2  
2   4  
    2  
1 1    
1      
2     1
  3   2
  2   1

必ず解けるマインスイーパのようなパズル「宝探し」について考える

「頭がよくなる算数パズル」という本に、「宝探し」というパズルがのっていました。このパズルは解き方はマインスイーパのような感じなのですが、マインスイーパは絶対解けるとは限りませんが、このパズルは絶対解けるらしいです。早速購入してやってみたところ、マインスイーパに近い感じですが、妙に論理力を要求されます。そしてマスを数えるだけの単純な作業が意外に楽しいことに気づきました。「数独」の次は「宝探し」かなと考えて早速プログラミングです。どうやら、数字と宝を矛盾なく置くところまではできたようですがそこから先がよくわかりませんでした。どうやって作ってるのだろう、、、これから先が難しいようです。とりあえず寝て考えることにします。

 

 

初期配置が対称になっている数独は本当に良い数独問題なのか?

パズル作家の間では数独の初期配置はきれいな対称になっているものが良いとされているらしい。私は、パズル初心者だし、パズル作家というものは最近知ったキーワードなんだが、そのような職業もあるらしく、そのような人の間では、数独の問題は対称で美しくなければならないのだそうである。個人的には、数独は対称で、かつわかりやすい形でなくてはならないという考え方には反対なのである。わたしは、数独は汚くてランダムであればあるほどよいという考え方なのである。(注意:私は数独初心者です。解いた問題数は6x6で10問くらいです。9x9に至っては解いたことがありません。そのくらい初心者の意見なのであまり参考にならないかもしれません)

 

なぜか

 

数値の入る場所を決めてから数独をつくるのは、初期配置の数値の場所を決めることがかなり強い制約なので、簡単に問題を作成することができてしまうのである。たとえば、ハート型の初期配置にしたければハートの初期配置の形にそって数値の順番を変えるだけなので、プログラム的にはそんなに難しいことではないのである。ただ、星形や四角形など人間がみて綺麗に見えるパターンを大量に作成するのは難しい気がするが。

 

それに、対称でない問題は汚く見えるからボツという考え方、そのものが意味を成していないのではないかとも思っています。なぜなら、対称でない問題のほうが多いと思うからです。すなわち母数が多ければそれだけ面白い問題も多いにきまってますよね。だから、母数の多い汚い問題を捨てるのはもったいないどころか、そこでしか出会えない問題もあるだろうから、パズルにさらに制約をかけて面白くない方向に力をかけているように思えるのです。

 

わたしには、プログラムで簡単に問題が作成できてしまう問題は、どうしても良い問題とは思えないのです。なにか、複雑なことをやってでてきた問題だけが良い問題な気がします。

 

もちろん、人間が熟考して作った数独問題が最高の問題だとはおもいます。

 

以上