挑战
给定整数的输入(其中),输出从到含)。
其中是复数的实部。
注意
输出量
输出可以是您希望的任何形式(例如图像或窗口等)。不允许使用ASCII艺术。
图形不需要轴(以允许没有内置图形功能的语言竞争)。
如果输出图像,则其每侧必须大于500像素。同样,绘图必须尽最大可能填充图像。
地块之间的最小间隔为0.05。
允许使用矢量图形。
例子
输入以下内容2:

输入以下内容1:

您必须将相应的输出放在答案中(n = 1和n = 2)。
获奖
以字节为单位的最短代码获胜。
给定整数的输入(其中),输出从到含)。
其中是复数的实部。
注意
输出可以是您希望的任何形式(例如图像或窗口等)。不允许使用ASCII艺术。
图形不需要轴(以允许没有内置图形功能的语言竞争)。
如果输出图像,则其每侧必须大于500像素。同样,绘图必须尽最大可能填充图像。
地块之间的最小间隔为0.05。
允许使用矢量图形。
输入以下内容2:

输入以下内容1:

您必须将相应的输出放在答案中(n = 1和n = 2)。
以字节为单位的最短代码获胜。
Answers:
感谢@LuisMendo额外的-2个字节!
I_.01I3$:i_y^&XG
I_ push 3 and negate
.01 push 0.01
I push 3
3$: generate the list [-3,-2.99,-2.98,...,3]
i_y^ calculate (-input)^(list)
$XG plot the first list against th real part of the second list
-12字节得益于DSM(一个模块安装一起matplotlib叫pylab了必要的功能“在更多像Matlab一个REPL使Python的!” -奇怪,但真)
-18更多的结果(pylab有许多numpy的功能呢!)
-感谢Ajasja提供1个字节(替换arange(-60,61)/20+0j为arange(121)/20-3+0j)
from pylab import*
def f(n):x=arange(121)/20-3+0j;plot(x,(-n)**x);show()
n = 2,1

from matplotlib.pyplot import*如果使用--pylab --matplotlib标志启动ipython,可以摆脱吗?
%pylab您也会感到
x=seq(-3,3,.05);plot(x,Re((0i-n)^x))
n不像其他答案一样使用变量并从答案中删除五个字符?无论如何,疯狂的答案。我总是忘了curve。
n。Matlab,matl,TI-Basic和mathematica答案将输入作为标准输入(据我所知),而python和VBA答案则创建一个函数。即使允许,也只是个人喜好:我只是不喜欢预定义变量作为输入方式。
多亏了KyleKanos,节省了8个
字节多亏了Taylor Scott,节省了22个字节
Sub g(n)
For i=0To 1
For x=-3To 3Step.01
y=n^x*Cos([Pi()]*x)
m=IIf(y<m,y,m)
If i Then Cells(500*(1-y/m)+1,(x+3)*100+1)="#
Next x,i
End Sub
格式化后,它看起来像这样:
Sub g(n)
For i = 0 To 1
For x = -3 To 3 Step 0.01
y = n ^ x * Cos([Pi()] * x)
m = IIf(y < m, y, m)
If i Then Cells(500 * (1 - y / m) + 1, (x + 3) * 100 + 1) = "#"
Next x, i
End Sub
有趣的事实:VBA不具有一个内置的pi变量,所以我们必须把它作为评价工作表函数它确实存在。
我从193字节的图表版本开始,但是确实得到了更好的结果。
Sub c(n)
For x=-3To 3Step 0.05
r=r+1
Cells(r,1)=n^x*Cos(Atn(1)*4*x)
Next
With ActiveSheet.Shapes.AddChart(xlLine).Chart
.SetSourceData Range("A1:A121")
.Axes(xlCategory).Delete
End With
End Sub
(-n)^x代替硬编码pi 是否更短?
atn(1)*4pi 用起来不短吗?
感谢fo @flawr删除了2个字节!
@(n)ezplot(@(x)real((-n)^x),-3:3)
这定义了一个匿名函数。要使用input调用它2,请使用ans(2)(或将函数分配给诸如的变量f,然后使用f(2))。
输出是矢量图形(可调整大小的窗口)。x轴上的采样间隔由该ezplot函数自动确定,但似乎绰绰有余。
在STDERR中会产生警告,因为传递给ezplot(@(x)real((-n)^x))的函数未向量化,但生成了图形。
示例n = 2:
ezplot = la-z-plot:D(我一直忘了这个...)
ezplot。可悲的是,不能说相同fplot,因此不能在其中保存任何字节。
%pylab
def f(n):x=arange(121)/20-3+0j;plot(x,(-n)**x)
@Jonathan Allan节省了三个字节。
x=arange(-60,61)/20花费2个字节来修复DSM突出显示的问题。如果您添加0j到arange它可用于在切换到plot(x,(-n)**x)节电4
arange(121)。
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 500 500
%%EndComments
/n 1 def .02 setlinewidth /f{dup dup n exch exp exch 180 mul cos mul 3 div}def
250 250 translate 80 80 scale newpath -3 f moveto -3 .05 3{f lineto}for stroke
%%EOF
现在,由于这是矢量图像本身...
r(n)=f(x)=re((-n)^x)
从纯粹的说来,这个绘图工具就是TC(在大多数情况下,无限循环会使它崩溃。)从本质上讲,它的主要输出是图形。
r(n)=分配一个r将参数n带给表达式的函数f(x)=re((-n)^x)。re((-n)^x)几乎是挑战说明的字母。但这为此分配了功能f(x),绘图员将其隐式输出为折线图。
您可以使用此网站,在其中打孔该功能,然后使用r(input)。

