grafiğini çizin


31

Meydan okuma

Bir tam sayı girişi göz önüne alındığında, ( ), çıkış grafiği gelen için dahildir.0 < n < 50 y = R ' e ( ( - N ) X ) X = - 3 x = 3n0<n<50y=Re((n)x)x=3x=3

Burada sayısının karmaşık kısmıdır .sR,e(p)p

Not buR,e((-n)x)=nxmarul(πx)

Çıktı

Çıktı istediğiniz herhangi bir biçimde olabilir (örneğin, bir görüntü veya bir pencere vb.). ASCII sanatına izin verilmiyor.

Grafiğin eksenlere sahip olması gerekmez (yerleşik grafik işlevi olmayan dillerin rekabet edebilmesi için).

Bir görüntü çıktıysa, her bir tarafın 500 pikselden uzun olması gerekir. Benzer şekilde, arsa görüntüyü elinden geldiğince doldurmalıdır.

Arsalar arasındaki minimum aralık 0,05'tir.

Vektör grafikleri izin verilir.

Örnekler

Bir giriş için 2:

Bir giriş için 1:


Karşılık gelen çıktıları cevabınıza koymalısınız (n = 1 ve n = 2).

Kazanan

Bayt cinsinden en kısa kod kazanır.


37
ASCII art is disallowed.(ಥ﹏ಥ)
Albert Renshaw

1
Eksenler grafiğin sol ve alt kenarlarında olabilir mi? merkezde yerine?
Kritixi Lithos,

2
"Bir görüntü çıktıysa, her bir tarafın 500 pikselden uzun olması gerekir." Vektör grafiklerine izin verilir mi?
Martin Ender

1
@MartinEnder Evet, sanırım öyle
Beta Decay

4
Neden MATLAB, MATL ve Mathematica'yı ilk cevaplardan bazıları olarak gördüğüme şaşırmıyorum. :)
Kevin Cruijssen

Yanıtlar:


12

MATL, 22 18 16 bayt

Ek -2 bayt için @LuisMendo teşekkürler!

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 adresinde deneyin


21

TI-Basic, 26 21 bayt

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

N = 2 için çıktı:

TI84SE GRAFİK ÇIKIŞ


1
Kodunuzda 47 karakter sayıyorum, 26 değil.
Konrad Rudolph

11
@KonradRudolph Bakınız: TI-Basic puanlama kuralları.
Addison Crump,

5
"Bir görüntü çıktıysa, her bir tarafın 500 pikselden uzun olması gerekir." Yerleşik grafik yeteneği burada işe yarayacak gibi görünmüyor.
user5090812

7
@ user5090812 "Çıktı istediğiniz herhangi bir şekilde olabilir (örn. bir görüntü veya bir pencere vb." ") - Bir görüntü değil grafik penceresinden çıkıyorum, bu nedenle bu kısıtlama geçerli değil.
Timtech

1
Bir grafik hesap makinesinin işleri grafik çizebileceğini kim düşünebilirdi!
PyRulez

15

Bash + Gnuplot, 56 45 bayt

(Noiralef sayesinde -11 bayt!)

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

Ortaya çıkan grafiği , geçerli çalışma dizininde pngadı verilen bir resim olarak kaydeder A.

Örnek Çıktılar

İçin n = 1 :

İçin n = 2 :


1
Her gün kullandığım bir kordon kullanmak için +1. (hayır "bozuk ikili saçmalık" golf-langages ^^ ile olduğu gibi). Bu, günlük durumlarda yeniden kullanılabilir.
Olivier Dulac

5
Kısaltmaları kullanarak 11 byte tasarruf edebilirsiniz:gnuplot -e "se t png;p[-3:3]real((-2)**x)">A
Noiralef

@Noiralef Teşekkürler! :)
R. Kap

13

Matplotlib ile Python 3 , 103 72 bayt

