रोसेटा स्टोन चैलेंज: एक बॉक्स प्लॉट ड्रा


10

रोजेटा स्टोन चैलेंज का लक्ष्य अधिक से अधिक भाषाओं में समाधान लिखना है। अपनी प्रोग्रामिंग बहुभाषिकता दिखाएं!

चुनौती

आपकी चुनौती एक ऐसे प्रोग्राम को लागू करना है जो संख्याओं की एक सूची को इनपुट करेगा और डेटा के एक बॉक्स प्लॉट को आउटपुट करेगा, जितनी संभव हो उतनी प्रोग्रामिंग भाषाओं में । बॉक्स प्लॉट डेटा में चतुष्कोणीय और आउटलेर प्रदर्शित करेगा, और इसका एक पैमाना भी होगा। आपको किसी भी प्रकार के मानक पुस्तकालय फ़ंक्शन का उपयोग करने की अनुमति है जो आपकी भाषा में है, क्योंकि यह ज्यादातर एक भाषा शोकेस है।

"बॉक्स प्लॉट" क्या है?

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

सबसे पहले, डेटा का माध्य लें। फिर, सभी डेटा बिंदुओं को लें, जो कि माध्यिका से कड़ाई से कम हैं , और इस सेट के माध्यिका की गणना पहले चतुर्थक (Q1) बनने के लिए करते हैं। सभी डेटा बिंदुओं को लें, जो कि माध्यिका से कड़ाई से अधिक हैं , और इस सेट के माध्य को तीसरे चतुर्थक (Q3) बनने के लिए गणना करते हैं। का मान ज्ञात कीजिए R = 1.5*(Q3 - Q1)। इससे कम संख्या वाले कोई भी Q1 - Rआउटलेयर हैं। किसी भी संख्या से अधिक Q3 + Rआउटलेयर हैं। सभी डेटा बिंदुओं का सेट लें, जो आउटलेयर नहीं हैं , और इस सेट का न्यूनतम और अधिकतम दो व्हिस्की के सिरों को निर्धारित करता है।

इनपुट

इनपुट n=नंबर के साथ शुरू होगा । इसके बाद nनंबर होंगे, प्रति पंक्ति एक। सभी संख्याएँ पूर्णांक 0 से 63, समावेशी होंगी।

n=8
29
1
22
18
12
16
16
22

उत्पादन

आउटपुट बॉक्स प्लॉट का एक प्रतिपादन होगा। भूखंड को खींचने का एक संभावित तरीका ASCII में इसे प्रस्तुत करना है। आप ASCII के अलावा अन्य कई तरीकों से बॉक्स प्लॉट को प्रस्तुत कर सकते हैं, लेकिन मुख्य आवश्यकता यह है कि इसे पर्याप्त रूप से खींचा जाए ताकि महत्वपूर्ण विशेषताओं के सटीक स्थानों के बारे में बताया जा सके। बॉक्स प्लॉट में एक पैमाना होना चाहिए, जिसमें समान रूप से लगभग 5-10 नंबर हों। यहाँ उपरोक्त डेटा का एक उदाहरण प्लॉट है:

              +--+----+        
              |  |    |        
 X          +-+  |    +------+ 
              |  |    |        
              +--+----+        

0    0    1    1    2    2    3
0    5    0    5    0    5    0

उद्देश्य जीतने का मानदंड

एक उद्देश्य जीतने वाली कसौटी के रूप में, यहाँ यह है: प्रत्येक भाषा एक अलग प्रतियोगिता है, जो सबसे छोटी प्रविष्टि लिख सकती है, लेकिन समग्र विजेता वह व्यक्ति होगा जो इन उप-प्रतियोगिताओं में सबसे अधिक जीतता है। इसका मतलब यह है कि कई असामान्य भाषाओं में जवाब देने वाला व्यक्ति लाभ प्राप्त कर सकता है। किसी भाषा में एक से अधिक समाधान होने पर कोड-गोल्फ ज्यादातर एक टाईब्रेकर होता है: सबसे छोटे प्रोग्राम वाले व्यक्ति को उस भाषा में क्रेडिट मिलता है।

