हमला, क्षय, निर्वाह, रिहाई


47

ध्वनि सिंथेसाइज़र समय के साथ ध्वनि के कुछ मापदंडों (जैसे कुल मिलाकर जोर) को नियंत्रित करने के लिए लिफाफा जनरेटर का उपयोग करते हैं। कई सिंथेसाइज़र में एक लिफाफे को चार मापदंडों द्वारा परिभाषित किया गया है, जैसा कि विकिपीडिया से निम्न आंकड़े में दर्शाया गया है :

  • हमला समय (ए) : लिफाफे को अपने अधिकतम स्तर तक पहुंचने के लिए लिया गया समय शून्य से शुरू होता है, जब कुंजी को पहले दबाया जाता है।
  • क्षय समय (डी) : लिफाफे के लिए निर्दिष्ट निरंतर स्तर तक पहुंचने में लगने वाला समय
  • निरंतर स्तर (एस) : स्तर जो बनाए रखा जाता है, प्रारंभिक हमले और क्षय के बाद, जब तक कुंजी दबाया जा रहा है।
  • रिलीज का समय (R) : कुंजी जारी होने पर लिफाफे को शून्य तक पहुंचने में लगने वाला समय।

यहाँ छवि विवरण दर्ज करें

चुनौती

चार मापदंडों A, D, S, R को इनपुट करें और लिफाफे को प्लॉट करें

पैरामीटर 0 से 127 तक पूर्णांक मान होंगे

अधिकतम स्तर (हमले चरण के अंत में पहुँच) होने के लिए मान लिया जाएगा 127

को बनाए रखने के स्तर पर क्षैतिज खंड है मान लिया जाएगा अवधि 64 (वास्तविक ध्वनि इस अवधि तय नहीं है, लेकिन समय की राशि से निर्धारित होता है कि कुंजी के रोके जाने)।

प्रारूप और आगे का विवरण

आउटपुट को रेखापुंज या वेक्टर प्रारूप में एक छवि होना चाहिए। यदि यह रेखापुंज है, तो बहुभुज रेखा क्षैतिज रूप से लंबवत रूप से कम से कम 50 पिक्सेल पर होनी चाहिए।

छवि को या तो मानक छवि प्रारूप में फ़ाइल के रूप में प्रदर्शित या उत्पादित किया जा सकता है। फ़ाइल को डिस्क पर लिखा जा सकता है, या इसकी सटीक सामग्री आउटपुट हो सकती है, या तो STDERR या फ़ंक्शन रिटर्न तर्क के रूप में।

ग्राफ में केवल उस पॉलीगॉनल लाइन की आवश्यकता होती है जो लिफाफे को परिभाषित करती है। प्रत्येक अक्ष के पैमाने को स्वतंत्र रूप से चुना जा सकता है। अन्य तत्व जैसे अक्ष रेखा, संख्यात्मक लेबल या रेखा रंग वैकल्पिक हैं।

इनपुट के साधन और प्रारूप हमेशा की तरह लचीले होते हैं । उदाहरण के लिए, आप चार संख्याओं को किसी भी क्रम में ले सकते हैं, या उनमें एक सरणी हो सकती है। एक कार्यक्रम या एक समारोह प्रदान किया जा सकता है। मानक खामियों को मना किया जाता है।

बाइट्स में सबसे छोटा कोड जीतता है।

परीक्षण के मामलों

इनपुट प्रारूप में है [A D S R]। ध्यान दें कि पैमाने प्रत्येक आकृति में अलग है (नियम के अनुसार उस पैमाने को स्वतंत्र रूप से चुना जा सकता है)

[15 30 70 40]

यहाँ छवि विवरण दर्ज करें

[64 64 64 64]

यहाँ छवि विवरण दर्ज करें

[0 10 50 80]

यहाँ छवि विवरण दर्ज करें

[0 0 90 80]

यहाँ छवि विवरण दर्ज करें

[5 50 0 0]

यहाँ छवि विवरण दर्ज करें

