क्षेत्रों की गणना।


12

सबसे छोटा कोड जो कर्व p (x) = a 0 + a 1 * x + a 2 * x 2 + ..., लाइन y = 0, लाइन x = 0 और लाइन x = C के बीच का क्षेत्र देता है।

(कुछ इस तरह से:

क्षेत्र चाहता था)

आप मान सकते हैं कि x <C के लिए p (x)> = 0 (बोनस अंक यदि आपका कोड p (x) के नकारात्मक मानों के लिए काम करता है)।

इनपुट

सी, 0 , 1 , ...

उत्पादन

एक वास्तविक संख्या - क्षेत्र

उदाहरण 1:

input: 2, 0, 1
output: 2.0

परीक्षा 2:

input: 3.0, 0, 0.0, 2
output: 18

अपडेट करें:

  • C> 0 भी माना जाता है
  • क्षेत्र वक्र, y = 0, x = C और x = 0 के बीच है
  • इनपुट किसी भी रूप की एक सूची हो सकती है; जरूरी नहीं कि अल्पविराम अलग हो जाए।
  • आउटपुट किसी भी रूप में वास्तविक हो सकता है (इस प्रकार, '18' एक वैध आउटपुट है, जैसा कि '18 .0 'है)

1
चूंकि उत्तर लगभग किसी भी इनपुट के लिए "अनंत" होने वाला है, मुझे लगता है कि आपने समस्या को गलत कर दिया है।
पीटर टेलर

क्या इनपुट को मानक इनपुट से अल्पविराम से अलग स्ट्रिंग के रूप में पढ़ा जाना चाहिए? या हम एक फ़ंक्शन लिख सकते हैं जो एक तर्क के रूप में फ़्लोट की सूची लेता है?
sep2k

क्या आपका मतलब x = 0, x = C, y = 0 और वक्र के बीच है?
कीथ रान्डेल

2
@Peter: मुझे ऐसा नहीं लगता। वह एक प्रतिलोम (जिसका अभिन्न अंग होगा ) की एक तस्वीर दिखाता है , लेकिन वह जो फ़ंक्शन निर्दिष्ट करता है वह एक बहुपद है। [0, C) पर निश्चित अभिन्न परिमित गुणकों के लिए अच्छी तरह से परिभाषित और परिमित होना चाहिए।
dmckee --- पूर्व-मध्यस्थ बिल्ली का बच्चा

1
@ मॉमकी, मैंने उस पर ध्यान दिया था, लेकिन मेरी बात और थी कि वह एक बहुपद को - \ infty से C, और किसी भी गैर-तुच्छ बहुपद के लिए एकीकृत करता है। इसे ठीक करने के लिए अब प्रश्न में संशोधन किया गया है।
पीटर टेलर

जवाबों:



5

पायथन - 71 63 वर्ण:

a=input()
print sum(1.*a[i]*a[0]**i/i for i in range(1,len(a)))

यह एक बहुपद समारोह के बीच 0और का एक सरल एकीकरण है C। और मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे पूरा यकीन है कि यह नकारात्मक मूल्यों के लिए काम करता है।


input()आज के बारे में कुछ नया सीखे :)
st0le

3

हास्केल, 85 वर्ण

f(c:l)=sum.map(\(i,x)->x*c**i/i)$zip[1..]l
main=getLine>>=print.f.read.('[':).(++"]")

1
यह सवाल उतना कठिन नहीं है जितना आप इसे मानते हैं। आप निश्चित रूप से इनपुट कोड को सरल बना सकते हैं, और संभवतः स्पष्ट I / O को पूरी तरह से दूर कर सकते हैं।
जेबी

3

जे, 26 वर्ण

f=:3 :'((1}.y)&p.d._1)0{y'

जैसे

   f 2 0 1
2
   f 3 0 0 2
18

साफ! मैं इसे और अधिक शांत बनाने का एक तरीका नहीं खोज सकता। यही कारण है कि d.एक संयोजन के रूप में किया जा रहा मेरी नौसिखिया जम्मू कौशल बहुत आसान यह नहीं है।
JB

@ जेबी: हां, वह डी। मेरे लिए भी एक "समस्या" है। :)
बारहवीं

2

रूबी, 65 वर्ण

i=s=0
c=gets(q=",").to_f
$<.each(q){|a|s+=a.to_f*c**(i+=1)/i}
p s

कोड इनपुट के अंत तक पढ़ता है, लाइन के अंत तक नहीं। तो आपको इनपुट समाप्त करने के लिए Ctrl+ हिट करने की आवश्यकता है D। ( echoफ़ाइल का उपयोग करके या उससे इनपुट को पाइप करें ।)


1
मुझे लगता है कि "," को एक वैरिएबल को असाइन करने से मदद मिलेगी ... कैसे इस बारे में c=gets(q=",").to_fऔर $<.each(q){|a|s+=a.to_f*c**(i+=1)/i}, एक चार बचाता है ....
st0le

@ st0le: बहुत अच्छा। धन्यवाद।
sepp2k

असाइन करना ","(या ?,, जो बहुत छोटा है) $/आपको तर्क को छोड़ देने की अनुमति देता है $<.each। और $<.mapएक वर्ण से छोटा है $<.each। ;)
वेंटरो

2

सी जीसीसी 186 182 बाइट्स

f(){i=0,l=1;float *d,s=0.0;d=malloc(sizeof(float)*50);scanf("%f",&d[0]);while(getchar()!='\n'){scanf("%f",&d[l]);l++;}for(i=0;i<l;i++)s+=d[i+1]*pow(d[0],(i+1))/(i+1);printf("%f",s);}

यह कार्यक्रम वक्र, y = 0, x = C और x = 0 के बीच किसी भी वक्र के लिए एक आउटपुट (क्षेत्र) देता है। यह 0 से 48float तक गुणांक ( साथ ही) ले सकता है । पहले स्वीकार किए गए इनपुट के बाद गुणांक है। अंतिम गुणांक के बाद दबाएं ।CÈnter

void f()
{
  int i=0,l=1;
  float *d,s=0.0;
  const int sz=100;
  d=malloc(sizeof(float)*sz);

  scanf("%f",&d[0]);
  while(getchar()!='\n')
  {
    scanf("%f",&d[l]);
    l++;
  }

  for(i=0;i<l;i++)
    s+=d[i+1]*pow(d[0],(i+1))/(i+1);

   printf("%f",s);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.