কোন ভাষা সবচেয়ে কম?


25

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

আপনাকে অবশ্যই মূলধনটিতে পরিবর্তনের জন্য অ্যাকাউন্ট করতে হবে (উদাহরণস্বরূপ: মতলব = এমএটিএলবি)।

বিভিন্ন সংস্করণ সংখ্যা (যেমন পাইথন) সহ ভাষাগুলিতে এগুলি অনন্য ভাষা হিসাবে গণনা করুন, তাই: Python != Python 2 != Python 2.7 != Python 3.x

উদাহরণ আউটপুট (আউটপুট ফর্ম্যাট alচ্ছিক):

cJam,       66,  12.4,  8.5
Pyth,       58,   15.2,  19
Ruby,       44,   19.2,  22.5
Python,     34,   29.3,  32
Python 2.7, 22,   31.2,  40
...
...
Java,       11,   115.5, 94.5

শিরোনাম ফর্ম্যাটগুলি যা সমর্থিত হতে হবে:

  • # Language name,বা দিয়ে শুরু হয়#Language name
  • দিয়ে শেষ হয় xx bytes, xx Bytesঠিক বাxx
  • প্রথম কমা এবং শেষ সংখ্যাটির মধ্যে প্রচুর আবর্জনা থাকতে পারে।
  • ভাষার নামটি যদি কোনও লিঙ্ক হয় ( [Name](link)), তবে তা এড়িয়ে যেতে পারে

উত্তরের যদি অন্য শিরোনামের ফর্ম্যাট থাকে তবে আপনি এড়িয়ে যাওয়া বাছাই করতে পারেন (বা যদি আপনার কোড এটি পরিচালনা করতে পারে তবে এটি অন্তর্ভুক্ত করুন)।

উদাহরণস্বরূপ, নীচের সমস্ত শিরোনাম অবশ্যই সমর্থিত হবে:

# Language Name, N bytes
# Ruby, <s>104</s> <s>101</s> 96 bytes 
# Perl, 43 + 2 (-p flag) = 45 Bytes
# MATLAB, 5

নিয়মাবলী:

  • এটিআইপি বা কেবল ওয়েবসাইট-ইউআরএল ব্যবহার করা ঠিক আছে
    • নিম্নলিখিতটি বাইট গণনা (অন্য কিছুই নয়) থেকে বের করা যেতে পারে, সুতরাং url-shortener (সর্বোচ্চ 44 বাইট) ব্যবহার করার দরকার নেই:
      • https://(বা http://)
      • codegolf
      • .stackexchange.com
      • /questions
  • প্রোগ্রামটি ইনপুট নিতে পারে। ইনপুটটি বাইট গণনায় অন্তর্ভুক্ত করা হবে।

তা ছাড়া মানক বিধি প্রযোজ্য।


11
এই চ্যালেঞ্জটি মোটেও না করেই আমি আপনাকে বলতে পারি এটি পাইথ।
অ্যালেক্স এ।

1
"বাইটস" প্রত্যয়টি কি সাধারণ, একার সার্বজনীন, এটির প্রয়োজনীয়তা যথেষ্ট?
স্পার

@ স্টিভি গ্রিফিন আমার ধারণা স্পার বলছে যে এটি সাধারণ হলেও এটি সর্বদা ব্যবহৃত হয় না ।
21

আমি যতদূর দেখতে পাচ্ছি, xx bytesসাম্প্রতিক চ্যালেঞ্জগুলিতে খুব সাধারণ (কমপক্ষে লিডারবোর্ড স্নিপেট তৈরি হওয়ার পরে)।
স্টিভি গ্রিফিন 21

2
আমি সাধারণত "বাইট" এর পরিবর্তে "চর" বা "অক্ষর" ব্যবহার করি
ডুরকনব

উত্তর:


13

আর, 821 - 44 = 777 বাইট

আপডেট হওয়া ফলাফল : নীচের সমস্ত মন্তব্য বোঝার জন্য সম্পাদনা ইতিহাস দেখুন।

           language num_answers avg_count median_count