[5 50 0 80]

यहाँ छवि विवरण दर्ज करें

[24 32 127 48]

यहाँ छवि विवरण दर्ज करें


1
मैं शीर्षक से एक और अधिक simian चुनौती की उम्मीद कर रहा था !
बेन

@ यह संदर्भ भी इरादा था :-) मुझे नींद से वंचित करना पसंद है !
लुइस मेंडो

जवाबों:


7

MATL, 31 22 बाइट्स

Oii64ivYsO127itO5$h&XG

स्वीकार चार अलग-अलग इनपुट के रूप में आदेश दिया A, D, R,S

MATL ऑनलाइन पर इसे आज़माएं

व्याख्या

0   % Push a literal 0 to the stack
ii  % Grab the first two inputs
64  % Push the number literal 64 to the stack
i   % Grab the third input
v   % Vertically concatenate all values
Ys  % Compute the cumulative sum
0   % Push the number literal 0 to the stack
127 % Push the number literal 127 to the stack
i   % Grab the fourth input
t   % Duplicate the fourth input
O   % Push the number literal 0 to the stack
5$h % Concatenate the last 5 elements on the stack
&XG % Plot the result using the first array as x and second array as y

यहाँ छवि विवरण दर्ज करें


43

टिकज, 195 193 181 177 172 167 163 160 159 बाइट्स

यहाँ उनके उपयोगी उत्तर के लिए डेविड कार्लिसले का धन्यवाद

\documentclass[tikz]{standalone}\begin{document}\tikz\def~#1{\typein[#1];}~\a~\s~\d~\r\def\u{)--(\a+\d}\draw(,)--(\a,127\u,\s\u+64,\s\u+\r+64,);\end{document}

जी हां, आपने सही सुना टीकज

व्याख्या

यह अपने लक्ष्य को प्राप्त करने के लिए कुछ तकनीकों का उपयोग करता है। पहली बात इनपुट है। ज्यादातर लोग नहीं जानते होंगे कि L A T E X इनपुट ले सकता है। खैर यह कर सकते हैं। यह कमांड के साथ हासिल किया जाता है \typein। यह संकलक को रोक देगा और उपयोगकर्ता से इनपुट का अनुरोध करेगा क्योंकि इसे एक चर पर असाइन किया जाएगा।

