首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >功能剪贴板:粘贴

功能剪贴板:粘贴
EN

Code Golf用户
提问于 2018-05-20 17:15:50
回答 10查看 1.8K关注 0票数 20

作为2018年5月事件的一部分,这个挑战与MATL语言的一些特性有关。相关挑战:功能剪贴板:复制

Introduction

MATL的功能剪贴板存储(“副本”)输入的四个最近调用正常的,输入-接受功能。正规函数是MATL中最常见的函数类型。输入-接受意味着该函数至少接受一个输入。存储的剪贴板内容可以推送到堆栈上(“粘贴”)。

此挑战将以剪贴板内容作为输入。假设所有产生剪贴板状态的函数都以一个或多个正整数作为输入。所以剪贴板状态可以用一个数字列表来表示。(有关剪贴板实际填充的更多信息,请参见相关的挑战;但这对于当前的挑战并不是必要的)。

解释剪贴板内容

示例1

第一个内部列表引用最近的函数调用,等等,因此是剪贴板状态。

代码语言:javascript
运行
复制
[[11, 28], [12, 16], [4], [5, 6]]

指示最后一个函数调用接受两个输入,即1128;第二次-最后一次调用接受输入1216;等等(此剪贴板状态由相关挑战的第一个示例中的代码生成)。

示例2

如果没有足够的函数调用,剪贴板中的一些跟踪内部列表将为空:

代码语言:javascript
运行
复制
[[7, 5], [], [], []]

(这是由一个简单添加75的程序产生的)。

示例3

函数调用可以有任意数量的输入,但至少始终是1 (不接受输入的函数不会更改剪贴板状态)。因此,以下也是可能的。

代码语言:javascript
运行
复制
[[3], [2, 40, 34], [7, 8, 15], []]

访问剪贴板内容的

函数剪贴板的内容使用MATL的函数M (顺便说一下,它不是正常函数,而是剪贴板函数)推到堆栈上。此函数以一个正整数作为输入,并将一些剪贴板内容推到堆栈上,如下所示。引用示例1中的剪贴板状态:

代码语言:javascript
运行
复制
[[11, 28], [12, 16], [4], [5, 6]]
  • 1M将所有输入返回到最近的函数调用。因此,作为考虑的例子,它给出了1128
  • 类似地,2M3M4M将所有输入返回到第二、第三和第四个最近的函数调用。所以2M12163M44M56
  • 4以外的数字选择单个输入,以便调用多个输入的函数。因此,5M向最近的此类调用返回最后一个输入。在我们的例子中,这给了286M返回前面的单个输入,即117M返回第二次调用的最后一个输入,即168M给出12。现在,9M给了6。注意如何跳过输入4,因为它是函数调用中的唯一输入。最后,10M给出了5

对于示例3中的剪贴板状态:

代码语言:javascript
运行
复制
[[3], [2, 40, 34], [7, 8, 15], []]
  • 1M给了32M给了240343M给了7815
  • 4M有未定义的行为(出于这个挑战的目的),因为只有三个函数调用。
  • 5M给了346M给了407M给了28M给了159M810M7
  • 11M12M,。也有不明确的行为。

挑战

输入

  • 剪贴板状态,作为列表,或任何其他合理的格式;
  • 正整数n

输出:以n作为输入调用函数M的结果。输出将是一个或多个带有明确分隔符的数字,或以任何合理的格式(如列表或数组)。

澄清:

  • 剪贴板状态由四个数字列表组成。有些尾随列表可能是空的,如示例2和3所示。如果喜欢,可以输入剪贴板,而不需要后面的空列表。因此,示例3将成为[[3], [2, 40, 34], [7, 8, 15]]
  • 剪贴板中的所有数字都是正整数,可能有一个以上的数字。
  • 数字n保证是有效的。因此,上面的例子3,n不能是411

其他规则:

测试用例

代码语言:javascript
运行
复制
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
EN

回答 10

Code Golf用户

回答已采纳

发布于 2018-05-20 17:27:17

果冻,8字节

代码语言:javascript
运行
复制
ḊƇUẎ⁸;⁹ị

在网上试试!

票数 3
EN

Code Golf用户

发布于 2018-05-20 18:13:45

Dyalog Unicode,17 字节数

代码语言:javascript
运行
复制
{⍺⊃⍵⍪∊⊖¨⍵⌿⍨1<≢¨⍵}

在网上试试!

票数 3
EN

Code Golf用户

发布于 2018-05-20 19:26:39

JavaScript (Node.js),57字节

代码语言:javascript
运行
复制
a=>n=>a.map(e=>e[1]&&a.push(...[...e].reverse()))&&a[n-1]

在网上试试!

这是一个匿名的咖喱功能。用( function code )(clipboard)(n)运行它

解释

代码语言:javascript
运行
复制
a=>n=>{
    // The strategy is to append the individual clipboard inputs to the end of a,
    // after the function calls (lists). We then return a[n-1] to offset JavaScript's
    // zero indexing.
    a.map(e=>{
        e[1]&& // if this list has more than one element...
            a.push(...[...e].reverse()) // add each element to a, in reverse order.
            // reverse() modifies the original array, so we have to use [...e] to "clone" e
    })
    return a[n-1]
}
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/165144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档