Meydan okuma
ASCII metnini kayıpsız bir şekilde sıkıştıran ve açılan bir program yazın. Büyük / küçük harf duyarsız ve noktalama işaretine duyarlı olmayan palindromlar da dahil olmak üzere palindromlarla iyi çalışacak şekilde uzmanlaştırılmalıdır. En küçük kaynakla en iyi sıkıştırma kazanır.
puanlama
total_bytes_saved / sqrt(program_size)
- En yüksek puan kazanır
total_bytes_saved
sıkıştırılmış dizelerin orijinallerinden kaç bayt kadar küçük olduğu, aşağıdaki test senaryoları toplamıdır. program_size
hem sıkıştırma hem de açma programlarının kaynak kodunun bayt cinsinden boyutudur. İkisi arasında paylaşılan kodun yalnızca bir kez sayılması gerekir.
Örneğin, 10 test vakası ve 100 bayt programı 7 test vakasında 5 bayt kaydedilmiş, her birinde 2'si 10 bayt olsaydı, ancak son test vakası 2 bayt daha uzun olsaydı, çözüm 5.3 puan alacaktı. ( (7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3
)
Test Durumları
tacocat
toohottohoot
todderasesareddot
amanaplanacanalpanama
wasitacaroracatisaw?
Bob
IManAmRegalAGermanAmI
DogeeseseeGod
A Santa at NASA
Go hang a salami! I'm a lasagna hog.
kurallar
- Standart boşluklar geçerlidir.
- Sıkıştırma yalnızca palindromlar üzerinde değil tüm yazdırılabilir ASCII (bayt 32-126, dahil) metin dizelerinde çalışmalıdır. Bununla birlikte, aslında herhangi bir giriş için yer tasarrufu yapmak zorunda değildir.
- Çıktı, uygulanması veya dahili temsili ne olursa olsun bayt veya karakter dizisi olabilir (örneğin, dizeler, listeler ve dizilerin tümü adil oyundur). UTF-8 kodlaması yapılıyorsa karakterleri değil, baytları sayın. Geniş dizelere (örn. UTF-16 veya UTF-32) izin verilen tek kod noktaları 0 ile 255 arasında olmadığı sürece izin verilmez.
- Sıkıştırma / Açma yerleşiklerine izin verilmez.
Kendi zevkimiz için, sıkıştırılmış dizeleri kaynak kodunuzla birlikte gönderin.
GÜNCELLEME 1: Daha iyi sıkıştırmaya daha fazla ağırlık vermek ve agresif golf oynamaya daha az ağırlık vermek total_bytes_saved / program_size
için puanlama değeri olarak değiştirildi total_bytes_saved / sqrt(program_size)
. Puanlarınızı buna göre ayarlayın.
GÜNCELLEME 2: Sabit wasitacaroraratisaw?
olmakwasitacaroracatisaw?
[32-126]
?
1000 *
parçanın gerçekten gerekli olduğunu düşünmüyorum ve hayır puanın daha "tatmin edici" hissettireceğini sanmıyorum;)
wasitacaroraratisaw?
bunun bir karşı örnek olduğunu görüyorum