রোসটা স্টোন চ্যালেঞ্জ: একটি বক্স প্লট আঁকুন


10

রোজটা স্টোন চ্যালেঞ্জের লক্ষ্য হ'ল যতটা সম্ভব ভাষায় সমাধান লিখুন। আপনার প্রোগ্রামিং বহুভাষিকতা দেখান!

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি এমন একটি প্রোগ্রাম বাস্তবায়ন করা যা সংখ্যার একটি তালিকা ইনপুট করে এবং যতটা সম্ভব প্রোগ্রামিং ভাষায় ডেটার একটি বক্স প্লট আউটপুট দেয় । বাক্স প্লটটি উপাত্তগুলিতে কোয়ার্টাইল এবং আউটলিয়ারগুলি প্রদর্শন করবে এবং এর স্কেলও থাকবে। আপনার ভাষাতে যে কোনও প্রকারের স্ট্যান্ডার্ড লাইব্রেরি ফাংশন ব্যবহার করার অনুমতি রয়েছে, কারণ এটি বেশিরভাগই একটি ভাষা শোকেস।

"বক্স প্লট" কী?

একটি বক্স প্লট ডেটা লেখার একটি উপায়। একটি বক্স প্লটে কয়েকটি প্রয়োজনীয় বৈশিষ্ট্য রয়েছে। প্রথম বৈশিষ্ট্যটি একটি বাক্স, উভয় পক্ষের সাথে ডেটার প্রথম এবং তৃতীয় চতুর্থাংশে অবস্থিত। বক্স প্লটের কেন্দ্রের নীচে একটি লাইন রয়েছে যা মাঝিকে দেয়। বাক্স প্লটের উভয় প্রান্তে, "হুইস্কার" রয়েছে যা তথ্যের বৈচিত্রটি দেখায় সহায়তা করে। হুইস্কারটি অপ্রত্যাশিত ব্যক্তিদের বাদ দিয়ে, ডেটা সেটটিতে সর্বনিম্ন এবং সর্বকালের সেরা পয়েন্টগুলিতে বক্স থেকে প্রসারিত হয়। Outliers পৃথক পয়েন্ট হিসাবে চক্রান্ত করা হয়।

প্রথমে, ডেটাটির মিডিয়ানটি নিন। তারপরে, মিডিয়ানের চেয়ে কঠোরভাবে কম সমস্ত ডেটা পয়েন্ট নিন এবং এই সেটটির মধ্যককে প্রথম কোয়ার্টাইল (কিউ 1) হিসাবে গণনা করুন। মিডিয়ানের চেয়ে কঠোরতর সমস্ত ডেটা পয়েন্ট নিন এবং এই সেটটির মধ্যককে তৃতীয় কোয়ার্টাইল (কিউ 3) হিসাবে গণনা করুন। এর মানটি সন্ধান করুন R = 1.5*(Q3 - Q1)। এর চেয়ে কম সংখ্যক Q1 - Rহ'ল এটি বিদেশী। এর চেয়ে বড় যে কোনও সংখ্যা Q3 + Rহ'ল বিদেশী। সমস্ত ডেটা পয়েন্টের সেট নিন যা অপ্রদর্শী নয় এবং এই সেটটির সর্বনিম্ন এবং সর্বোচ্চ দুটি হুইস্কারের শেষ নির্ধারণ করে।

ইনপুট

n=সংখ্যার পরে ইনপুট শুরু হবে । তারপরে সেখানে nসংখ্যা থাকবে, প্রতি লাইনে একটি করে। সমস্ত সংখ্যার সমষ্টিগত 0 থেকে 63 পর্যন্ত পূর্ণসংখ্যার হবে।

n=8
29
1
22
18
12
16
16
22

আউটপুট

আউটপুট বক্স প্লটের একটি উপস্থাপনা হবে। প্লটটি আঁকার একটি সম্ভাব্য উপায় হ'ল এএসসিআইআই-তে এটি সরবরাহ করে। আপনি বক্স প্লটটিকে ASCII ব্যতীত অন্য উপায়ে রেন্ডার করতে পারেন, তবে মূল প্রয়োজনীয়তাটি যথেষ্ট পরিমাণে আঁকা যাতে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলির সঠিক অবস্থানগুলি বলা সম্ভব। বাক্স প্লটের একটি স্কেল থাকা উচিত, প্রায় 5-10 সংখ্যা সমানভাবে ব্যবধানযুক্ত। উপরের ডেটার উদাহরণের একটি উদাহরণ এখানে দেওয়া হয়েছে:

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

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

উদ্দেশ্য বিজয়ী মানদণ্ড

একটি উদ্দেশ্যমূলক বিজয়ী মানদণ্ড হিসাবে, এখানে: প্রত্যেকটি ভাষা স্বল্পতম এন্ট্রি লিখতে পারে সে সম্পর্কে পৃথক প্রতিযোগিতা, তবে সামগ্রিক বিজয়ী ব্যক্তি এই উপ-প্রতিযোগিতাগুলির মধ্যে সবচেয়ে বেশি জয়ী হবেন। এর অর্থ হ'ল যে ব্যক্তি বহু অস্বাভাবিক ভাষায় উত্তর দেন সে সুবিধা পেতে পারে। কোড-গল্ফ বেশিরভাগ ক্ষেত্রেই যখন একটি ভাষায় একাধিক সমাধান থাকে তখন একটি টাইব্রেকার: সংক্ষিপ্ততম প্রোগ্রাম সহ ব্যক্তি সেই ভাষার জন্য কৃতিত্ব পান।

বিধি, বিধিনিষেধ এবং নোটস

আপনার প্রোগ্রামটি ১১ ই এপ্রিল, ২০১৩ এর আগে বিদ্যমান যে কোনও ভাষায় লেখা যেতে পারে I আরও কিছু অস্বাভাবিক / রহস্যময় ভাষায় রচিত কিছু প্রতিক্রিয়া যাচাই করার জন্য সম্প্রদায়ের উপরও নির্ভর করতে হবে, যেহেতু আমার পরীক্ষা করার সম্ভাবনা নেই am তাদের।


বর্তমান লিডারবোর্ড

ভাষার সংখ্যা এবং প্রত্যেকটিতে কে নেতৃত্ব দিচ্ছেন তা প্রদর্শনের জন্য এই বিভাগটি পর্যায়ক্রমে আপডেট করা হবে।

  • জুলিয়া (604) - প্ল্যানাপাস
  • গণিত (71) - ছায়ানোগ og
  • পাইথন 2. এক্স (85) - অভিজিৎ
  • আর (34) - প্ল্যানাপাস

বর্তমান ব্যবহারকারী র‌্যাঙ্কিং

  1. প্ল্যানাপাস - 2
  2. অভিজিৎ -।
  3. চ্যানোগ - ২

2
আমি এটা ভালোবাসি! নিয়মের একটি খুব সুন্দর কনফিগারেশন। এখন কয়েকটি ভাষা শিখতে ...
লুসার ড্রুগ

উত্তর:


6

আর: 34 টি অক্ষর

অবশ্যই, পরিসংখ্যানগুলির জন্য আরবি ভাষা হ'ল এটি করার জন্য এটি একটি ফাংশন 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

পাইথন 2.এক্স 85 টি অক্ষর, ম্যাটপ্ল্লোব ব্যবহার করে

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

এখানে চিত্র বর্ণনা লিখুন


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.