-12 DSM (bir modül yanında yüklü olduğu sayesinde bayt matplotlibdenir pylab- garip ama gerçek! "Daha Matlab gibi bir repl içinde Python yapmak" gerekli işlevselliği ile)
(PyLab çok fazla numpy işlevi vardır!) -18 daha bir sonucu olarak
- Ajasja için 1 bayt sayesinde (değiştirilmesi arange(-60,61)/20+0jile 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

n = 2 ' n = 1 '


2
- from matplotlib.pyplot import*pylab --matplotlib bayrağıyla ipython'a başlarsanız kurtulabilir misiniz?
Ajasja

İPython'u aldınız mı? çalışıyor mu? Olursa kabul edilebilir olacağından şüpheleniyorum ama kendime sormam gerekiyor. İPython'um yok ve kullanmak için hiçbir zaman ihtiyacım olmadı.
Jonathan Allan,

evet, --pylab ile çalışır (python 2 ile test edilmiştir)
Ajasja

Ekranı çalıştıran herhangi bir yapılandırma dosyasında standart olmayan hiçbir şey yoktur, değil mi? Değilse, IMO’nun dil değişikliğinin akıllıca kullanılması nedeniyle bu vesileyle ayrı bir cevap olarak gönderebilirim. EDIT: Görüyorum ki orada da golf oynadınız :)
Jonathan Allan

1
Evet, hatırladım %pylabda sana uyuşukluk veriyor ve bir defterdeyseniz sonunda bir şova ihtiyacınız yok :)
Ajasja

11

Mathematica, 41 bayt

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

Çıktı, sayıların yazı tipi (Wolfram Alpha ile oluşturulduğundan şüphelendiğim) haricinde tam olarak gösterildiği gibi görünüyor.


11

MATLAB, 35 30 bayt

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

Bu, çok büyük bir işlevi tanımlar. Çıktı yeniden boyutlandırılabilir bir vektör grafik çıktısı olan yeni bir pencereden geçer. MATLAB'ler plot, karşılık gelen x koordinatlarını sağladığınız sürece y koordinatlarının hayali bölümünü otomatik olarak yoksayar. Aşağıdaki çıktı içindir n=3.


10

R, 30 bayt

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

n = 1

görüntü tanımını buraya girin

n = 2

görüntü tanımını buraya girin


3
Oooh güzel çevreler
Beta Decay

2
@ BetaDecay R'nin varsayılan görüntülemesi çirkin. Varsayılanın gerekçesi, doldurulmamış dairelerin, üzerine doldurulmuş dairelerin / noktaların kadar çizik noktaları gizlememesidir.
Konrad Rudolph

5
Bence çirkin değil. Gerçekten harika görünüyor.
mbomb007

1
X ekseni yanlış etiketlenmiş. İhtiyacınız olduğunu düşünüyorumx=seq(-3,3,.05);plot(x,Re((0i-n)^x))
user2390246

2
@ user2390246 Eksenlerin tamamen isteğe bağlı olduğu göz önüne alındığında, bunun önemli olduğunu sanmıyorum. Eğer eksen etiketleme konularında, diğer cevaplar da bağlı (örneğin 30-Char MATLAB cevap) ölçekleme için sorunları var.
Konrad Rudolph

10

R, 29 bayt

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

nstdin ile sağlanır. N = 1 için sonuç: görüntü tanımını buraya girin

Ve n = 2 için:

görüntü tanımını buraya girin


Neden ndiğer cevaplar gibi bir değişken kullanmıyor ve cevabınızdaki beş karakteri tıraş etmiyorsunuz? Neyse, çılgınca cevap. Her zaman unutuyorum curve.
Konrad Rudolph

@KonradRudolph Teşekkürler. Aslında diğer cevapların çoğu önceden tanımlamıyor n. Matlab, matl, TI-Basic ve matemika cevapları girdi olarak kabul edilir (bildiğim kadarıyla), python ve VBA cevapları ise bir fonksiyon yaratır. İzin verilse bile, bu kişisel bir zevk meselesi: Değişkenleri bir girdi olarak önceden tanımlamayı sevmiyorum.
plannapus

Üzgünüz düzeltme: matlab cevapları fonksiyonları da tanımlamaktadır.
plannapus

İyi. Bu ise ... bir kod golf
Konrad Rudolph

Bilgi niteliği taşıyan bir şey olmak istemedim ama aslında topluluk olarak önceden tanımlanmış bir değişkeni kullanmanın , soruda açıkça aksi belirtilmediği sürece geçerli bir girdi yöntemi olarak kabul edilmediğini düşünüyoruz .
plannapus

8

