15
関数クリップボード:貼り付け
この課題は、2018年5月の「Language of the Month」イベントの一部として、MATL言語の機能の一部に関連しています。 関連する課題: 関数クリップボード:コピー。 前書き MATLの関数クリップボードは、通常の入力取得関数への最新の4つの呼び出しへの入力を保存(「コピー」)します。通常の関数は、MATLで最も一般的なタイプの関数です。入力取得とは、関数が少なくとも1つの入力を取得することを意味します。保存されたクリップボードの内容は、スタックにプッシュできます(「貼り付け」)。 このチャレンジは、クリップボードの内容を入力として受け取ります。そのクリップボード状態を生成したすべての関数は、入力として1つ以上の正の整数をとったと想定されます。したがって、クリップボードの状態は、数字のリストのリストで表すことができます。(クリップボードへの実際の入力方法の詳細については、関連するチャレンジを参照してください。ただし、現在のチャレンジには必要ありません)。 クリップボードの内容を解釈する 例1 最初の内側のリストにはを参照し、最新したがって、クリップボードの状態なので、上の関数呼び出し、および [[11, 28], [12, 16], [4], [5, 6]] は、最後の関数呼び出しが2つの入力を受け取ったこと11を28示します。最後から2番目の呼び出しは、入力を取りました12、16。など(このクリップボードの状態は、関連するチャレンジの最初の例のコードによって生成されます)。 例2 十分な関数呼び出しがなかった場合、クリップボードの末尾の内部リストは空になります。 [[7, 5], [], [], []] (これは、単に7およびを追加するプログラムによって作成されます5)。 例3 関数呼び出しには任意の数の入力を含めることができますが、少なくとも少なくとも1(入力を受け取らない関数はクリップボードの状態を変更しません)。したがって、次のことも可能です。 [[3], [2, 40, 34], [7, 8, 15], []] クリップボードの内容にアクセスする 関数クリップボードの内容は、MATLの関数M(ちなみに通常の関数ではなく、クリップボード関数)を使用してスタックにプッシュされます。この関数は、入力として正の整数を受け取り、次のようにクリップボードの内容の一部をスタックにプッシュします。例1のクリップボードの状態を参照してください: [[11, 28], [12, 16], [4], [5, 6]] 1Mすべての入力を最新の関数呼び出しに返します。そう考える例えば、それができます11、28。 同様に2M、3Mおよびは、4M最新の2番目、3番目、4番目の関数呼び出しにすべての入力を返します。そう2Mなります12、16。3M与える4; そして、4Mなります5、6。 …