感谢我的同事马歇尔的指导。-2感谢FrownyFrog。
匿名默认前缀功能。
-(]plot@;9 o.^)i:@3j120[load@'plot'
-(]plot@;9 o.^)i:@3j120[load@'plot'
load@'plot' NB. load plotting library
i:@3j120 NB. -3...3 in 120 steps
- NB. negate argument
( ^) NB. raise the negated value to those exponents
( 9 o. ) NB. real part
(] ; ) NB. pair with the exponents
( plot@ ) NB. plot it
20%~i:@60可以i:@3j120。
⎕SE.UCMD∊'chart x(9○(-'⍞')*x←3-20÷⍨⍳121)'
⎕SE.UCMD∊'chart x(9○(-'⍞')*x←3-20÷⍨⍳121)' ⍝ Main function
⎕SE.UCMD∊ ⍝ User Command (called from the session object)
'chart ⍝ Plot a chart with arguments:
( 3-20÷⍨⍳121)' ⍝ Yields the list [-3, -2.95, -2.9,..., 2.9, 2.95, 3]
x← ⍝ Assign that list to x
* ⍝ and use it as exponent
(-'⍞') ⍝ with (-input) as base
9○ ⍝ discard the complex part; this generates Re((-n)^x)
x ⍝ And x.
]chart在这种情况下,用户命令采用两个向量参数,x并且y并绘制的曲线图:
立即窗口脚本,用于从对象获取输入[A1]并将Chart对象输出到该Sheet1对象。
[B:B]="=ROW()/20-3.05":[C:C]="=A$1^B1*Cos(Pi()*B1)":Set c=Sheet1.Shapes.AddChart(4).Chart:c.SetSourceData[C1:C121]:c.Axes(1).Delete
完整的Sub常规版本。I / O不变。
Sub b()
[B:B] = "=ROW()/20-3.05" '' Define `x`-axis
[C1:C121] = "=A$1^B1*Cos(Pi()*B1)" '' Define `y`-axis in terms of input from A1
Set c = Sheet1.Shapes.AddChart(4).Chart '' Add line plot to Sheet1 (xlLine)
c.SetSourceData [C1:C121] '' Set `y` source to match `x` in [-3,3]
c.Axes(1).Delete '' Remove erroneous axes (xlCategory)
End Sub
using Plots
~n=plot(real((0im-n).^(-3:.05:3)))
这需要朱莉娅的表述!
不过,这里不算什么,除了(ab)使用运算符重载以节省函数定义字节,并使用0im-n复杂的输入数(通常在我以前曾使用过)Complex(n)。这是必需的,因为在Julia中,出于类型稳定性的原因,^运算符仅在输入为Complex本身时才返回Complex结果。因此,这里我们通过添加0imie 使其成为复数。0i。
关于Plots.jl软件包的一件很酷的事情是,它会根据您已安装的绘图软件包以及从何处运行plot命令来自动选择要使用的后端。上面的情节是使用GR后端创建的,但是如果我没有安装该情节(或者如果我plotly()像这样明确地运行了一个命令),它将使用更具交互性的Plotly后端并输出它(看起来像一个一点更好的IMO):
甚至还有一个UnicodePlots后端,可以使用Unicode字符和颜色代码在终端上打印图(或保存到文本文件)。如果我尝试直接粘贴,SE会继续弄乱图的对齐方式,所以这是终端屏幕截图:
PS:替代公式
using Plots
~n=plot(n.^(x=-3:.05:3).*cospi(x))
ASCII art is disallowed.(ಥ﹏ಥ)