1              RUBY          49  49.97959         30.0
2              CJAM          48  32.64583         22.0
3              PYTH          48  21.02083         14.0
4          PYTHON 2          46  86.78261         77.0
5             JULIA          43  58.90698         45.0
6           HASKELL          41  74.65854         56.0
7               PHP          40  73.52500         48.0
8              PERL          36  53.30556         34.0
9          PYTHON 3          34  90.91176         90.5
10       POWERSHELL          33  60.24242         44.0
11                C          32 221.84375         79.5
12                R          32  77.40625         62.5
13             JAVA          29 170.68966        158.0
14 JAVASCRIPT (ES6)          29  90.79310         83.0
15       JAVASCRIPT          28  68.39286         61.0
16               C#          25 193.92000        130.0
17      MATHEMATICA          23  56.04348         47.0
18           MATLAB          22  67.45455         55.0
19         TI-BASIC          19  47.05263         37.0
20              APL          18  16.55556         15.0

কোডটি, যা আমি আরও কিছুটা ছোট করতে পারি:

W=library;W(XML);W(plyr)
X=xpathSApply;Y=xmlValue;D=data.frame;H=htmlParse;S=sprintf
Z="http://codegolf.stackexchange.com/"
R=function(FUN,...)do.call(rbind,Map(FUN,...))
G=function(url){d=H(url)
a=as.double(sub(".*?(\\d+)a.*","\\1",X(d,"//div[starts-with(@class,'status')]",Y)))
u=paste0(Z,X(d,"//*[contains(@class,'question-hyperlink')]",xmlGetAttr,"href"))
D(u,a)}
u=S("%s/questions/tagged/code-golf?page=%i",Z,1:50)
q=R(G,u)
u=with(q,head(u[a>20],50))
A=function(url){u=S("%s?page=%i",url,1:10)
f=function(u){d=H(u)
h=X(d, "//div[@class='post-text']//h1",Y)
p="^(.*?),.*? (\\d+)( [Bb]ytes)?$"
k=grep(p,h,v=T)
l=toupper(sub(p,"\\1",k))
c=as.double(sub(p,"\\2",k))
D(l,c)}
R(f,u)}
a=R(A,u)
L=names(tail(sort(table(a$l)),20))
x=subset(a,l%in%L)
arrange(ddply(x, "l",summarise,n=length(c),a=mean(c),m=quantile(c,0.5)),-n)

ডি-golfed:

library(XML)
library(plyr)
LoopBind <- function(FUN, ...) do.call(rbind, Map(FUN, ...))
GetQuestions <- function(url) {
  d = htmlParse(url)
  a=as.double(sub(".*?(\\d+)a.*","\\1",xpathSApply(d, "//div[starts-with(@class, 'status')]", xmlValue)))
  u=paste0("http://codegolf.stackexchange.com/",xpathSApply(d, "//*[contains(@class, 'question-hyperlink')]", xmlGetAttr, "href"))
  data.frame(u, a)
}
u <- sprintf("http://codegolf.stackexchange.com/questions/tagged/code-golf?page=%i", 1:50)
q <- do.call(rbind, Map(GetQuestions, u))
u <- with(q, head(u[a > 20], 50))

GetAnswers <- function(url) {
  u=sprintf("%s?page=%i",url,1:10)
  f=function(u) {
    d = htmlParse(u)
    h = xpathSApply(d, "//div[@class='post-text']//h1", xmlValue)
    p = "^(.*?),.*? (\\d+)( [Bb]ytes)?$"
    k = grep(p,h,v=T)
    l = toupper(sub(p,"\\1",k))
    c = as.double(sub(p,"\\2",k))
    data.frame(language=l,c)
  }
LoopBind(f,u)
}
a=LoopBind(GetAnswers, u)
L=names(tail(sort(table(a$l)),20))
x=subset(a,language%in%L)
arrange(ddply(x, "language", summarise, num_answers = length(c), avg_count = mean(c), median_count = quantile(c,0.5)),
        -num_answers)

6
সি # এর গড় দৈর্ঘ্য 6000 বাইটের বেশি কীভাবে?
সুপারজেডি ২৪

