Hepimizin bildiği gibi, meta olduğu taşan ile şikayetler hakkında puanlama kod golf arasındaki dil (evet, her bir kelimenin ayrı link ve bu sadece buzdağının görünen kısmı olabilir).
Pyth belgesine bakmayı gerçekten rahatsız edenlere karşı çok kıskançlık duyduğumda, biraz daha yapıcı bir zorluğa sahip olmak, kodlama konusunda uzmanlaşmış bir web sitesine uymanın daha iyi olacağını düşündüm.
Buradaki zorluk oldukça basit. Gibi girdi , sahip olduğumuz dil adını ve bayt sayısını . Bunları işlev girişi stdin
veya dillerin varsayılan giriş yöntemi olarak alabilirsiniz.
Olarak çıktı , bir var düzeltilmiş bayt sayısını yani, özürlü puanınız uyguladı. Sırasıyla, çıktı, işlev çıktısı stdout
veya dillerin varsayılan çıktı yöntemi olmalıdır. Çıktı tamsayılara yuvarlanacak, çünkü biz tiebreakerları seviyoruz.
En çirkin, bir araya hacklenen sorguyu kullanarak ( bağlantıyı temizlemekten çekinmeyin), kod-golf sorularına verilen tüm yanıtların anlık görüntüsünü içeren bir veri kümesi (.xslx, .ods ve .csv ile zip) oluşturmayı başardım . Bu dosyayı kullanın (ve programınıza kullanılabilir olması varsayalım, örneğin, aynı klasörde bulunuyor) veya başka geleneksel formata bu dosyayı dönüştürebilirsiniz ( , , vs - ama sadece orijinal veriler içerebilir!). İsim , seçimin uzatılması ile kalmalıdır ..xls
.mat
.sav
QueryResults.ext
ext
Şimdi özellikler için. Her dil için, bir Boilerplate B
ve Verbosity V
parametreleri var. Birlikte dilin doğrusal bir modelini oluşturmak için kullanılabilirler. n
Gerçek bayt sayısı olsun c
ve düzeltilmiş skor olsun. Basit bir model kullanarak n=Vc+B
düzeltilmiş puanları alıyoruz:
n-B
c = ---
V
Yeterince basit, değil mi? Şimdi V
ve belirlemek için B
. Bekleyebileceğiniz gibi, en küçük kareler ağırlıklı doğrusal regresyondan bazı lineer regresyonlar veya daha kesin olarak yapacağız. Bununla ilgili detayları açıklamayacağım - bunu nasıl yapacağınızdan emin değilseniz, Wikipedia arkadaşınız veya şanslıysanız, dilinizin belgelerine.
Veriler aşağıdaki gibi olacaktır. Her veri noktası, bayt sayısı n
ve sorunun ortalama bayt sayısı olacaktır c
. Oyları hesaba katmak için, puanlar ağırlıklı olarak oy sayıları artı bir (0 oy için hesaba katılır) olarak adlandırılır v
. Olumsuz oy kullanan cevaplar atılmalıdır. Basit bir ifadeyle, 1 oy verilmiş bir cevap 0 oy vermiş iki cevapla aynı sayılmalıdır.
Bu veriler daha sonra, yukarıda belirtilen modele n=Vc+B
, ağırlıklı doğrusal regresyon kullanılarak yerleştirilir.
Örneğin , belirli bir dilin verilerini verir.
n1=20, c1=8.2, v1=1
n2=25, c2=10.3, v2=2
n3=15, c3=5.7, v3=5
Şimdi, ilgili matrisler ve vektörler oluşturmak A
, y
ve W
vektör bizim parametreleri ile,
[1 c1] [n1] [1 0 0] x=[B]
A=[1 c2] y=[n2] W=[0 2 0], [V]
[1 c3] [n3] [0 0 5]
matris denklemini çözeriz ( '
transpozisyonu belirtir)
A'WAx=A'Wy
için x
(ve dolayısıyla, bizim olsun B
ve V
parametre).
Sizin puanı kendi dil adını ve ByteCount verildiğinde programınızın, çıktısı olacaktır. Yani evet, bu sefer bile Java ve C ++ kullanıcıları kazanabilir!
UYARI: Sorgu nedeniyle etiketleme biçimlendirme 'serin' başlığını kullanan kişi ve kişilere geçersiz satırların bir sürü veri kümesi üretir kod meydan okuma gibi sorular kod golf . Sağladığım indirme, aykırı olanların çoğunu kaldırdı. Sorgu ile birlikte verilen CSV'yi KULLANMAYIN.
Mutlu kodlama!
C++ <s>6 bytes</s>
. Ayrıca, daha önce hiç T-SQL yapmadım ve bayt sayısını çıkarmayı başardığım için kendimden çok etkilendim.