グラフを描く


31

チャレンジ

整数の入力、所定の()、出力のグラフからの以下です。0 < n < 50 y = R en xx = 3 x = 3n0<n<50y=Renバツバツ=3バツ=3

ここで、は複素数実数部です。pRepp

なお、Renバツ=nバツcosπバツ

出力

出力は、任意の形式(画像やウィンドウなど)になります。ASCIIアートは許可されていません。

グラフには軸が必要ありません(組み込みのグラフ関数を持たない言語が競合できるようにするため)。

画像を出力する場合、各辺は500ピクセルより長くなければなりません。同様に、プロットはできる限り画像を埋める必要があります。

プロット間の最小間隔は0.05です。

ベクターグラフィックは許可されます。

入力の場合2

入力の場合1


対応する出力を回答に入れる必要があります(n = 1およびn = 2)。

勝ち

バイト単位の最短コードが優先されます。


37
ASCII art is disallowed.(ಥ﹏ಥ)
アルバートレンショー

1
軸はグラフの左端と下端に配置できますか?中心ではなく?
KritixiのLithos

2
「画像を出力する場合、各辺は500ピクセルより長くなければなりません。」ベクターグラフィックは許可されていますか?
マーティンエンダー

1
@MartinEnderはい、そうだと思います
ベータ崩壊

4
MATLAB、MATL、およびMathematicaが最初の回答の一部であることに驚かないのはなぜですか。:)
ケビンクルーイッセン

回答:


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
私がいない26、あなたのコードで47個の文字を数える
コンラートルドルフ


5
「画像を出力する場合、各辺は500ピクセルより長くなければなりません。」ビルトインのグラフ作成機能がここで機能するとは思われません。
user5090812

7
@ user5090812「出力は任意の形式(画像やウィンドウなど)になります」-画像ではなくグラフウィンドウで出力するため、この制限は適用されません。
ティムテック

1
グラフ電卓が物事をグラフ化できると誰が思ったでしょう!
-PyRulez

15

Bash + Gnuplot、56 45バイト

(ノイラレフのおかげで-11バイト!)

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

結果のグラフを現在の作業ディレクトリにpng名前が付けられた画像として保存しAます。

出力例

以下のためのN = 1

以下のためのN = 2


1
毎日使用する言語を使用して+1。(ゴルフ言語のように「文字化けしたバイナリナンセンス」はありません^^)。これは、日常の状況で再利用できます。
オリビエデュラック

5
略語を使用して11バイトを保存できますgnuplot -e "se t png;p[-3:3]real((-2)**x)">A
。–ノイラレフ

@Noiralefありがとう!:)
R. Kap

13

パイソン3matplotlibの103の 72バイト

-12 DSM(モジュールが一緒にインストールされているおかげバイトmatplotlibと呼ばれるpylab「より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始めますか?
アジャシャ

iPythonを入手しましたか。それは機能しますか?もしそうなら容認できると思うが、自問する必要がある。私にはiPythonがなく、使用する必要がありませんでした。
ジョナサンアラン

うん、-pylabで動作(python 2でテスト済み)
Ajasja

表示を機能させる設定ファイルには非標準のものはありませんか?そうでない場合は、言語変更のIMOを巧みに使用しているため、この機会に別の回答として投稿することをお勧めします。編集:私はあなたもそれをそこにゴルフしているのを見ます:)
ジョナサンアラン

1
はい、私%pylabはあなたにもnumpyを与えることを思い出しました、そしてあなたがノートブックにいるなら、あなたは最後にショーを必要としません:)
Ajasja

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)

これは、任意の関数を定義します。出力は、サイズ変更可能なベクターグラフィック出力を備えた新しいウィンドウを介して行われます。MATLAB plotは、対応するx座標を指定している限り、y座標の虚数部を自動的に無視しますn=3。次の出力はです。


10

R、30バイト

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

n = 1

ここに画像の説明を入力してください

n = 2

ここに画像の説明を入力してください


3
うーん、かなり円
ベータ崩壊

2
@BetaDecay Rのデフォルトのレンダリングは見苦しいです。デフォルトの理論的根拠は、塗りつぶされていない円は、塗りつぶされた円/点ほどにオーバープロットされたポイントを隠さないことです。
コンラッドルドルフ

5
いとは思いません。本当にかっこいい。
mbomb007

1
x軸のラベルが正しくありません。あなたが必要だと思うx=seq(-3,3,.05);plot(x,Re((0i-n)^x))
-user2390246

2
@ user2390246軸が完全にオプションであることを考えると、それは重要ではないと思います。軸のラベル付けが重要な場合、他の回答にもスケーリングによる問題があります(30文字のMATLAB回答など)。
コンラッドルドルフ

10

R、29バイト

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

n標準入力を介して提供されます。n = 1の結果: ここに画像の説明を入力してください

n = 2の場合:

ここに画像の説明を入力してください


n他の回答のように変数を使用して、回答から5文字を削除してみませんか?とにかく、クレイジーな答え。私はいつも忘れていcurveます。
コンラッドルドルフ

@KonradRudolphありがとう。実際、他のほとんどの答えは事前に定義されていませんn。matlab、matl、TI-Basic、および数学の回答は、stdinとして入力を受け取ります(私が理解する限り)一方で、pythonおよびVBAの回答は関数を作成します。たとえ許可されていても、それは個人的な好みの問題です。入力方法として変数を事前定義するのは好きではありません。
-plannapus

