Googleスプレッドシートで仮想マシンを作成する方法

この記事の著者は、Googleテーブルを使用してフィボナッチ数を生成する仮想マシンを作成する方法を説明しています。



最近、Google DocsにはApps Scriptと呼ばれるかなりフル機能のスクリプトシステムがあることに気付きました。 JavaScriptで非常に便利なものを作成できます。





当然、このため、私は何か面白いものを作成する必要がありました。 ここでは、 フィボナッチ数を生成するGoogleスプレッドシートの仮想マシンを見てください。



画像



彼女はどのように働いていますか



VMには、0〜99の番号が付けられた100セルのメモリ領域があります。各セルには、コマンドまたは整数値を含めることができます。



また、メモリ領域の下部から開始して成長するスタックもあります。

これは、空の場合のVMシートの外観です。



画像



次のことに注意してください。





コマンドを実行するために、AppsスクリプトはバックグラウンドでRI値をチェックして、次に実行するコマンドを確認します。 彼女は、RIが指すセル内のコマンドを読み取り、分析します。



メモリとレジスタ間でデータを移動したり、スタックを制御したり、条件付きコマンドを実行したりするためのコマンドがあります。



コマンドを実行すると、RIの値が増加してメモリ内の次のセルを示します。



使用する



VMを制御するために使用されるいくつかの機能を備えた「コンピューター」と呼ばれる特別なメニューがあります。



画像





チーム



いくつかの実装されたコマンドがあります:



全般





数学





スタック操作





遷移と条件付きコマンド





機能





その他





アドレス指定方法



上記のコマンドのオペランドには、いくつかの形式があります。



即値は、コマンドに組み込まれたリテラル値です。 例:7および123。 たとえば、値7をraレジスタにコピーするには:



mov ra 7
      
      





レジスタは、名前でレジスタを参照します。 例:ra、rb、rc。 rcからrbに値をコピーするには:



 mov rb rc
      
      





メモリは、メモリ領域のセル内の値を指します。 例:0ドル、10ドル、99ドル。 raから最初のメモリ位置に値をコピーするには:



 mov $0 ra
      
      





最後のメモリ位置からrdに値をコピーするには:



 mov rd $99
      
      





間接は、メモリロケーションが指す値を指します。 例:@ 15、@ 50。 したがって、メモリロケーション10に値20が含まれ、メモリロケーション20に値30が含まれる場合、次のように値30をraにコピーできます。



 mov ra @10
      
      





メモリセル10をチェックして値20を見つけます。次に、メモリセル20に移動して値30を見つけ、その値をraにコピーします。



再帰



stackおよびcallおよびretコマンドを使用して、再帰呼び出しを行うことができます。 次に、再帰を使用して数値5の階乗を生成する例を示します。



画像



jl ra 2 50で始まるコードは、raの入力値を受け取り、結果をrdで返す関数です。 自身を再帰的に呼び出して、raの値の階乗を計算します。



コピーの入手方法



自分で試してみたい場合は、 ここでコピーを作成できます



「ツール」、「スクリプトエディター」の順に選択すると、Appsスクリプトコードを表示できます。



画像



All Articles