この課題は、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
。 - 複数の入力を必要とする関数呼び出しへの個々の入力を
4
選択する以上の数。したがって、最新のそのような呼び出しに最後の入力を返します。私たちの場合、これはを与えます。は、前の個々の入力を返します。であり、第二の最後の呼び出しの最後の入力を返し、となりますが。今、与える。入力方法に注意してください5M
28
6M
11
7M
16
8M
12
9M
6
4
が関数呼び出しの唯一の入力であったため、がスキップされる。最後に、10M
を与え5
ます。
例3のクリップボード状態の場合:
[[3], [2, 40, 34], [7, 8, 15], []]
1M
与える3
。2M
与え2
、40
、34
。3M
与え7
、8
、15
。4M
持っている 未定義の動作のみ3回の関数の呼び出しがあったので、(この課題の目的のために)。5M
与える34
。6M
与える40
。7M
与える2
。8M
与える15
。9M
与える8
、10M
与える7
。11M
、12M
、...も持っている未定義の動作を。
チャレンジ
入力:
- リストのリストとしてのクリップボードの状態、またはその他の妥当な形式。
- 正の整数n。
出力:nを入力として関数M
を呼び出した結果。出力は、明確な区切り記号が付いた1つまたは複数の数字、またはリストや配列などの適切な形式になります。
明確化:
- クリップボードの状態は、4つの数字のリストで構成されています。例2および3のように、末尾のリストの一部は空の場合があります。必要に応じて、末尾の空のリストなしでクリップボードを入力できます。したがって、例3はになり
[[3], [2, 40, 34], [7, 8, 15]]
ます。 - クリップボード内のすべての数値は正の整数で、場合によっては複数の数字が含まれます。
- 番号nは有効であることが保証されています。したがって、上記の例3では、またはに
n
することはできません。4
11
追加のルール:
入出力は合理的な手段で取ることができます。
プログラムまたは機能は、 プログラミング言語ます。標準的な抜け穴は禁止されています。
バイト単位の最短コードが優先されます。
テストケース
Clipboard state
Number
Output(s)
[[11, 28], [12, 16], [4], []]
2
12, 16
[[11, 28], [12, 16], [4], []]
5
28
[[7, 144], [12], [4, 8], [3, 4, 6]]
1
7, 144
[[7, 144], [12], [4, 8], [3, 4, 6]]
10
4
[[30], [40], [50, 60], [70, 80, 90]]
2
40
[[30], [40], [50, 60], [80, 90]]
7
90
[[15], [30], [2, 3, 5], [4, 5, 10]]
3
2, 3, 5
[[15], [30], [2, 3, 5], [4, 5, 10]]
7
2