首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >评估第9次超手术

评估第9次超手术
EN

Code Golf用户
提问于 2013-04-27 14:42:26
回答 6查看 2.7K关注 0票数 16

我意识到这有点像数学,但是-就这样吧。

在数学中,超运算序列是一个无限的算术运算序列(称为超运算),它从后继的一元运算开始,然后继续进行加法、乘法和幂运算的二进制运算,然后利用右结合性进一步进行超越指数运算的二进制运算。

您的目标是编写一个程序,该程序以三个整数x、y和n作为输入,并输出x和y上第n次超运算的结果。

例如。

1 1 1输出2

2 4 4输出65536

3 3 4输出7625597484987

  • 程序必须用最短的代码来编写。
  • 您可以从STDIN或文件中获取输入。
  • 不允许使用库函数。
  • 输入约束:n将是≥1。

http://en.wikipedia.org/wiki/Tetration有一个很好的解释,以防你无法理解这件事。

EN

回答 6

Code Golf用户

发布于 2013-04-30 01:26:15

APL,62

代码语言:javascript
运行
复制
{1=3⌷⍵:2⌷+\⍵⋄0=2⌷⍵:(⍵[3]⌊3)⌷⍵[1],0,1⋄∇⍵[1],(∇⍵-0 1 0),3⌷⍵-1}⎕

{...}⎕:接受求值输入(空格分隔的数字计算为数字数组),并对其应用函数。

1=3⌷⍵::如果n等于1.

2⌷+\⍵:返回前两个元素的和(x+y).

⋄0=2⌷⍵::否则如果y等于0.

(⍵[3]⌊3)⌷⍵[1],0,1:创建数字数组x,0,1和返回索引min(n,3).

⋄∇⍵[1],(∇⍵-0 1 0),3⌷⍵-1:否则返回∇(x,∇(x,y-1,n),n-1)。(∇是自引用的)

我有一个“超级提升者”操作符,它接受一个函数并返回下一个超运算。

代码语言:javascript
运行
复制
{⍺⍺/⊃⍴/⌽⍵}

例如,+{⍺⍺/⊃⍴/⌽⍵}将是乘法函数,+{⍺⍺/⊃⍴/⌽⍵}5 3输出为15。

但无法让它恢复正常。也许其他人能做到。

票数 6
EN

Code Golf用户

发布于 2021-09-28 04:56:16

果冻,15字节

代码语言:javascript
运行
复制
ṛ+⁵ðx’ß@ƒ>2¥ðỊ?

在网上试试!

用果冻编写一个三参数程序是很困难的,不过至少我们只需要在这个问题上使用其中的一个。因此,这个程序按照n y x的顺序接受三个参数,并作为一个并进函数进行递归。大概是这个Ackermann解用户APL应答的混合体。

是如何工作的

代码语言:javascript
运行
复制
ṛ+⁵ðx’ß@ƒ>2¥ðỊ?    Main program as a dyadic link.
                   Left = n, Right = y, 3rd arg (⁵) = x
A..ðB.......ðC?    If C then A else B
             Ị     If n <= 1
ṛ+⁵                Then y + x
    x’ß@ƒ>2¥       Else...
    x’             y copies of n-1
      ß@ƒ>2        Reduce with the program itself flipped, with
                   the default value being n>2 (1 or 0)
票数 3
EN

Code Golf用户

发布于 2013-04-27 21:10:35

Python,83

(基于弗朗雷克的回答)

代码语言:javascript
运行
复制
def h(x,y,n):r=n>2;exec"r=h(x,r,n-1);"*y*(n>1);return(x+y,r)[n>1]
print h(*input())

对于大的结果来说非常缓慢。

对于2, 4, 4,输出是65536

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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