さらに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もチューリングコンプリートだ。ほんまかいな。