画一个


31

挑战

给定整数的输入(其中),输出从到含)。ñ0<ñ<50ÿ=[RË-ñXX=-3X=3

其中是复数的实部。[RËpp

注意[RË-ñX=ñXcosπX

输出量

输出可以是您希望的任何形式(例如图像或窗口等)。不允许使用ASCII艺术。

图形不需要轴(以允许没有内置图形功能的语言竞争)。

如果输出图像,则其每侧必须大于500像素。同样,绘图必须尽最大可能填充图像。

地块之间的最小间隔为0.05。

允许使用矢量图形。

例子

输入以下内容2

输入以下内容1


您必须将相应的输出放在答案中(n = 1和n = 2)。

获奖

以字节为单位的最短代码获胜。


37
ASCII art is disallowed.(ಥ﹏ಥ)
艾伯特·伦肖

1
轴可以在图表的左边缘和下边缘吗?而不是在中心?
Kritixi Lithos

2
“如果输出图像,则其每侧必须长于500像素。” 是否允许矢量图形?
Martin Ender

1
@MartinEnder是的,我想是这样
β衰变

4
为什么我不奇怪将MATLAB,MATL和Mathematica视为第一个答案。:)
Kevin Cruijssen '17

Answers:


12

MATL,22 18 16字节

感谢@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

在matl.suever.net上尝试


21

TI-Basic,26 21字节

~3→Xmin
3→Xmax
Prompt N
DrawF N^Xcos(πX

N = 2的输出:

TI84SE图形输出


1
我算47个字符在你的代码,而不是26
康拉德·鲁道夫

11
@KonradRudolph请参阅:TI基本评分准则。
Addison Crump

5
“如果输出图像,则其每侧必须长于500像素。” 内置的绘图功能似乎在这里不起作用。
user5090812 '17

7
@ user5090812“输出可能是您希望的任何形式(例如,图像或窗口等)”-我是通过图形窗口而不是图像进行输出,因此此限制不适用。
Timtech '17

1
谁会想到图形计算器可以绘制事物!
PyRulez

15

Bash + Gnuplot,56个 45字节

(感谢Noiralef -11个字节!)

gnuplot -e "se t png;p[-3:3]real((-$1)**x)">A

将结果图形另存pngA在当前工作目录中命名的图像。

输出示例

对于n = 1

对于n = 2


1
+1是我每天使用的语言。(没有“乱码的二进制废话”,如高尔夫语言^^)。这可以在日常情况下重复使用。
奥利维尔·杜拉克

5
您可以使用缩写保存11个字节:gnuplot -e "se t png;p[-3:3]real((-2)**x)">A
Noiralef

@Noiralef谢谢!:)
R. Kap

13

Python 3中matplotlib103个 72字节

-12字节得益于DSM(一个模块安装一起matplotlibpylab了必要的功能“在更多像Matlab一个REPL使Python的!” -奇怪,但真)
-18更多的结果(pylab有许多numpy的功能呢!)
-感谢Ajasja提供1个字节(替换arange(-60,61)/20+0jarange(121)/20-3+0j

from pylab import*
def f(n):x=arange(121)/20-3+0j;plot(x,(-n)**x);show()

n = 2,1

n = 2 n = 1


2
from matplotlib.pyplot import*如果使用--pylab --matplotlib标志启动ipython,可以摆脱吗?
Ajasja

你有iPython吗?它有效吗?我怀疑这样做是否可以接受,但需要问自己。我没有iPython,也从未需要使用它。
乔纳森·艾伦

是的,可与--pylab一起使用(已通过python 2测试)
Ajasja

没有任何非标准配置文件可以使显示正常工作,对吗?如果不是这样的话,我会说这是作为一个单独的答案发布的,因为这是对IMO语言更改的巧妙使用。编辑:我看到你也在那里打过高尔夫球:)
乔纳森·艾伦

1
是的,我还记得%pylab您也会感到
麻木

11

Mathematica,41个字节

Plot[Re[(-#)^x],{x,-3,3},PlotRange->All]&

除了数字的字体(我怀疑它是由Wolfram Alpha创建的)以外,输出看起来完全像挑战中所示。


11

MATLAB,35 30字节

x=-3:.01:3;@(n)plot(x,(-n).^x)

这定义了一个统一的功能。输出是通过具有可调整大小的矢量图形输出的新窗口进行的。plot只要提供相应的x坐标,MATLAB就会自动忽略y坐标的虚部。以下输出用于n=3


10

R,30个字节

plot(Re((0i-n)^seq(-3,3,.05)))

n = 1

在此处输入图片说明

n = 2

在此处输入图片说明


3
哦,漂亮的圈子
Beta Decay's

2
@BetaDecay R的默认渲染很难看。默认设置的理由是,未填充的圆不会像填充的圆/点那样隐藏过多绘制的点。
Konrad Rudolph

5
我不觉得这很丑。看起来真的很酷。
mbomb007 '17

1
x轴标记错误。我认为您需要x=seq(-3,3,.05);plot(x,Re((0i-n)^x))
user2390246 '17

2
@ user2390246鉴于轴是完全可选的,所以我认为这并不重要。如果轴标记很重要,则其他答案也会因缩放而出现问题(例如30个字符的MATLAB答案)。
Konrad Rudolph

10

R,29个字节

curve(Re((0i-scan())^x),-3,3)

n通过stdin提供。n = 1的结果: 在此处输入图片说明

对于n = 2:

在此处输入图片说明


为什么n不像其他答案一样使用变量并从答案中删除五个字符?无论如何,疯狂的答案。我总是忘了curve
康拉德·鲁道夫

@KonradRudolph谢谢。实际上,大多数其他答案并没有预先定义n。Matlab,matl,TI-Basic和mathematica答案将输入作为标准输入(据我所知),而python和VBA答案则创建一个函数。即使允许,也只是个人喜好:我只是不喜欢预定义变量作为输入方式。
plannapus

对不起,更正:matlab的答案也定义了功能。
plannapus

好。这一场标准高尔夫……
康拉德·鲁道夫

我不想成为一个学究之类的人,但实际上,作为一个社区,我们认为使用预定义变量不会被视为有效的输入法,除非在问题中另有明确说明。
plannapus

8

Excel VBA中,168 160 147 138字节(100×在尺度单元像素)

多亏了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变量,所以我们必须把它作为评价工作表函数它确实存在。

n = 1                                                                          n = 2
n = 1     n = 2


我从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 = 1 n = 2
n = 1

n = 2


1
使用(-n)^x代替硬编码pi 是否更短?
Beta Decay's

1
@BetaDecay这将是Excel是否可以处理上调至负非整数¯\ _(ツ)_ /¯负数
工程师吐司

2
atn(1)*4pi 用起来不短吗?
Kyle Kanos

2
@KyleKanos确实是,谢谢。我没有在常量查找表中找到该身份,而作为一名工程师,这是我有义务停止的身份。
Engineer Toast

1
@TaylorScott谢谢,这是三个新技巧。这比他们这次为我节省的7个字节更有价值。
Engineer Toast

6

MATLAB,35 33字节

感谢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

在此处输入图片说明


1
ezplot = la-z-plot:D(我一直忘了这个...)
瑕疵的

嗯 从来不知道您可以通过该域名ezplot。可悲的是,不能说相同fplot,因此不能在其中保存任何字节。
桑契斯

@sanchises我也不知道:-)这是骗子的想法
Luis

5

Jupyter笔记本和Python 3;53个字节

%pylab
def f(n):x=arange(121)/20-3+0j;plot(x,(-n)**x)

@Jonathan Allan节省了三个字节。

n = 1 n = 2


两个小位:如果我读的规范正确的,你需要(有效)点之间的最小为0.05(不0.1),和我们应该是包容的3
DSM

您可以x=arange(-60,61)/20花费2个字节来修复DSM突出显示的问题。如果您添加0jarange它可用于在切换到plot(x,(-n)**x)节电4
乔纳森·艾伦

@DSM操作,已修复。
Ajasja

@JonathanAllan谢谢。
Ajasja

啊,我总共为您节省了2个,您只需将更改为,就为我节省了1个arange(121)
乔纳森·艾伦

3

封装的PostScript;232字节

%!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

现在,由于这是矢量图像本身...

在此处输入图片说明

在此处输入图片说明


哦,太好了
Beta Decay's

3

TikZ + PGFPlots,175字节

\documentclass{standalone}\usepackage{tikz,pgfplots}\begin{document}\typein[\n]{}\tikz{\begin{axis}\addplot[domain=-3:3,samples=120]{\n^x*cos(180*x)};\end{axis}}\end{document}

用,编译例如latexmk -cd -f -pdf in.tex对于PDF输出。编译期间,提示用户输入n

n = 1和n = 2的样本输出(转换为png):

n = 1 n = 2


2

Math.JS绘图仪,20字节

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

Ĵ37 36字节

感谢我的同事马歇尔的指导。-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
FrownyFrog

@FrownyFrog正确。谢谢。
亚当

1

Dyalog APL,41个字节

⎕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并绘制的曲线图:

ñ=1个n = 1

ñ=2n = 2


0

SmileBASIC,82字节

INPUT N
FOR I=0TO 399X=I/66.5-3GPSET I,120-POW(N,X-3*SGN(N-1))*COS(PI()*X)*120NEXT

即使N小于1,图也会填满整个屏幕。

当N大于1时,可以通过将Y除以来将Y缩放到-1和1之间n^3。我已经在做n^xn^x / n^3可以简化为n^(x-3)。但是,当N小于1时,我必须用Y除以n^-3。等同于n^(x+3)

我可以用n^(x-3*sign(n-1))-3,如果n>1,以及+3如果n<1

图片即将推出


0

Excel VBA,133个字节

立即窗口脚本,用于从对象获取输入[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

输出量

ñ=1个

输出图n = 1

ñ=3

输出图n = 3


0

朱莉娅 0.6 with Plots.jl,46字节

using Plots
~n=plot(real((0im-n).^(-3:.05:3)))

GR图

这需要朱莉娅的表述!

不过,这里不算什么,除了(ab)使用运算符重载以节省函数定义字节,并使用0im-n复杂的输入数(通常在我以前曾使用过)Complex(n)。这是必需的,因为在Julia中,出于类型稳定性的原因,^运算符仅在输入为Complex本身时才返回Complex结果。因此,这里我们通过添加0imie 使其成为复数。0i。

关于Plots.jl软件包的一件很酷的事情是,它会根据您已安装的绘图软件包以及从何处运行plot命令来自动选择要使用的后端。上面的情节是使用GR后端创建的,但是如果我没有安装该情节(或者如果我plotly()像这样明确地运行了一个命令),它将使用更具交互性的Plotly后端并输出它(看起来像一个一点更好的IMO):

密谋

甚至还有一个UnicodePlots后端,可以使用Unicode字符和颜色代码在终端上打印图(或保存到文本文件)。如果我尝试直接粘贴,SE会继续弄乱图的对齐方式,所以这是终端屏幕截图:

UnicodePlots图

PS:替代公式[RË-ñX=ñXCØsπX

using Plots
~n=plot(n.^(x=-3:.05:3).*cospi(x))

Dang,这是对盲文字符的巧妙(滥用)用法。
扎卡里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.