さらにn本のスタックに拡張

クラウド・コンピューティングの本質は、好きなタイミングでスケールアウトできるスケーラビリティにある。というわけで、Croudでもスタックの数を2本に限定するのではなく、起動時にn本にまで自由に設定できる拡張を考えてみた。

class NStack
  
  def initialize(n)
    @stc = []
    n.times do
      @stc << []
    end
    @cur = 0
  end

  def fwd
    if @cur < @stc.size - 1
      @cur += 1
    else
      @cur = 0
    end
  end

  def bwd
    if @cur > 0
      @cur -= 1
    else
      @cur = @stc.size - 1
    end
  end

  def stc
    @stc[@cur]
  end

  def switch
    tmp = @stc[@cur]
    @stc[@cur] = @stc[@cur + 1]
    @stc[@cur + 1] = tmp
  end
end

n=2のときに、下位互換性は保たれる。

ハノイの塔を解こうと思ったら、スタックが3本+1本あるといいような気がしたのでやってみたけど、どっちにしてもスタックマシンで意味のあるプログラムを書くのは、かなり難しいことじゃないかという予感。

nを十分に大きくすると、これは明らかにチューリングマシンと同等以上になる。つまり、きっとこれで、現実的な意味においてCroudもチューリングコンプリートだ。ほんまかいな。