Excel VBA, 168 160 147 138 Bayt (100x ölçeğinde piksel olarak hücreler)

KyleKanos sayesinde 8 bayt kurtarıldı Taylor Scott ile 22 bayt kurtardı

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

Biçimlendirilmiş, bu gibi görünüyor:

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

Ek bilgi: VBA yok yerleşik bir pideğişken bunu bir çalışma sayfası işlevi olarak değerlendirmek zorunda yapar mevcuttur.

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


Ben 193 bayt bir grafik sürümü ile başladı ama o did güzel sonuçlar alır.

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)^xHard kodlama pi yerine kullanmak daha kısa değil mi?
Beta Decay,

1
@BetaDecay Excel, negatif olmayan tam sayılara yükseltilmiş negatif sayıları işleyebilirse olur ¯ \ _ (ツ) _ / ¯
Engineer Toast

2
atn(1)*4Pi için kullanmak daha kısa değil mi?
Kyle Kanos

2
@KyleKanos Gerçekten de öyle, teşekkürler. Bu kimliği sürekli arama masamda bulamadım ve bir mühendis olarak yasal olarak durmak zorunda kaldığım yer.
Mühendis Tost,

1
@TaylorScott Bu üç yeni numara, teşekkürler. Bu sefer beni kurtardıkları 7 bayttan daha değerli.
Mühendis Toast,

6

MATLAB, 35 33 bayt

2 baytı kaldırmak için @flawr için teşekkürler!

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

Bu isimsiz bir işlevi tanımlar. Girdi ile çağırmak için 2, kullanın ans(2)(veya işlevi bir değişkene atayın fve sonra kullanın f(2)).

Çıktı vektör grafikleridir (yeniden boyutlandırılabilir pencere). X ekseni üzerindeki örnekleme aralığı ezplotfonksiyon tarafından otomatik olarak belirlenir , ancak fazlasıyla yeterli gibi görünüyor.

STDERR'de bir uyarı üretilir, çünkü ezplot( @(x)real((-n)^x)) öğesine iletilen işlev vektörleştirilmez, ancak grafik oluşturulur.

Örnek n = 2:

görüntü tanımını buraya girin


1
ezplot = la-z-plot: D (Bunu unutmaya devam ediyorum ...)
kusur

Huh. Etki alanını bu şekilde geçirebileceğinizi asla bilmiyordum ezplot. Ne yazık ki, aynı şey söylenemez fplot, bu yüzden orada hiçbir byte kaydedilemez.
Sanchises,

@sanchises Ben de bilmiyordum :-) Kusurun fikriydi
Luis Mendo

5

Jüpyter notebook ve Python 3; 53 bayt

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

@Jonathan Allan sayesinde üç bayt kurtarıldı.

n = 1 ' n = 2 '


İki küçük bit: Eğer özellikleri doğru okursam, (etkili) puanlar arasında en az 0.05 (0.1 değil) puana ihtiyacınız olur, ve biz 3 dahil olmak zorundayız.
DSM

x=arange(-60,61)/20DSM tarafından vurgulanan sorunları 2 bayt fiyatla çözmek için kullanabilirsiniz . Eğer eklerseniz 0jiçin arangegeçmek için kullanılabilecek plot(x,(-n)**x)4. tasarrufu
Jonathan Allan

@DSM Op, düzeltildi.
Ajasja

@JonathanAllan Teşekkürler.
Ajasja

Ah, seni toplam 2 kurtardım, sen sadece değiştirerek beni 1 kurtardın arange(121)!
Jonathan Allan,

3

Encapsulated PostScript; 232 bayt

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

Şimdi bu bir vektör görüntüsünün kendisi olduğu için ...

görüntü tanımını buraya girin

görüntü tanımını buraya girin


Ooh bu güzel
Beta Decay

3

TikZ + PGFPlotlar , 175 bayt

\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}

Örneğin , latexmk -cd -f -pdf in.texpdf çıktısı için derleyin . Derleme sırasında, kullanıcıdan istenir n.

