15
功能剪贴板:粘贴
作为2018年5月每月语言活动的一部分,此挑战与MATL语言的某些功能有关。 相关挑战: 功能剪贴板:复制。 介绍 MATL的功能剪贴板将输入(存储到“副本”)存储到最近四个对常规输入函数的调用中。普通函数是MATL中最常见的函数类型。输入接受是指该功能至少接受一个输入。可以将存储的剪贴板内容推入堆栈(“粘贴”)。 此挑战将剪贴板内容作为输入。将假定所有产生剪贴板状态的函数都将一个或多个正整数作为输入。因此剪贴板状态可以用数字列表来表示。(有关如何实际填充剪贴板的更多信息,请参见相关挑战;但这对于当前挑战不是必需的)。 解释剪贴板内容 例子1 第一个内部列表引用最近的函数调用,依此类推,因此剪贴板状态 [[11, 28], [12, 16], [4], [5, 6]] 表示最后的函数调用了两个输入,即11,28; 倒数第二个电话花了投入12,16; 等等(此剪贴板状态由相关挑战的第一个示例中的代码产生)。 例子2 如果没有足够的函数调用,剪贴板中的某些尾部内部列表将为空: [[7, 5], [], [], []] (这是由一个简单地添加7和的程序产生的5)。 例子3 函数调用可以具有任意数量的input,但至少可以是所有输入1(不接受任何输入的函数不会更改剪贴板状态)。因此,以下也是可能的。 [[3], [2, 40, 34], [7, 8, 15], []] 访问剪贴板内容 使用MATL的功能M(顺便说一句,它不是普通功能,而是剪贴板功能)将功能剪贴板的内容压入堆栈。此函数将一个正整数作为输入,并将某些剪贴板内容压入堆栈,如下所示。参考示例1中的剪贴板状态: [[11, 28], [12, 16], [4], [5, 6]] 1M将所有输入返回到最近的函数调用。因此,对于所讨论的例子,它给11,28。 同样,2M,3M和4M所有输入返回到第二,第三和第四最近的函数调用。所以2M给人12,16; 3M给4; 并4M给出了5,6。 …