申し訳ありませんが修正:matlabの回答では、関数の定義も定義されています。
-plannapus

まあ。これコードゴルフです...
コンラッドルドルフ

私はつまらないものや何かにはなりたくありませんでしたが、実際にはコミュニティで、事前定義された変数を使用することは、質問で明示的に明記されていない限り、有効な入力メソッドは見なされません
プランナパス

8

Excel VBA、168 160 147 138バイト(100xスケールのピクセルとしてのセル)

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)^xpiをハードコーディングする代わりに使用する方が短くないですか?
ベータ崩壊

1
Excelは負の数を扱うことができればそれは次のようになり@BetaDecay負の非整数に上げ¯\ _(ツ)_ /¯
エンジニアトースト

2
atn(1)*4pi に使用する方が短くありませんか?
カイルカノス

2
@KyleKanos確かにそうです、ありがとう。定数ルックアップテーブルにそのIDが見つかりませんでした。エンジニアとして、法的に停止する義務があります。
エンジニアトースト

1
@TaylorScott 3つの新しいトリック、ありがとう。今回は私が7バイト節約したよりも価値があります。
エンジニアトースト

6

MATLAB、35 33バイト

2バイトを削除してくれた@flawrに感謝します!

@(n)ezplot(@(x)real((-n)^x),-3:3)

これは、匿名関数を定義します。input 2で呼び出すには、を使用しますans(2)(または関数をなどの変数に割り当ててからfを使用しますf(2))。

出力はベクターグラフィックス(サイズ変更可能なウィンドウ)です。x軸のサンプリング間隔はezplot関数によって自動的に決定されますが、十分すぎるようです。

ezplot@(x)real((-n)^x))に渡された関数はベクトル化されないため、STDERRで警告が生成されますが、グラフは生成されます。

n = 2

ここに画像の説明を入力してください


1
ezplot = la-z-plot:D(これについては忘れ
がち

ほら そのezplotようにドメインを渡すことができることを決して知りませんでした。悲しいことに、同じことはには言えないfplotので、そこにはバイトを保存できません。
-Sanchises

@sanchises私も知りませんでした:-)それはフレアのアイデアでした
ルイスメンドー

5

JupyterノートブックとPython 3。53バイト

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

@Jonathan Allanのおかげで3バイト節約されました。

n = 1 n = 2


二つのマイナービット:私は右の仕様を読めば、あなたは(効果的な)ポイント間の0.05の最小(ない0.1)を必要とし、我々は3の包括的であることになっている
DSM

x=arange(-60,61)/202バイトのコストでDSMによって強調された問題を修正するために使用できます。あなたが追加した場合0jarange、に切り替えるために使用することができますplot(x,(-n)**x)。4.保存
ジョナサン・アラン

@DSM Ops、修正済み。
アジャシャ

@JonathanAllanありがとう。
アジャシャ

ああ、合計で2を保存しました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

これはベクター画像そのものなので...

ここに画像の説明を入力してください

ここに画像の説明を入力してください


いいですね
ベータ崩壊

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.texpdf出力用にコンパイルします。コンパイル中に、ユーザーはの入力を求められnます。

n = 1およびn = 2のサンプル出力(pngに変換)

n = 1 n = 2


2

Math.JS Grapher、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

J37 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この場合、ユーザーコマンドは2つのベクトル引数を取ります。xそしてyやグラフをプロットします。

n=1n = 1

n=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を-1から1の範囲で除算することでYをスケーリングできますn^3。私はすでにやっていてn^xn^x / n^3に簡略化できますn^(x-3)。ただし、Nが1未満の場合、n^-3代わりにYを除算する必要があります。これはと同等n^(x+3)です。

if とif n^(x-3*sign(n-1))を使用することができます-3n>1+3n<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

出力

n=1

出力プロットn = 1

n=3

出力プロットn = 3


0

Julia 0.6、Plots.jl、46バイト

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

GRプロット

これにはジュリア表現が必要でした!

ただし、(ab)演算子のオーバーロードを使用して関数定義のバイトを節約し、0im-n通常使用する可能性のある入力番号を複雑にするために使用することを除いて、ここでゴルフをすることはあまりありませんComplex(n)。ジュリアでは、型安定性の理由で^、入力が複素数の場合にのみ演算子が複素数の結果を返すため、これが必要です。したがって、ここでは、0im ieます。0i。

Plots.jlパッケージの優れた点の1つは、インストールしたプロットパッケージとplotコマンドの実行元に基づいて、使用するバックエンドを自動的に選択することです。上記のプロットはGRバックエンドで作成されましたが、それをインストールしていない場合(またはplotly()、このために明示的にコマンドを実行した場合)、よりインタラクティブなPlotlyバックエンドを使用して、これを出力します(これは少しいいIMO):

プロットプロット

Unicode文字とカラーコードを使用して端末でプロットを印刷(またはテキストファイルに保存)するためのUnicodePlotsバックエンドもあります。ただし、直接貼り付けようとすると、SEはプロットの配置を乱し続けます。そのため、ここに端末のスクリーンショットを示します。

UnicodePlotsプロット

Renバツ=nバツcosπバツ

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

ダン、それは点字のいくつかの賢い(ab)使い方です。
ザカリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.