N = 1 ve n = 2 için örnek çıktılar (png'ye dönüştürülür):

n = 1 n = 2


2

Math.JS Grapher , 20 Bayt

r(n)=f(x)=re((-n)^x)

Tamamen şans eseri olarak, bu grafik aracı TC'dir (Çoğunlukla, Sonsuz döngüler sadece onu çarpıştırır.) Ve doğası gereği birincil çıktısı grafiklerdir.

Nasıl çalışır

r(n)=rargümanı nifadeye alan bir işlev atar f(x)=re((-n)^x). re((-n)^x)mektubun tanımı için mektup oldukça fazla. Ancak bu f(x), grapher'in örtük olarak çizgi grafiği olarak çıktığı işlevi atar .

Nasıl test

Bu siteyi kullanabilir , o işlevi oraya basabilir ve sonra arayabilirsiniz r(input).

Çıktı

Çıktı


2

J , 37 36 bayt

Meslektaşım Marshall'a rehberlik için teşekkür ederim. -2 FrownyFrog'a teşekkürler.

Anonim zımni önek işlevi.

-(]plot@;9 o.^)i:@3j120[load@'plot'

Arsa penceresi

-(]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

Bence 20%~i:@60olabilir i:@3j120.
FrownyFrog

@ FrownyFrog Doğru. Teşekkürler.
Adám

1

Dyalog APL, 41 bayt

⎕SE.UCMD∊'chart x(9○(-'⍞')*x←3-20÷⍨⍳121)'

Nasıl çalışır:

⎕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.

Kullanıcı komutu ]chart, bu durumda, iki vektör argüman alır, xve yve grafikler çizer:

n=1n = 1 '

n=2n = 2 '


0

SmileBASIC, 82 bayt

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'den küçük olsa bile, grafik tüm ekranı doldurur.

N, 1'den büyük olduğunda, Y'yi -1 ile 1 arasında olacak şekilde ölçeklendirerek ölçekleyebilirsiniz n^3. Ben zaten yapıyorum n^xve n^x / n^3basitleştirilebilir n^(x-3). Bununla birlikte, N, 1'den küçük olduğunda, n^-3bunun yerine Y'yi bölmek zorundayım . Bu eşdeğerdir n^(x+3).

Eğer kullanmak n^(x-3*sign(n-1))için kullanabilir ve eğer-3n>1+3n<1

Görüntüler yakında geliyor


0

Excel VBA, 133 bayt

Nesneden girdi alan [A1]ve Chartnesneyi çıktıran komut penceresi penceresi 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

Ungolfed

Tam Subrutin versiyon. G / Ç değişmedi.

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

Çıktı

n=1

Çıktı grafiği n = 1

n=3

Çıktı grafiği n = 3


0

Julia 0.6, Plots.jl ile 46 bayt arasında

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

GR arsa

Bunun Julia temsiline ihtiyacı vardı!

Ancak burada golf oynamak için çok fazla bir şey yoktur, (ab) işlev tanımında bayt tasarrufu 0im-nyapmak için operatör aşırı yükünü kullanmak ve genellikle kullanmış olduğum yerde giriş sayısını karmaşık yapmak için kullanmak dışında Complex(n). Bu gereklidir, çünkü Julia, tür kararlılığı nedeniyle, ^işleç yalnızca Girdi Karmaşık olduğu zaman Karmaşık sonuçları döndürür. Yani burada 0imyani ekleyerek karmaşık bir sayı yaparız . 0i.

Plots.jl paketi ile ilgili harika bir şey, hangi komplo paketlerini kurduğunuzu ve plotkomutu nereden çalıştırdığınızı temel alarak arka ucu otomatik olarak seçmesidir . Yukarıdaki arsa GR arka ucuyla yaratıldı , ancak eğer kurulmasaydı (ya da açıkça plotly()bunun için yaptığım gibi bir komutu koyarsam), daha etkileşimli Plotly arka ucunu kullanır ve çıktılardı (ki bu minik biraz daha güzel IMO):

Plotly arsa

Unicode karakterleri ve renk kodlarını kullanarak terminalde bir arsa yazdırmak (veya bir metin dosyasına kaydetmek) için bir UnicodePlots arka ucu bile vardır . SE, doğrudan yapıştırmayı denersem, arsa hizalamasını karıştırmaya devam ediyor, işte bir terminal ekran görüntüsü:

UnicodePlots arsa

R,e((-n)x)=nxcOs(πx)

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

Dang, bu Braille karakterlerinin akıllıca kullanımı (ab).
Zacharý
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.