Tantangan:
Buat bagan ASCII dari kata-kata yang paling umum digunakan dalam teks yang diberikan.
Aturan:
- Hanya terima
a-z
danA-Z
(karakter alfabet) sebagai bagian dari kata. - Abaikan casing (
She
==she
untuk tujuan kami). - Abaikan kata-kata berikut (cukup arbiter, saya tahu):
the, and, of, to, a, i, it, in, or, is
Klarifikasi: mempertimbangkan
don't
: ini akan dianggap sebagai 2 'kata' yang berbeda dalam rentanga-z
danA-Z
: (don
dant
).Secara opsional (sudah terlambat untuk secara resmi mengubah spesifikasi sekarang), Anda dapat memilih untuk menghapus semua 'kata-kata' satu huruf (ini juga berpotensi memperpendek daftar abaikan).
Parse yang diberikan text
(baca file yang ditentukan melalui argumen baris perintah atau disalurkan; anggap us-ascii
) dan buat kami word frequency chart
dengan karakteristik berikut:
- Tampilkan grafik (juga lihat contoh di bawah) untuk 22 kata yang paling umum (dipesan dengan frekuensi menurun).
- Bilah
width
mewakili jumlah kemunculan (frekuensi) kata (secara proporsional). Tambahkan satu spasi dan cetak kata. - Pastikan bilah-bilah ini (plus spasi-kata-spasi) selalu cocok :
bar
+[space]
+word
+[space]
harus selalu <=80
karakter (pastikan Anda memperhitungkan kemungkinan bar dan panjang kata yang berbeda: misalnya: kata yang paling umum kedua mungkin jauh lebih lama daripada saat pertama tidak berbeda jauh dalam frekuensi). Maksimalkan lebar batang dalam batasan ini dan skala batang dengan tepat (sesuai dengan frekuensi yang diwakilinya).
Sebuah contoh:
Teks sebagai contoh dapat ditemukan di sini ( Petualangan Alice di Negeri Ajaib, oleh Lewis Carroll ).
Teks khusus ini akan menghasilkan bagan berikut:
_________________________________________________________________________ | _________________________________________________________________________ | | dia | _______________________________________________________________ | kamu | ____________________________________________________________ | kata | ____________________________________________________ | Alice | ______________________________________________ | dulu | __________________________________________ | bahwa | ___________________________________ | sebagai | _______________________________ | -nya | ____________________________ | dengan | ____________________________ | di | ___________________________ | s | ___________________________ | t | _________________________ | di | _________________________ | semua | ______________________ | ini | ______________________ | untuk | ______________________ | telah | _____________________ | tapi | ____________________ | menjadi | ____________________ | tidak | ___________________ | mereka | __________________ | begitu
Untuk informasi Anda: ini adalah frekuensi bagan di atas dibangun di atas:
[('dia', 553), ('kamu', 481), ('kata', 462), ('alice', 403), ('adalah', 358), ('itu ', 330), (' as ', 274), (' dia ', 248), (' dengan ', 227), (' at ', 227), (' s ', 219), (' t ' , 218), ('on', 204), ('all', 200), ('this', 181), ('for', 179), ('had', 178), (' tetapi ', 175), (' be ', 167), (' not ', 166), (' mereka ', 155), (' jadi ', 152)]
Contoh kedua (untuk memeriksa apakah Anda menerapkan spesifikasi lengkap):
Ganti setiap kemunculan you
dalam file Alice in Wonderland yang ditautkan dengan superlongstringstring
:
________________________________________________________________ | ________________________________________________________________ | dia | _______________________________________________________ | superlongstringstring | _____________________________________________________ | kata | ______________________________________________ | Alice | ________________________________________ | dulu | _____________________________________ | bahwa | ______________________________ | sebagai | ___________________________ | -nya | _________________________ | dengan | _________________________ | di | ________________________ | s | ________________________ | t | ______________________ | di | _____________________ | semua | ___________________ | ini | ___________________ | untuk | ___________________ | telah | __________________ | tapi | _________________ | menjadi | _________________ | tidak | ________________ | mereka | ________________ | begitu
Pemenang:
Solusi terpendek (berdasarkan jumlah karakter, per bahasa). Selamat bersenang-senang!
Sunting : Tabel merangkum hasil sejauh ini (2012-02-15) (awalnya ditambahkan oleh pengguna Nas Banov):
Bahasa Santai Ketat ========= ======= ====== GolfScript 130 143 Perl 185 Windows PowerShell 148 199 Mathematica 199 Ruby 185 205 Unix Toolchain 194 228 Python 183 243 Clojure 282 Scala 311 Haskell 333 Awk 336 R 298 Javascript 304 354 Groovy 321 Matlab 404 C # 422 Smalltalk 386 PHP 450 F # 452 TSQL 483 507
Angka-angka mewakili panjang solusi terpendek dalam bahasa tertentu. "Strict" mengacu pada solusi yang mengimplementasikan spec sepenuhnya (menggambar |____|
bar, menutup bar pertama di atas dengan sebuah ____
garis, menjelaskan kemungkinan kata-kata panjang dengan frekuensi tinggi dll). "Santai" berarti beberapa kebebasan diambil untuk dipersingkat menjadi solusi.
Hanya solusi yang lebih pendek dari 500 karakter yang disertakan. Daftar bahasa diurutkan berdasarkan lamanya solusi 'ketat'. 'Unix Toolchain' digunakan untuk menandai berbagai solusi yang menggunakan shell * nix tradisional plus campuran alat (seperti grep, tr, sortir, uniq, head, perl, awk).
s
- kata favorit saya dan t
diwakili.