@ সুপারজেডি ২২৪ - এমন কিছু অত্যন্ত দীর্ঘ জমা থাকতে পারে যা গড়ে স্কিউ করছে। এজন্য মিডিয়ান একটি দরকারী পরিসংখ্যান কারণ এটি বহিরাগতদের প্রতিরোধী।

1
আমি কোথাও পড়েছি যে সি # সর্বনিম্ন গল্ফযোগ্য ভাষা। এখন আমি কেন জানি ...
ev3 কম্যান্ডার

@ ev3commander - Unary এর তুলনায় সি # পেলস ...
কমিন্টার

@ অধিপতি: Eek ...
ev3 কম্যান্ডার

6

পাইথন 2, 934 - 44 (url স্টাফ) = 890 বাইট

এপিআই ব্যবহার করে:

from urllib2 import urlopen as u
from gzip import GzipFile as f
from StringIO import StringIO as s;x="https://api.stackexchange.com/2.2%s&site=codegolf"
import re;j=u(x%'/search/advanced?pagesize=50&order=desc&sort=creation&answers=20&tagged=code-golf');q=s(j.read());g=f(fileobj=q);true=1;false=0;l=';'.join(str(a['question_id'])for a in eval(g.read())['items']);w=[]
def r(p):
 j=u(x%('/questions/%s/answers?page=%s&filter=!9YdnSMlgz&pagesize=100'%(l,p)));g.seek(0);q.truncate();q.write(j.read());q.seek(0);k=eval(g.read());w.extend(a['body_markdown']for a in k['items'])
 if k['has_more']:r(p+1)
r(1);x={};s=sorted
for m in w:
 try:
  l,n=re.match("(.*?),.*?([0-9]+)[^0-9]*$",m.splitlines()[0]).groups();l=re.subn("# ?","",l,1)[0].upper()
  if l not in x:x[l]=[]
  x[l]+=[(l,int(n))]
 except:pass
for l in s(x,cmp,lambda a:len(x[a]),1)[:20]:
 v=s(x[l])
 print l,len(v),sum(map(lambda a:a[1],v))/len(v),v[len(v)/2][1]

নোট করুন যে এই কোডটি API থ্রোটলিংয়ের দিকে মনোযোগ দেয় না

আউটপুট:

RUBY 60 430 32
PYTH 57 426 16
CJAM 56 35 23
C 52 170 76
PYTHON 2 51 88 79
JULIA 42 63 48
HASKELL 42 81 63
JAVASCRIPT (ES6) 41 96 83
PERL 40 44 27
PYTHON 3 37 91 89
PHP 36 98 59
JAVASCRIPT 36 743 65
POWERSHELL 35 86 44
JAVA 32 188 171
R 30 73 48
MATLAB 25 73 51
MATHEMATICA 24 57 47
APL 22 14 13
SCALA 21 204 59
TI-BASIC 21 42 24

1
@ স্টেভি গ্রিফিন মজার বিষয় হল, /questionsহ্রাসের যোগ্যতা অর্জনের জন্য আমাকে দ্বিতীয় পুনরাবৃত্ত ক্যোয়ারিতে আরও একটি স্ল্যাশ যুক্ত করতে হয়েছিল ।
পিপ্পারি

2
পার্থক্যগুলি হ'ল @ ফ্লোডেল ব্যতীত প্রত্যয়গুলি অস্বীকার করেbytes , যখন আমার মতো অন্যান্য প্রত্যয়গুলি পরিচালনা করবে chars
পিপ্পারি

আপনার কোডটি সি, সি # এবং সম্ভবত সি ++ এর সাথে সংমিশ্রিত হতে পারে? এটি অসম্ভব বলে মনে হচ্ছে যে 73 সি-উত্তর রয়েছে।
স্টিভি গ্রিফিন

না, আমি এটা মনে করি না। আমি প্রথম কমাতে ভাষার নামটি শেষ করি।
পিপ্পারি

1
দেখে মনে l=re.sub("# ?|,","",l)হচ্ছে যা সি # এর পরিবর্তে সি দিয়ে যায়
ফ্লাডেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.