您将收到一个带有数字的输入和一个中间有空格的字符串。字符串告诉您需要对数字做什么,它可以是:
平方根数
平方数平方
立方体-立方数
abs -数字绝对值
四舍五入的数字
您需要用所有的数据输出计算的最终结果。如果您的语言没有输入,您可以在其中进行硬编码。
你不能使用数学库,即使它是内置的.
在你的语言中,你不会得到比最高的数字或结果更大的数字或结果。
由于上述规则的漏洞,您不能使用只支持1位数的语言。(1和0)
如果您的语言不支持非整数,则需要输出圆整结果。
16平方米=4
25平方英里= 625
3立方= 27
-10个abs =10个
18.38轮= 18轮
因为这是一个代码-高尔夫,最短的答案以字节为单位获胜。
祝好运!
发布于 2016-02-12 14:08:13
(a,b)=>eval('_=>'+'{for(c=1;c*c<a;c++);return c}_a*a_a*a*a_a<0?-a:a_a.toFixed()'.split`_`['tresd'.indexOf(b[b.length-1])])()平方根只适用于四舍五入的数字。15平方米将产生4,我希望这是允许的。重写一个功能齐全的平方根函数感觉有点过火。
解释
(a,b)=> // anonymous function
eval(
'_=>' + // construct an anonymous function to eval
'{for(c=1;c*c<a;c++);return c} // sqrt
_ // seperator
a*a // sqr
_
a*a*a // cube
_
a<0?-a:a // abs
_
a.toFixed()' // round
.split`_` // create an array of functions
[ // select the function to use
'tresd'.indexOf(b[b.length-1]) // get index of input
]
)() // end eval and call the returned function欢迎高尔夫球小贴士
测试用例:
f=
(a,b)=>eval('_=>'+'{for(c=1;c*c<a;c++);return c}_a*a_a*a*a_a<0?-a:a_a.toFixed()'.split`_`['tresd'.indexOf(b[b.length-1])])()
F=(a,b)=>document.body.innerHTML+='<pre>'+a+', '+b+':\n'+f(a,b)+'\n</pre>';
F(16,'sqrt')
F(25,'sqr')
F(3,'cube')
F(-10,'abs')
F(18.38,'round')发布于 2016-02-12 16:12:18
S=str.split;x,f=S(raw_input())
exec'print '+dict(zip('tresd',S('[a for a in range(x)if a*a==x][0]|x*x|x**3|abs(x)|round(x)','|')))[f[-1]].replace('x',x)https://codegolf.stackexchange.com/questions/71806
复制相似问题