表示为的滴定
a^^b
重复进行幂运算。例如,2^^3
is2^2^2
,即16。
给定两个数字a和b,请打印a^^b
。
测试用例
1 2 -> 1
2 2 -> 4
5 2 -> 3125
3 3 -> 7625597484987
etc.
科学记数法是可以接受的。
请记住,这是code-golf,所以字节数最少的代码将获胜。
3 3 -> 7625597484987
表示为的滴定
a^^b
重复进行幂运算。例如,2^^3
is2^2^2
,即16。
给定两个数字a和b,请打印a^^b
。
1 2 -> 1
2 2 -> 4
5 2 -> 3125
3 3 -> 7625597484987
etc.
科学记数法是可以接受的。
请记住,这是code-golf,所以字节数最少的代码将获胜。
3 3 -> 7625597484987
Answers:
*/⍴
*/⍴ Input: b (LHS), a (RHS)
⍴ Create b copies of a
*/ Reduce from right-to-left using exponentation
lambda a,b:eval('**'.join([a]*b))
这将得出一个未命名的函数,该函数采用数字和数字的字符串表示形式。例如:
>>> f=lambda a,b:eval('**'.join([a]*b))
>>> f('5',2)
3125
>>>
如果混合这样的输入格式不算在内,则还有以下38字节版本:
lambda a,b:eval('**'.join([str(a)]*b))
map{$a=$ARGV[0]**$a}0..$ARGV[1];print$a;
接受两个整数作为函数的输入并输出结果
pop
获取$ARGV[1]
,然后使用"@ARGV"
获取$ARGV[0]
。使用say
代替print
(选项-M5.010
或-E
免费)。但是,仍然ARGV
很长。一个-p
程序几乎总是取胜
d=a=argument0;for(c=1;c<b;c++)d=power(a,d)return d
u^QGE1
(implicit: input a to Q)
1 Start from 1.
u E b times,
^GQ raise the previous number to power a.
nnDI1-[;]N.
nn Read two integers from input
D Pop top of stack and duplicate next element that many times
I1- Push length of stack, minus 1
[ Pop top of stack and repeat for loop that many times
; Pop b, a and push a^b
] Close for loop
N. Output as number and stop.
Seq.fill(_:Int)(_:Double)reduceRight math.pow
取消高尔夫:
(a:Int,b:Double)=>Seq.fill(a)(b).reduceRight(math.pow)
a
用b
元素构建一个序列,然后math.pow
从右到左应用。
double c(int a,int b){return b>0?Math.pow(a,c(a,b-1)):1;}
取消测试代码:
class M{
static double c(int a, int b){
return b > 0
? Math.pow(a, c(a, b-1))
:1;
}
public static void main(String[] a){
System.out.println(c(1, 2));
System.out.println(c(2, 2));
System.out.println(c(5, 2));
System.out.println(c(3, 3));
}
}
输出:
1.0
4.0
3125.0
7.625597484987E12
filter p ($a){[math]::Pow($a,$_)};iex (,$args[0]*$args[1]-join"|p ")
这是我尝试过的三种方法中最短的一种,但是总体上来说并不是那么好。我100%确信有一种更短的方法,但是我尝试过的几件事最终以稍微多一些的字节结尾。
PS C:\++\golf> (1,2),(2,2),(5,2),(3,3) | % {.\sqsq $_[0] $_[1]}
1
4
3125
7625597484987
遗憾的是,Powershell没有内置^
或**
运算符,否则它将是一个干净的32/33字节答案,即
iex (,$args[0]*$args[1]-join"^")
公理70字节
l(a,b)==(local i;i:=1;r:=a;repeat(if i>=b then break;r:=a^r;i:=i+1);r)
少打高尔夫球
l(a,b)==
local i
i:=1;r:=a;repeat(if i>=b then break;r:=a^r;i:=i+1)
r
(3) -> [l(1,2),l(2,2),l(5,2),l(3,3),l(4,3)]
(3)
[1, 4, 3125, 7625597484987,
13407807929942597099574024998205846127479365820592393377723561443721764030_
0735469768018742981669034276900318581864860508537538828119465699464336490_
06084096
]
Type: List PositiveInteger