नियम, प्रतिबंध और नोट्स

आपका कार्यक्रम 11 अप्रैल 2013 से पहले मौजूद किसी भी भाषा में लिखा जा सकता है। मुझे कुछ अधिक असामान्य / गूढ़ भाषाओं में लिखी गई कुछ प्रतिक्रियाओं को मान्य करने के लिए समुदाय पर निर्भर रहना होगा, क्योंकि मैं परीक्षण करने में सक्षम नहीं हूं। उन्हें।


वर्तमान लीडरबोर्ड

इस खंड को समय-समय पर भाषाओं की संख्या दिखाने के लिए अद्यतन किया जाएगा और प्रत्येक में कौन अग्रणी है।

  • जूलिया (604) - प्लेनैपस
  • गणितज्ञ (71) - च्यानयोग
  • पायथन 2. एक्स (85) - अभिजीत
  • आर (34) - प्लेनैपस

वर्तमान उपयोगकर्ता रैंकिंग

  1. प्लेनैपस - २
  2. अभिजीत - १
  3. च्यानोग - १

2
मुझे यह पसंद है! नियमों का एक बहुत अच्छा विन्यास। अब कुछ भाषाएँ सीखने के लिए ...
luser droog

जवाबों:


6

आर: 34 अक्षर

बेशक, R आँकड़ों के लिए इस्तेमाल की जाने वाली भाषा है, यह boxplotऐसा करने के लिए एक फ़ंक्शन के साथ आता है (जो इनपुट शैली को समायोजित करने के लिए यहां एक आवरण की आवश्यकता है):

f=function(x)boxplot(scan(x,sk=1))

उपयोग: input1.txtनिम्नलिखित में से एक फ़ाइल को देखते हुए :

n=10
29
1
22
19
9
13
15
22
63
2

फिर f("input1.txt")उत्पादन:

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

जूलिया: 604 वर्ण

जूलिया में यह मेरा पहला समारोह है, इसलिए यदि यह बुरी तरह से लिखा गया है तो जूलिया के प्रशंसकों से मेरी माफी।

function g(f)
a=int(split(readall(open(f)),'\n')[2:])
b,c,d=int(quantile(a,[.25,.5,.75]))
w=1.5*(d-b)
o=a[a.<b-w]
O=a[a.>d+w]
t=int(b-w>0?b-w:0)
u=int(d+w<63?d+w:63)
S=s=""
if !isempty(o)
for i in 1:length(o)
s=s*lpad('x',[0,o][i+1]-[0,o][i]-1,' ')
end
end
if !isempty(O)
for i in 1:length(O)
S=S*lpad('x',[0,O][i+1]-[0,O][i]-u-1,' ')
end
end
x="0"
for i in 9:9:63
x=x*lpad(string(i),i-(i-9)," ")
end
v=isempty(o)?b-1:b-o[length(o)]-1
print(x*"\n"*lpad('+'*'-'^(d-b-1)*'+',d,' ')*'\n'*s*lpad('-'^(b-t-1),v,' ')*'|'*lpad('|',c-b,' ')*' '^(d-c-1)*'|'*'-'^(u-d)*S*'\n'*lpad('+'*'-'^(d-b-1)*'+',d,' '))
end

उपयोग:

g("input1.txt")
0        9       18       27       36       45       54       63
         +-----------+
---------|      |    |------------------                     x
         +-----------+

2

Python2.X 85 वर्ण, matplotlib का उपयोग करते हुए

import matplotlib.pylab as p
p.boxplot(map(input,['']*int(raw_input()[2:])))
p.show()

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


1

गणितज्ञ 71

BoxWhiskerChart[Input/@x~Array~FromDigits@StringTake[InputString[],-1]]

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

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