Meydan okuma:
Belirli bir metinde en sık kullanılan kelimelerin ASCII grafiğini oluşturun.
Kurallar:
- Yalnızca bir sözcüğün parçası olarak
a-z
veA-Z
(alfabetik karakterler) kabul edin . - Muhafazayı yoksay ( amacımız için
She
==she
). - Aşağıdaki kelimeleri görmezden gelin (oldukça arbitary, biliyorum):
the, and, of, to, a, i, it, in, or, is
Açıklama: dikkate alındığında
don't
: bu, aralıklarda 2 farklı 'kelime' olarak alınıra-z
veA-Z
: (don
vet
).İsteğe bağlı olarak (çok geç resmen şimdi özelliklere değişiyor gibi) Eğer olabilir (bu potansiyel çok liste görmezden kısalmasıyla için yapabiliriz) tüm tek-Mektubun 'sözlerini' düşmesi seçin.
Belirli bir öğeyi ayrıştırın text
(komut satırı bağımsız değişkenleri ile belirtilen veya içerilen bir dosyayı okuyun; varsayalım us-ascii
) ve bize word frequency chart
aşağıdaki özelliklere sahip bir a derleyin :
- En sık kullanılan 22 kelime (azalan sıklığa göre sıralanmıştır) için grafiği görüntüleyin (aşağıdaki örneğe de bakın).
- Çubuk
width
, sözcüğün gerçekleşme sayısını (sıklığını) (orantılı olarak) gösterir. Bir boşluk ekleyin ve kelimeyi yazdırın. - Bu çubukların (artı boşluk-kelime-boşluk) her zaman uygun olduğundan emin olun :
bar
+[space]
+word
+[space]
her zaman <=80
karakter olmalıdır (olası farklı çubuk ve kelime uzunluklarını hesaba kattığınızdan emin olun: örneğin: ikinci en yaygın kelime çok daha uzun olabilir. ilk olarak frekansta çok fazla farklılık göstermez). Bu sınırlamalar dahilinde çubuk genişliğini en üst düzeye çıkarın ve çubukları uygun şekilde ölçeklendirin (temsil ettikleri frekanslara göre).
Bir örnek:
Örneğin metni burada bulunabilir ( Alice Harikalar Diyarındaki Maceraları, Lewis Carroll tarafından ).
Bu özel metin aşağıdaki çizelgeyi verir:
_________________________________________________________________________ | _________________________________________________________________________ | o | _______________________________________________________________ | sen | ____________________________________________________________ | dedim | ____________________________________________________ | alice | ______________________________________________ | oldu | __________________________________________ | o | ___________________________________ | gibi | _______________________________ | ona | ____________________________ | ile | ____________________________ | en | ___________________________ | s | ___________________________ | t | _________________________ | üzerinde | _________________________ | herşey | ______________________ | bu | ______________________ | için | ______________________ | vardı | _____________________ | fakat | ____________________ | olmak | ____________________ | değil | ___________________ | onlar | __________________ | yani
Bilginiz için: bunlar yukarıdaki grafiğin üzerine kurulu frekanslardır:
[('o', 553), ('sen', 481), ('dedi', 462), ('alice', 403), ('oldu', 358), ('bu ', 330), (' as ', 274), (' her ', 248), (' ile ', 227), (' at ', 227), (' s ', 219), (' t ' , 218), ('açık', 204), ('hepsi', 200), ('bu', 181), ('için', 179), ('vardı', 178), (' ancak ', 175), (' be ', 167), (' not ', 166), (' onlar ', 155), (' so ', 152)]
İkinci bir örnek (tam spesifikasyonu uygulayıp uygulamadığınızı kontrol etmek için):you
Bağlantılı Alice Harikalar Diyarında dosyasındaki
her oluşumunu aşağıdaki ile değiştirin superlongstringstring
:
________________________________________________________________ | ________________________________________________________________ | o | _______________________________________________________ | superlongstringstring | _____________________________________________________ | dedim | ______________________________________________ | alice | ________________________________________ | oldu | _____________________________________ | o | ______________________________ | gibi | ___________________________ | ona | _________________________ | ile | _________________________ | en | ________________________ | s | ________________________ | t | ______________________ | üzerinde | _____________________ | herşey | ___________________ | bu | ___________________ | için | ___________________ | vardı | __________________ | fakat | _________________ | olmak | _________________ | değil | ________________ | onlar | ________________ | yani
Kazanan:
En kısa çözüm (karakter sayısına göre, dil başına). İyi eğlenceler!
Düzenleme : Şimdiye kadar sonuçları özetleyen tablo (2012-02-15) (başlangıçta Nas Banov kullanıcısı tarafından eklenmiştir):
Dil Rahatlığı Sıkı ========= ======= ====== GolfScript 130143 Perl 185 Windows PowerShell 148199 Mathematica 199 Ruby 185 205 Unix Alet Zinciri 194228 Python 183243 Clojure 282 Scala 311 Haskell 333 Awk 336 R 298 Javascript 304354 Harika 321 Matlab 404 C # 422 Smalltalk 386 PHP 450 F # 452 TSQL 483507
Sayılar, belirli bir dildeki en kısa çözümün uzunluğunu temsil eder. "Katı", spesifikasyonu tamamen uygulayan bir çözümü ifade eder ( |____|
çubukları çizer , ilk çubuğu bir ____
çizgiyle kapatır, yüksek frekanslı uzun kelimelerin olasılığını açıklar vb.). "Rahat", çözüme kısalmak için bazı özgürlüklerin alındığı anlamına gelir.
Yalnızca 500 karakterden kısa çözümler dahildir. Dil listesi 'katı' çözümün uzunluğuna göre sıralanmıştır. 'Unix Toolchain', geleneksel * nix kabuğu ve bir takım araçlar (grep, tr, sort, uniq, head, perl, awk gibi) kullanan çeşitli çözümleri belirtmek için kullanılır .
s
ve t
temsil edilir.