我们知道f是具有非负整数系数的多项式。
给定f(1)和f(1 + f(1))返回f。您可以将f输出为系数列表,ASCII格式的多项式或类似形式。
例子:
f(1) f(1+f(1)) f
0 0 0
1 1 1
5 75 2x^2 + 3
30 3904800 4x^4 + 7x^3 + 2x^2 + 8x + 9
1 1073741824 x^30
我们知道f是具有非负整数系数的多项式。
给定f(1)和f(1 + f(1))返回f。您可以将f输出为系数列表,ASCII格式的多项式或类似形式。
例子:
f(1) f(1+f(1)) f
0 0 0
1 1 1
5 75 2x^2 + 3
30 3904800 4x^4 + 7x^3 + 2x^2 + 8x + 9
1 1073741824 x^30
Answers:
‘b@
返回多项式作为系数列表。
由于我们知道多项式具有非负整数系数,因此f(b)可以通过基数的定义解释为“多项式的系数,以b位为底的数字”。这受制于以下条件:所有系数均不超过或等于b,但我们知道,因为b大于系数之和(即f(1))大一。
程序只需将第一个参数(‘
)递增即可获得1 + f(1),然后调用基本转换原子(b
),并将第一个参数作为基数,第二个参数作为数字(@
用于交换参数的顺序,因为b
通常会先取数字,再取底数)。
这是一个相当聪明的挑战。谢谢奥尔普!
感谢郑焕敏节省了1个字节!(具有讽刺意味的是,带有Max
)
#2~IntegerDigits~Max[#+1,2]&
接受两个非负整数并返回(负整数)系数列表的纯函数。#2~IntegerDigits~(#+1)
将与Doorknob的Jelly答案中的算法相同;不幸的是,IntegerDigits
当基数等于1时,Mathematica会窒息,因此需要额外的bytes Max[...,2]
。
a->b->{while(b>0){System.out.println(b%-~a);b/=a+1;}}
输出系数列表。感谢ovs的数学知识。
表达式必须被分配给Function<Integer, IntConsumer>
由第一和称为apply
荷兰国际集团的功能,然后accept
荷兰国际集团的int
。Java 9不需要导入jshell
:
C:\Users\daico>jshell
| Welcome to JShell -- Version 9-ea
| For an introduction type: /help intro
jshell> Function<Integer, IntConsumer> golf =
a->b->{while(b>0){System.out.println(b%-~a);b/=a+1;}}
golf ==> $Lambda$14/13326370@4b9e13df
jshell> golf.apply(30).accept(3904800)
9
8
2
7
4
f(1)
和那里得到答案f(1+f(1))
?