トップ «前の日記(2006-07-01) 最新 後の日記(2006-07-06)» 編集

日記

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|

2006-07-02

_ 引き続き BrainF**k. 昨日の問題を解消した、はず。ポインタの移動が増えたのだが、なんか無駄なことをしているような気もする。 (BF を書いていること自体が無駄というつっこみはなし) ループの後で ['A'..'Z'] か否かでポインタの位置がひとつ違うのだが、それを調整するために [0] = 1 を置いておく。 [1] には ['A'..'Z'] 以外のときに -1 のフラグがたつ。[2] は常に 0 で [3] が入出力場所、 [4] はメインの多重ループ時の補助変数。

+>>>,+[-
  --------
  --------
  --------
  --------
  --------
  --------
  --------
  --------
  - # 'A' = 65 を引く
  [-[-[-[-[-[-[-[-
    [-[-[-[-[-[-[-[-
      [-[-[-[-[-[-[-[-
        [-[ # ゼロになるまで引いていく
          <<-> # [1] = -1
        ]>+<] # 引いた分を [4] に戻す
      >+<]>+<]>+<]>+<]>+<]>+<]>+<]>+<]
    >+<]>+<]>+<]>+<]>+<]>+<]>+<]>+<]
  >+<]>+<]>+<]>+<]>+<]>+<]>+<]>+<]
  -[+<-]+ # ポインタを左端に
  >+[->>++++++++++++++++++++++++++++++++<<] # ['A'..'Z'] のときに +32
  >>>[-<+>]< # ループで [4] に移った分を [3] に戻す
  ++++++++
  ++++++++
  ++++++++
  ++++++++
  ++++++++
  ++++++++
  ++++++++
  ++++++++
  + # 'A'
  .,+
]

_ [] も移動量によらず一命令として、 'A' で 203 命令、 'Z' で 528 命令、その他は 340 命令。

お名前:
E-mail:
コメント:

投稿する前にチェックボックスをチェックして下さい