अन्य मुख्य तकनीक का उपयोग है \def\defTikz में बेतुका शक्तिशाली है। यह अनिवार्य रूप से कोड के एक टुकड़े को परिभाषित करता है और इसे हर जगह चिपकाता है जिसे आप चर कहते हैं। इस कोड में हम दो चीजों को परिभाषित करते हैं \typein[#1]{}ताकि हम अपने चरों को गोल्फ में असाइन कर सकें और )--(\a+\dक्योंकि यह कोड असंगठित संस्करण में कई बार दिखाई देता है।

यहाँ कोड के दो संस्करण हैं (आवरण के बिना):

golfed:

\documentclass[tikz]{standalone}\begin{document}\tikz\def~#1{\typein[#1];}~\a~\s~\d~\r\def\u{)--(\a+\d}\draw(,)--(\a,127\u,\s\u+64,\s\u+\r+64,);\end{document}

Ungolfed:

\typein[\a]{}\typein[\s]{}\typein[\d]{}\typein[\r]{}\draw(0,0)--(\a,127)--(\a+\d,)--(\a+\d+64,)--(\a+\d+\r+64,0);

छवि:

चूंकि मैं एक पीडीएफ इमेज को सीधे अपलोड नहीं कर सकता हूं, और इसे किसी अन्य प्रारूप में परिवर्तित करने से लगता है कि लाइन पूरी तरह से गायब हो गई है, यहां पूर्वावलोकन में खोले जाने पर एक छवि दिख सकती है (इस छवि के लिए इनपुट [64 64 64 64])

पूर्वावलोकन छवि

जैसा कि आप देख सकते हैं कि यह बहुत पतला है। हालाँकि, क्योंकि यह एक पीडीएफ छवि है और न कि रेखापुंज छवि को मोटाई की आवश्यकताओं का पालन नहीं करना पड़ता है।


12
मैं ईमानदारी से इस तथ्य की प्रशंसा करता हूं कि आप टिकज को इतनी अच्छी तरह से जानते हैं कि यह पहला समाधान है जो आपके दिमाग में आता है। (और अगर ऐसा नहीं था, तो वह किंवदंती याद होगी)
सही पैर

1
input tikz\begin{document}काम नहीं करता है?
घातक

5
तस्वीरों के बारे में कैसे? B
सर्ज बोर्स्च

आप वास्तव में इसे कैसे प्रस्तुत करते हैं? pdflatex adsr.texकाम करने के लिए प्रतीत नहीं होता है। - ओह रुको, यह काम करता है, मुझे उम्मीद नहीं थी कि यह इंटरैक्टिव इनपुट का अनुरोध करेगा!
चालू करना बंद कर दिया

@WheatWizard ImageMagick समुचित रूप से अगर आप इसे सही करना पीडीएफ में बदल सकते हैं
सार्ज Borsch

20

पायथन 2, 83 80 79 बाइट्स

from turtle import*
def f(A,D,S,R):X=A+D+64;map(goto,[A,A+D,X,X+R],[127,S,S,0])

इसे ऑनलाइन आज़माएं (83-बाइट संस्करण, क्योंकि यह ऑनलाइन चलता है)

ध्यान दें कि कुछ आउटपुट ट्रिनेट का उपयोग करके पूरी तरह से दिखाई नहीं दे सकते हैं, क्योंकि जिस तरह से कैनवास काम करता है। यदि आप इसे बेहतर काम करना चाहते हैं तो आपको पायथन डाउनलोड और इंस्टॉल करना होगा।

Ungolfed:

from turtle import*
A,D,S,R=input()
goto(A,127)
goto(A+D,S)
goto(A+D+64,S)
goto(A+D+64+R,0)

यह संस्करण ट्रिनेट में काम नहीं करता है, क्योंकि ट्रिनेट इनपुट के अनपैकिंग मूल्य का समर्थन नहीं करता है।


आप mapपायथन 2 में उपयोग कर सकते हैं :lambda A,D,S,R:map(goto,[A,A+D,A+D+64,A+D+R+64],[127,S,S,0])
xnor

@xnor मैं SuspensionError: Cannot call a function that blocks or suspends here on line undefined in main.pyTrinket पर मिलता हूं । क्या आपने पुष्टि की है कि यह काम करता है? मुझे यकीन नहीं है कि त्रुटि ट्रिंकेट के लिए अद्वितीय है या नहीं।
mbomb007

2.7.12 में मेरे लिए काम करता है।
xnor

@ एक्सनोर एमएमके, धन्यवाद। यह शायद स्कल्प्ट में एक सीमा है।
mbomb007

मैंने इस कार्यक्रम के एक सरल संस्करण को स्कल्प्ट जीथब रेपो के उदाहरण के रूप में प्रस्तुत किया, और उन्होंने सोचा कि यह एक अच्छा खोज है। उम्मीद है कि वे इसे ठीक करने में सक्षम होंगे, लेकिन उनके "कछुए स्प्रिंट" की गति थोड़ी अधिक है।
mbomb007

17

गणितज्ञ, 61 58 बाइट्स

ListLinePlot[{Accumulate@{0,##3,64,#2},{0,127,#,#,0}}]&

के लिए ऑपरेटर है Transposeऔर Tगणितज्ञ द्वारा एक सुपरस्क्रिप्ट के रूप में प्रस्तुत किया गया है।

आदेश में तर्क S, R, A, Dदेता है और एक वेक्टर ग्राफिक्स ऑब्जेक्ट लौटाता है।

सभी सात परीक्षण मामलों के लिए परिणाम:

यहाँ छवि विवरण दर्ज करें बड़े संस्करण के लिए क्लिक करें।


यह जल्दी था!
लुइस मेंडो

मुझे सिखाने के लिए +1 ListLinePlot:) और ListStepPlotसाथ ही साथ बहुत उपयोगी भी है!
ग्रेग मार्टिन

12

आर, 66 63 बाइट्स

function(A,D,S,R)plot(cumsum(c(0,A,D,64,R)),c(0,127,S,S,0),"l")

अक्ष प्रयोगशालाओं cumsum(c(0,A,D,64,R))और c(0,127,S,S,0)साथ ही अक्ष रेखाओं और संख्यात्मक लेबल के साथ छवि प्रदर्शित करता है ।

3 बाइट्स से शेविंग करने के लिए @Zahiro Mor को धन्यवाद !

पिछला उत्तर:

function(A,D,S,R)plot(c(0,A,A+D,b<-A+D+64,b+R),c(0,127,S,S,0),"l")

2
आप cumsum(c(0,A,D,64,R)) प्लॉट में पहले शब्द को बदलने के लिए उपयोग कर सकते हैं । कम्सम के साथ आपको b ट्रिक की जरूरत नहीं होगी और फिर भी 3 बाइट्स शेव करेंगे :) function(A,D,S,R)plot(cumsum(c(0,A,D,64,R)),c(0,127,S,S,0),"l")
Zahiro Mor

11

मतलाब, 50 बाइट्स

@(A,D,S,R)plot(cumsum([0,A,D,64,R]),[0,127,S,S,0])

यह एक अनाम फ़ंक्शन "ans" देता है जिसे ans (A, D, S, R) के रूप में जाना जाता है।


9

जावास्क्रिप्ट (ईएस 6) + एचटीएमएल, 126 + 23 = 149

c=O.getContext`2d`;c.moveTo(a=0,z=O.height=128);g=(y,x=prompt())=>c.lineTo(a+=+x,y)||g;g(0)(s=z+~prompt())(s,64)(z);c.stroke()
<canvas id=O width=512>

आदेश में एक समय पर एक इनपुट लेता है A, S, D, R


9

जावास्क्रिप्ट (ईएस 6), 114 111 बाइट्स

f=(a,d,s,r)=>`<svg width=446 height=128><path stroke=red fill=none d=M0,127L${a},0l${d},${127-s}h64l${r},${s}>`
<div oninput=o.innerHTML=f(a.value,d.value,s.value,r.value)><input type=number value=0 min=0 max=127 id=a><input type=number value=63 min=0 max=127 id=d><input type=number value=127 min=0 max=127 id=s><input type=number value=0 min=0 max=127 id=r><div id=o><svg width=446 height=128><path stroke=red fill=none d=M0,127L0,0l63,0h64l0,127 /></svg>

के लिए उपयुक्त एक एसवीजी छवि लौटाता है innerHTML। मान्य XML के लिए 18 बाइट्स जोड़ें।


यह बहुत अच्छा है कि वास्तविक समय में आंकड़ा कैसे अपडेट किया जाता है!
लुइस मेंडो

यह बहुत अच्छा है, मुझे कुछ समय में एसवीजी सिंटैक्स सीखना चाहिए। शायद <input>s में डिफ़ॉल्ट मान जोड़ें ?
ETHproductions

@ETHproductions क्या आपके मन में कोई विशेष चूक है? (यह देखते हुए कि चूक स्थापित करना वास्तव में प्रारंभिक ग्राफ को वैसे भी ट्रिगर नहीं करेगा ...)
नील

मैं शायद बस सोच रहा था 64,64,64,64। आम तौर पर मैं डिफ़ॉल्ट इनपुट के लिए सही आउटपुट को हार्डकोड करूंगा, लेकिन मैं देखता हूं कि यहां मुश्किल कैसे होगी ...
ETHproductions

8

हास्केल, 112 110 बाइट्स

import Graphics.Gloss
(a#d)s r=display(InWindow""(600,300)(0,0))red$line$zip(scanl(+)0[a,d,64,r])[0,127,s,s,0]

उपयोग उदाहरण (0#10) 50 80:।

adsr लिफाफा

यह Glossपुस्तकालय का उपयोग करता है । displayसमारोह एक विंडो में प्लॉट करने के लिए (यहाँ: एक (शीर्षक के बिना खिड़की की उम्मीद है ""), आकार 600x300, स्थिति (0,0)डेस्कटॉप पर), एक पृष्ठभूमि रंग ( red) और तस्वीर डायन के संचयी योग ज़िप करने द्वारा किए गए मार्ग के किनारे एक पंक्ति है [0,a,d,64,r]= [0,a,a+d,a+d+64,a+d+64+r]के रूप में x निर्देशांक और [0,127,s,s,0]y निर्देशांक के रूप में।

संपादित करें: 2 बाइट्स के लिए धन्यवाद @xnor!


लिखने के लिए छोटा होना चाहिएscanl(+)0[a,d,64,r]
xnor

5

प्रसंस्करण, 134 108 + 14 (कॉल size) = 148 122 बाइट्स

पहले हमें sizeप्रोग्राम में कहीं कॉल की आवश्यकता है ताकि आउटपुट विंडो (100x100 पर डिफ़ॉल्ट) में फिट हो जाए।

size(400,400);

और यहाँ वास्तविक कार्य है:

void g(int a,int b,int c,int d){line(0,127,a,0);line(a,0,b+=a,c=127-c);line(b,c,b+=64,c);line(b,c,b+d,127);}

जैसे बुलाओ f(15,20,70,40);

स्क्रीनशॉट

15, 20, 70, 40

छवि


मेरा नया उत्तर पुराने उत्तर की तुलना में अधिक सीधा है, लेकिन मुझे पुराना पसंद है (भले ही वह बड़ा हो)।

पुराना उत्तर (148 बाइट्स)

size(400,400);

और दो कार्य

void f(int[]v){translate(0,127);l(v[0],-127);l(v[1],127-v[2]);l(64,0);l(v[3],v[2]);}void l(int x,int y){line(0,0,x,y);translate(x,y);}

इसे कॉल करें f(int_array_containing_values);और परिणाम कुछ इस तरह दिखाई देगा:f(new int[]{15,20,70,40});


4

स्माइलबासिक, 90 बाइट्स

INPUT A,D,S,R
B=A+D+64W=#Y-S
GLINE.,#Y,A,0GLINE A,0,A+D,W
GLINE A+D,W,B,W
GLINE B,W,B+R,#Y

4

PHP, 149 130 बाइट्स

[,$a,$d,$s,$r]=$argv;imagepolygon($i=imagecreatetruecolor(446,127),[0,127,$a,0,$d+=$a,$s,$d+=64,$s,$d+$r,127],5,999);imagepng($i);

कमांड लाइन आर्ग्युमेंट्स से इनपुट लेता है, स्टैडआउट में इमेज (PNG विथ ग्राफ ब्लू)। PHP 7.1 या बाद के संस्करण की आवश्यकता है।

उपयोग जैसे

# any OS with ImageMagick:
php -r '<code>' <parameters> | display

# linux with feh:
php -r '<code>' <parameters> | feh

पुराने PHP के लिए +4 बाइट्स: [,$a,$d,$s,$r]साथ बदलें list(,$a,$d,$s,$r)


वहाँ एक छोटी सी हैक है: imageopenpolygonबेस लाइन को छिपाने के लिए उपयोग करने के बजाय , परिष्करण बहुभुज लाइन को कैनवास के बाहर खींचा जाता है। (y = 127 केवल ऊँचाई वाली छवि पर प्रदर्शित होगा> = 128.)

मैं ९९९९ के बजाय रंग ९९ या ९ के साथ अधिक बचत कर सकता था; लेकिन वे काले पर देखने के लिए बहुत कठिन हैं। :)


3

बैश + कृपा , 70 बाइट्स

t=$[$1+$2]
echo "0 0
$1 127
$t $3
$[t+64] $3
$[t+64+$4] 0">f
xmgrace f

स्क्रिप्ट फाइल करने के लिए लिखता है f प्रत्येक बिंदु के निर्देशांक , और xmgrace (GUI संस्करण) फ़ाइल को पढ़ता है और डिफ़ॉल्ट रूप से लाइनों का उपयोग करके साजिश को प्रदर्शित करता है।

रन :

./plot_ADSR.sh 15 30 70 40

आउटपुट: (प्रिंट स्क्रीन)

15 30 70 40

मुझे लगता है कि यह सीधे एक अनुग्रह स्क्रिप्ट द्वारा किया जा सकता है, अगर यह इनपुट स्वीकार कर सकता है, लेकिन मैं इसके सिंटैक्स से परिचित नहीं हूं। मैं इस पर गौर करूंगा।

स्पष्टीकरण:

t=$[$1+$2]          # store the value of (A+D) for later usage
echo "0 0           # start writing the coordinates to file "f", first the origin
$1 127              # then (A, 127)
$t $3               # then (A + D, S)
$[t+64] $3          # then (A + D + 64, S)
$[t+64+$4] 0">f     # then (A + D + 64 + R, 0)
xmgrace f           # call xmgrace to plot the generated XY file

2

गो, 947 915 506 बाइट्स

यह इन प्रश्नों में भाग लेने के दौरान भाषा सीखने की कोशिश करने, अनुकूलित करने से बहुत दूर है। बेझिझक मुझे बताएं कि मैं क्या कर सकता हूं।

निश्चित छवि

संघनित:

package main;import (."os";."image";k"image/png";c"image/color";."strconv";."math");func main(){g:=NewRGBA(Rect(0,0,127*4,127));a,_:=ParseFloat(Args[1],4);d,_:=ParseFloat(Args[2],4);s,_:=ParseFloat(Args[3],4);r,_:=ParseFloat(Args[4],4);z:=[5][]float64{{0,0},{a,127},{a+d,s},{a+d+64,s},{a+d+64+r,0}};for i:=1;i<len(z);i++{v,w,x,y:=z[i-1][0],z[i-1][1],z[i][0],z[i][1];m:=(y-w)/(x-v);t:=y-m*x;for v<=x{g.Set(int(Ceil(v)),127-int(Ceil(w)),c.RGBA{0,0,0,255});v+=.01;w=m*v+t}};f,_:=Create("o.png");k.Encode(f,g)}

Uncondenced:

package main

import (
    ."os"
    ."image"
    k"image/png"
    c"image/color"
    ."strconv"
    ."math"
    "fmt"
)

func main(){
    g := NewRGBA(Rect(0, 0, 127*4, 127))

    a, _ := ParseFloat(Args[1], 4)
    d, _ := ParseFloat(Args[2], 4)
    s, _ := ParseFloat(Args[3], 4)
    r, _ := ParseFloat(Args[4], 4)

    z := [5][]float64{{0,0},{a,127},{a+d,s},{a+d+64,s},{a+d+64+r,0}}
    for i:=1;i<len(z);i++{
        v,w,x,y:=z[i-1][0],z[i-1][1],z[i][0],z[i][1]
        m:=(y-w)/(x-v)
        t:=y-m*x
        for v<=x{
            g.Set(int(Ceil(v)),127-int(Ceil(w)), c.RGBA{0,0,0,255})
            v+=.01
            w=m*v+t
        }
    }
    f,_:=Create("o.png")
    k.Encode(f,g)
}

@LuisMendo यह है। डिफ़ॉल्ट रूप से 0,0 शीर्ष बाईं ओर है। जैसे ही मैं कर सकता हूँ सब कुछ उलटा।
18

1
मैंने कभी भी कोड नहीं किया, इसलिए मुझे नहीं पता। यहां उपयोगकर्ता अपने कोड को मैन्युअल रूप से गोल्फ करते हैं क्योंकि वे सामान्य मिनिफायर की तुलना में अधिक बाइट बचा सकते हैं। यहां खराब कोडिंग प्रथाओं और ट्रिक्स का स्वागत किया जाता है। पूर्व के लिए, चर (जैसे l1x, l1y, l1X, l1Y) के साथ संरचनात्मक वस्तुओं को बदलना संभव नहीं होगा?
शीशमारा

1
@rugdealer यह आपकी मदद कर सकता है, अगर आपने इसे नहीं देखा है
लुइस मेंडो

1
अपने लिंक @LuisMendo के लिए लगभग 400 बाइट्स खो दिया है
kemicofa

1
@rugdealer वाह, यह बहुत कुछ है /
लुइस मेंडो

1

डीसी, 120 बाइट्स

शुरू में मुझे लगा कि मैं डीसी में जवाब नहीं दे सकता, लेकिन मैं देखता हूं कि वेक्टर इमेज के सिंटैक्स को प्रिंट करने की अनुमति है।

?sR127r-sS[<svg><path d="M0 127 L]nrdn[ 0 L]n+dn32PlSn[ L]n64+dn32PlSn[ L]nlR+n[ 127" fill="none" stroke="red"/></svg>]p

कोड प्रत्येक बिंदु के अनुवादित निर्देशांक की गणना करता है और प्लॉट के लिए एसवीजी सिंटैक्स उत्पन्न करता है। चूँकि एक छवि संपादक के ऊपरी-बाएँ कोने में मूल है, इसलिए मुझे इस मामले में 127 yसे मूल्यों को घटाना था height, ताकि छवि को इस तरह दिखाया जाए जैसे मूल नीचे-बाएँ कोने में है।

रन उदाहरण: या इसे ऑनलाइन आज़माएं!

dc -f plot_ADSR.dc <<< "15 30 70 40"

आउटपुट:

<svg><path d="M0 127 L15 0 L45 57 L109 57 L149 127" fill="none" stroke="red"/></svg>

छवि प्लॉट को प्रदर्शित करने के लिए, उस सटीक आउटपुट को एक फ़ाइल में सहेजें और इसे जिम्प के साथ खोलें, उदाहरण के लिए, या जैसा कि मैंने ऊपर किया था, HTML पृष्ठ में टेक्स्ट दर्ज करें।

स्पष्टीकरण: dc रिवर्स-पॉलिश d esk c alculator स्टैक भाषा है

स्क्रिप्ट SVG सिंटैक्स स्ट्रिंग का एक लंबा संयोजन है। कीवर्ड समन्वयM के लिए कदम के लिएL खड़ा है और वर्तमान स्थिति से दिए गए समन्वय के लिए ड्रा लाइन के लिए खड़ा है ।

?                           # read input (in reverse order by default). Stack: RSDA
sR                          # pop top value, store it in register 'R'. Stack: SDA
127r-sS                     # push 127, swap top 2 values, pop them and push
                            #subtracting result, save it to 'S', pop it. Stack: DA
[<svg><path d="M0 127 L]n   # [..]n print string (push then pop). Stack: unchanged
rdn                         # swap, duplicate top, print (A) and pop it. Stack: AD
[ 0 L]n                     # printing
+dn                         # pop top 2 values, push addition result, duplicate it,
                            #print and pop it. Stack: (A+D)
32P                         # print a space
lSn                         # push value from register 'S', print and pop it.
                            #Stack: unchanged
[ L]n                       # printing
64+dn                       # push 64, pop top 2 values, push addition result,
                            #duplicate it, print and pop it. Stack: (A+D+64)
32PlSn[ L]n                 # print space, print register 'S', more printing
lR+n                        #push value from register 'R', pop top 2 values, push
                            #addition result, print it and pop it. Stack: empty
[ 127" fill="none" stroke="red"/></svg>]p   # printing
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.